Chromium 给整个浏览器收一个代理,而这一直够用,直到你需要两个账号同时开着的那一天。
一个要认证的代理,麻烦的地方不是地址。是它后面那两个字段,以及它们必须被填在哪里。
把 Chromium 指向一个代理的那个命令行参数,带的是一个地址,别的什么都不带。上面没有给账号留的字段,而文档里给出的提供办法,是一个扩展去接住代理发回来的认证请求。
扩展能从页面经由 chrome.runtime 被摸到,于是这个变通做法又成了一件告诉网站这个浏览器不寻常的事。SigoLogin 改在浏览器外面做认证。一个小的 SOCKS5 服务跑在 127.0.0.1 上,自己不要密码,由它和真正的代理对话。Chromium 被指向回环上的那个地址,所以凭据从来不在页面看得到的任何地方。
每个打开的环境都得到自己的一个中转,端口由操作系统在那一刻分给它。没有什么要设置的:设置里没有监听端口,也没有一个被机器上所有东西共用的本地代理。
两个环境用一个中转,就是两个环境用一个出口地址,而那正是一个环境存在要避开的事。浏览器关掉时,它的中转是在它之后停、不是之前,因为一个跑着一半丢了代理的浏览器,可能退回到直连出去。
SOCKS5、HTTP 和 HTTPS,带账号的和不带的都行。一个 HTTP 代理和一个 HTTPS 代理都是用 CONNECT 方法接上的,所以下拉框里那两个名字,底下是同一条路。一条代理记录装的就是这些,后面没有第二个标签页:
| 字段 | 里面填什么 |
|---|---|
| 标注 | 可不填。你自己给这条记录起的名字,二十条共用一个主机时,就是它让这份列表还读得下去 |
| 协议 | SOCKS5、HTTP 或 HTTPS |
| 主机和端口 | 一个主机名或者一个地址,加上你的供应商给你的端口 |
| 用户名 | 可不填。清掉它也会把密码清掉,因为没有账号的代理用不上密码 |
| 密码 | 一存下就再也不会显示。编辑一条记录时这个框是空的,空框的意思是保留现有的密码 |
密码在落到硬盘之前先用 Windows 的数据保护服务包起来,密钥绑定到你的 Windows 账户。把数据文件夹拷到另一台电脑,密码不会跟着走:应用会说出来然后停下,而不是没有它就把浏览器打开,再留一个网络错误给你去猜。
供应商按哪种写法顺手就那样导出,所以四种写法原样收下:主机、端口、用户名和密码用冒号隔开;账号写在主机前面,中间一个 at 符号;同样这四项用逗号隔开;以及上面任意一种前面加了 socks5:// 前缀。行上的前缀胜过对话框里选的协议,因为一行自己说了它是什么,它更清楚。空行和以井号开头的行会被跳过,不算失败,而含冒号或者 at 符号的密码也活得下来:切分取在最后一个 at 符号和第一个冒号处。
一行读不出来,不会把整批拖下去。其余的都进去,而失败的那些行会一字不差地回到你面前,这是在一百行里找出那一行坏的唯一实用办法。
供应商也卖那种一个主机、会话写在用户名里的东西。复制一条记录会把密码一起带过去,所以五个会话是改五次一个字符,而不是五次重新敲一遍密码。复制出来的那条不会继承的是检测结果:它还什么都没证明过,而一条开局就带着一个勾和一个它从没挣到的时区的复制记录,上面还会建起一个指纹。
把页面请求送过代理是容易的那一半。下面每一条都是一条单独的出路,在一个单独的层里,其中任何一条留着开口,另外三条就白做了。
如果你的机器先解析主机名,再向代理要一个地址,那这次查询已经从你自己的线路上出去了。这不只是隐私的事:有些供应商只有在拿到一个名字时才套用你选的国家,所以一个以地址形式到达的请求,会从别的地方出来。我们量到过同一时刻,一个代理对主机名从泰国出去,对地址从新加坡出去。
中转把名字照浏览器给的样子递过去,让代理去解析。代理检测被强制做同样的事,并且走同一个中转,因为一次在你机器上解析名字的检测,报的是一个浏览器永远不会用的国家。构建里有一个测试,通过一个替身代理向一个主机名开连接,如果到达的是一个地址,它就失败。
WebRTC 不走浏览器的代理。现在的 Chrome 把本地地址藏在一个 mDNS 名字后面,但它从一台 STUN 服务器拿回来的候选地址,仍然带着你这条线路的真实地址。在这条路被关掉之前,在我们自己的构建上量过:一个检测页面在 HTTP 上读到一个美国地址,在 WebRTC 上读到一个越南地址,同一个环境,同一时刻。
有代理的环境现在启动时,代理之外的 UDP 是关掉的,所以再没有第二个地址可以报。这个决定是按环境在那一刻的实际状态定的,不是按早先生成的一份指纹:一个指纹是在你挂上代理之前做的环境,以前启动时是没有这个开关的,而屏幕上没有任何东西说过这件事。
浏览器默认把回环上的任何东西不经代理直接送出去,出于它自己的理由。一个页面去要一个本机地址上的东西,就会由你的机器来答,越过这份清单上其余的一切。有代理的环境启动时会去掉这条豁免。
先停中转,会留下一个还在跑的浏览器,它代理设置的另一头什么都没有,而处在这个位置的浏览器可能退回到直连。所以顺序被反过来定死:先关浏览器,它用过的那个中转在它之后才停。
一个从俄亥俄的地址报出雅加达时区的浏览器,已经自己跟自己矛盾了,在 canvas 或者字体上做多少功夫都盖不住这一处。所以时区不是你的,也不是一个设置:它来自代理检测,而那次检测会问一个地理定位服务,哪个时区属于这个确切的地址。
不是来自国家代码,那才是走错的那条捷径。一张从国家到时区的表,给美国的是 America/New_York,于是一个从加州出去的代理就差了三个小时。这在这里发生过,在一个真实的代理上,所以用的是服务对这个地址返回的时区,国家表只是它覆盖的那二十个国家的兜底。
接受语言跟着国家走,后面再加上英语。一个越南地址给出的环境,先要越南语,再要英语,这正是一个在越南的浏览器会发出的。
当服务答出一个地址但没有国家,应用就记成没有国家,而不是替它挑一个。一个错的国家会连带拖来一个错的时区,而一个退回到默认时区的环境是小一些的麻烦。检测会告诉你发生的是两者中的哪一个。
打开一个环境,是代理不再只是表格里一行的时刻。四种状态,每一种都在 Chromium 启动之前就定下来,不是之后。
| 代理的状态 | 打开环境时会做什么 |
|---|---|
| 上次检测在十分钟以前 | 先重新检测并记下答案,再从它建指纹 |
| 有应答 | 浏览器启动,用的是作答那个地址的时区和语言 |
| 没有应答 | 环境不打开,而且你会拿到原因:账号被拒、地址或端口不对,或者十秒钟的沉默 |
| 此后主机、端口或账号被改过 | 保存这次修改把旧答案清掉了,所以这算从没检测过,现在就检测 |
十分钟不是为了顺口挑的一个整数。轮换代理在一次会话里守住一个地址,然后就换掉,而我们记录过一个从新加坡作答,同一次会话里稍后从印度作答。在较旧那个答案上打开的环境,会一边宣布新加坡的时钟,一边从印度出去,而这正是整个这一页在讲的那种自相矛盾。
你打开一个环境时,有两件事到我们的服务器:那个环境到底有没有代理,以及它是从哪个国家出去的。是哪个代理、哪个地址,不在那条记录里,而本站给你看的那份环境列表里,没有任何种类的代理。
出口地址确实走一次。我们的浏览器只在我们服务器签过名的指纹上跑,而这个地址是被签的内容的一部分,所以它随指纹其余部分一起上去,带着签名直接回来。服务器不保留它。
代理密码,以及已保存账号的密码和 2FA 密钥,是应用不得不放在硬盘上的秘密。它们由 Windows 的数据保护服务包裹,密钥绑定到你的 Windows 账户,所以把数据文件夹拷到另一台电脑或另一个用户下,这些东西不会跟着走。
错误信息在离开你的电脑之前会先被清洗一遍。凡是形如 scheme://user:password@host 的地址,登录部分都会被替换成三个星号,超过 500 个字符的部分会被截断。主机和端口会保留,所以代理连接失败时,信息里可能带着那个代理的地址和端口。
上面这一切在几秒钟里发生一次,在你看不见的地方。这一部分才是你打交道的。
这一页上没有任何东西被留给付费套餐。套餐改的是你能留多少个环境、能激活多少台机器。
| 功能 | 免费版 | 个人版 | 专业版 | 企业版 |
|---|---|---|---|---|
| 带账密认证的代理,不泄露 DNS | ||||
| 时区和语言跟随代理所在国家 | ||||
| 环境数量 | 3 | 50 | 300 | 无限制 |
代理在这里不计数,也不出售。应用对你留多少条记录不设上限,里面也没有任何东西替你买地址。
批量添加就按你的供应商导出的样子收下整块。协议选一次,给那些自己不声明协议的行用。
全部检测把每一条同时跑一遍,并记下每一条返回的地址、国家和时区。一条已经死掉的记录,现在被发现比在你需要那个账号的那一刻被发现好。
在环境自己那一行上挑代理。指纹的时区和语言取自那个地址,一个中转只为这一个环境起来。
不卖。应用里没有任何东西买地址、转卖地址或者发放地址,也没有供应商账户要连。你带来你自己已经在付钱的代理,供应商常导出的那四种写法都收。
SOCKS5、HTTP 和 HTTPS,带用户名密码的和不带的都行。HTTP 和 HTTPS 都是用 CONNECT 方法接上的,所以连接一旦建立,两者的行为一样。
不需要,而这正是应用被做成现在这样的原因。Chromium 的代理启动参数没有地方放账号,所以通常的答案是一个扩展来提供它,而扩展是你访问的任何页面都能问到的东西。SigoLogin 在回环地址上跑一个小的 SOCKS5 服务,认证在那里做,在浏览器外面。
可以。一个代理是一条独立的记录,多少个环境指向它都行,一个改了的密码也是这样在一个地方就改完。不过它们之后共用一个出口地址,所以把这种用法留给本来就打算看上去有关联的环境。
环境不会打开。没有新鲜应答的代理,会在浏览器启动之前先测一次,如果它一直不出声,你拿到的是原因,不是一个窗口。照开不误的结果,是一个没有连接的浏览器,或者一个从你自己的地址出去的浏览器。
一个动作做不到。代理是在环境自己那一行上设的。能放大的是反方向:一条记录给多少个环境用都行,所以一百个环境走一个代理,是一条记录和一个密码,不是一百个。
不会。主机名是没有解析就交给代理的,构建里有一个测试,只要这条路上有任何一段在本机解析了主机名,它就失败。有代理的环境启动时还会去掉浏览器对本机地址那条惯常的豁免,所以再没有什么能绕过它。
代理或 VPN 换的是请求从哪个地址过来,仅此而已;浏览器描述的还是同一台电脑。两者是互相补充,不是互相替代。SigoLogin 要求每个环境配一个代理,并从那个代理所在的国家取时区和语言,让它们不会和地址相矛盾。