如何解决 snapdrop 在挂代理时无法使用的问题?

2022-03-04 08:10:31 +08:00
 V9NN
各个设备之间传递文件时使用了 snapdrop ( https://snapdrop.net/ )。

手机上打开了 clash ,便无法正常使用 snapdrop ,表现为:
能互相发现对方设备,但无法正常传输文件。

退出 clash 则恢复正常。

这个该如何解决?
2737 次点击
所在节点    问与答
8 条回复
Scirocco
2022-03-04 09:05:46 +08:00
把 snapdrop 的代理规则改为 DIRECT ?
V9NN
2022-03-04 09:07:54 +08:00
@Scirocco 改了,无效,不清楚 snapdrop 在传输时使用了什么网络协议或特性。
sujin190
2022-03-04 09:48:56 +08:00
@V9NN #2 肯定是 webrtc 啊,应该是发现过程是和 snapdrop 建立 websocket 连接通过来源相同网络地址来确定的,之后需要用 webrtc 来建立连接发送文件,webrtc 建立连接过程地址交换打洞的服务器估计不是 snapdrop 的,所以获取到的地址并不能通过你的代理完成 udp 通信,所以发不了文件
sujin190
2022-03-04 10:00:51 +08:00
@V9NN #2 stun 地址用的是这个 stun.l.google.com ,或者你可以把它从代理里放出来看看,snapdrop 也从代理里放出来,这样设备发现和 webrtc ice 交换都直接走本地网络了,如果之后的 udp 默认不走代理的话,也许是可以正常用了,而且通过 https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/ 测试可知,似乎 stun.l.google.com 是直接可用的,不需要代理
V9NN
2022-03-04 10:15:50 +08:00
@sujin190 感谢大佬的解答,在 clash 的配置文件中加入下面 2 条规则之后就可以正常使用了:
- DOMAIN-SUFFIX,snapdrop.net,DIRECT
- DOMAIN,stun.l.google.com,DIRECT
V9NN
2022-03-04 10:29:46 +08:00
@sujin190 顺带提一下,经过上面的配置后,也解决了之前存在的一个问题:

打开 ClashX ( macOS 客户端)时,在桌面浏览器打开「微信网页版( https://wx.qq.com/ )」,用手机微信扫码登录,会提示「异地登录」。关闭 ClashX 则不会有这个提示。

更新上面的配置之后,就没有这个异地登录提示了。

应该是微信网页版也使用了上面的 stun 地址。
ligouhai
2022-05-23 15:20:12 +08:00
@V9NN iOS 端的 Shadowrocket 上试着添加了这两条规则但还是不行。
Finly
345 天前
quanx 亲测可以,但是 Mac 上 surge 开了 增强模式后,就不行,关闭了就可以。bypass-tun 配置了也没用

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/837834

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX