更新:2025-07-06,由于某些原因再次临时使用,使用时连不上国际互联网,测试后发现更奇怪了

  • 测试版本
    360 极速浏览器X v22.3.3170.64(64位),Chromium 内核版本 122.0.6261.92
    测试评价:什么垃圾玩意魔改套壳浏览器,依托答辩
    最后还是使用 Chromium 原生代理参数指定代理,下面哪行的 socks5 等价于 socks,可互相替换

    --proxy-server="socks5://127.0.0.1:7890" --host-resolver-rules="MAP * ~NOTFOUND , EXCLUDE 127.0.0.1"
    
  • 测试环境
    本地代理客户端监听 7890 端口,开启协议嗅探,同时在 7890 端口提供 socks5 和 http 代理服务

按以前发的文章内容进行设置,无法访问国际互联网,发现不进步就算了,还倒反天罡?

我使用 127.0.0.1:7890@socks5
好家伙日志显示给我使用了 socks4 协议?还得是客户端主动开启了协议嗅探做进一步兼容才能使用

[Sniffer] [192.2.0.1] [http1] may not have any sent data, Consider adding skip
Socks4(tcp) www.so.com

但是没意义,因为是 socks4

进一步测试

socks5://127.0.0.1:7890@socks5
socks://127.0.0.1:7890@socks
socks4://127.0.0.1:7890@socks4
socks4a://127.0.0.1:7890@socks4a
http://127.0.0.1:7890@http
http://127.0.0.1:7890@https
127.0.0.1:7890@socks5
127.0.0.1:7890@socks
127.0.0.1:7890@socks4a
127.0.0.1:7890@socks4

有效可用值(流量均被正确转发处理)

测试结果:

  • socks5://127.0.0.1:7890@socks5,无效,流量完全不转发
  • socks://127.0.0.1:7890@socks,有效:Socks5(tcp), 备注:浏览器默认使用了远端 DNS 解析
  • socks4://127.0.0.1:7890@socks4,无效,流量完全不转发
  • socks4a://127.0.0.1:7890@socks4a,无效,流量完全不转发
  • http://127.0.0.1:7890@http,无效,走的的确是 http,但是仅国内的网站能访问,流量的确被转发给本地代理客户端处理了,包括 DNS 请求部分,但是仅转发了国内的请求,任意国际互联网无法访问
  • http://127.0.0.1:7890@https,有效:HTTPS(tcp),走的是本地 https,国内外所有流量均被转发给客户端处理
  • 127.0.0.1:7890@socks5,无效,流量完全不转发
  • 127.0.0.1:7890@socks,有效,Socks4(tcp),倒反天罡,走 Socks4,仅国内流量可以转发,因为是 Socks4,无远端 DNS 解析功能,所以无法访问国际互联网
  • 127.0.0.1:7890@socks4a,无效,流量完全不转发
  • 127.0.0.1:7890@socks4,无效,流量完全不转发

发现 @ 后面跟的是需要指定的协议类型,且完全不按标准严格实施, socks 不指明协议版本下默认按 socks5 + 远端 DNS 解析处理,是最佳实践,但是 socks5 为什么不做一个 alias 映射? 这 2 个应该是等价的,逆天
然后填写格式没有明确说明,要用户自己试错?你那 fuck 示例说明给谁看呢?
本应按完整格式填写,搞个自己的填写格式方案不给定完整说明,按自己那套来还占用标准格式的 @ 字符来另类实现
能不能有点脑子规范点?很难吗?

protocol://username:password@hostname:port

所有不标准写法实现应该 显示 不支持
仅应实现标准清晰明确的写法(无用户名代理校验的情况下):

http://127.0.0.1:1234
https://127.0.0.1:1234
socks5://127.0.0.1:1234
socks://127.0.0.1:1234
127.0.0.1:1234

至于 socks4(a)协议,看开发者是否想实现支持
socks4://127.0.0.1:1234
socks4a://127.0.0.1:1234

其中,最后 2 行是一个缺省值,http 和 socks 可以采取类似谷歌浏览器 / 约定俗成的默认值映射

不指明协议的情况下,使用 http,不指明协议版本的情况下,使用 socks5


更新:2022-9-9 由于国产套壳浏览器瞎魔改导致实现差异太大产生兼容问题,建议使用代理插件扩展,请使用 https://www.0z.gs/webDevelopment/1793.html 方案代替


2020-7-04
360极速浏览器版本:12.0.1412.0
本地监听1080的socks5代理,发现360极速浏览器不生效,原因是代理协议版本协商通讯时产生问题,经测试后,发现360很奇怪,我填了如下设置,按照标socks标准协议来执行,仅仅第二行是有效的:

360极速浏览器填入如下:

127.0.0.1:1080
127.0.0.1:1080@socks
127.0.0.1:1080@socks5
127.0.0.1:8899@http

有且只有第二行可以 127.0.0.1:1080@socks,1、3、4行全部协商失败,第三行和第四行居然不行,呵呵呵,套壳毒瘤浏览器,按理第三行和第四行必须行,第二行没明确指明socks协议版本,第四行明确指明使用http代理,第二行模糊不清反而可以,真是奇了怪了,本地端的代理启用了端口协议嗅探,如果不启用,这4行全部都无效,不愧是国产套壳毒瘤。

最后修改:2025 年 07 月 18 日
如果觉得我的文章对你有用,请随意赞赏