术语表

SOCKS5

一种通用代理协议,只转发 TCP 连接而不检查其内容,可以选择加上用户名和密码(SOCKS5 proxy)。

也称:SOCKS5 代理, RFC 1928。

SOCKS5 定义于 RFC 1928,是一种工作在应用层之下的代理协议:客户端请求代理打开一条到某主机某端口的连接,此后字节就被原样转发,代理既不解析也不改写任何东西。这让它在协议无关性上做到了 HTTP 代理做不到的程度。配套的 RFC 1929 增加了一次可选的用户名与密码握手,市面上大多数商用 SOCKS5 出口正是这么卖的。

实际出问题的正是这次可选握手,这也是「要自带浏览器而不是去自动化别人的浏览器」最清楚的理由之一。Chromium 自带的 SOCKS5 客户端只会不带认证的那一种,所以要求用户名和密码的代理在它这里根本用不了——这悄悄地把服务商所售商品中的一大块划掉了。Argus 在浏览器进程内部解决它:一个本地中继在上游那一段完成 RFC 1929 握手,而环境本身只指向一个回环地址,于是代理认证对话框永远不会出现。细节在代理页面,同时它也被列在能力参考里。