JS 检测用户是否使用 socks5 代理

2021-10-17 17:26:21 +08:00
 iqoo

检测方案有很多,这里讲解一个有趣的。

由于大部分 socks5 代理只转发数据,不转发 TCP 头,因此后端返回数据时附带一个特殊的 TCP 头,然后前端验证该头是否生效,即可推断否是存在代理。

例如后端下发 tcpwin=0 的控制信息,正常情况下前端收到后不会再往外发包,数据累计在协议栈缓冲区里;而有代理的情况下,数据被累积在了代理服务的缓冲区,前端仍能往代理服务发包,缓冲区不会有累积。至于缓冲区是否满,可通过 WebSocket 的 bufferAmount 属性检测。

Demo: www.etherdream.com/proxy-detect/tcpwin.html

实现也很简单,查看 github.com/EtherDream/web-frontend-magic

有不准确的情况可反馈。

2501 次点击
所在节点    分享创造
21 条回复
hanssx
217 天前
看到了,ws server 关了应该是

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

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

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

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

© 2021 V2EX