为什么网站说你在用代理——以及什么才真的管用
「检测到代理或 VPN」其实是三种互不相干的指控共用一句话。地址如何进入代理数据库、哪些信号会出卖连接,以及什么才能真正改变结论。
关键要点
「检测到代理」涵盖三项毫无关联的检查:地址归谁所有、连接如何表现、账号如何表现。
多数标记来自第一项,而它在你发出第一个字节之前就已由 ASN 决定。
完全不用代理的人也会被标记——通常是 CGNAT、被回收的地址,或移动运营商网段。
浏览器里的泄露无法靠买更好的代理来解决,而这一类目里绝大部分钱正是这样烧掉的。
先排除几个无聊但常见的原因
在谈技术之前,有三种解释占了这类反馈的相当一部分,而且没有一种有意思。
第一是浏览器扩展。广告拦截、隐私插件和各种「反指纹」工具,恰恰会注入检测系统正在找的那些信号,其中一些自己还会代理流量。先在干净的配置文件里测一遍,再去怪代理。
第二是公司或校园网络。如果您的流量本来就从办公网关出去,那您确实在代理之后:网站没说错,只有您感到意外。
第三是您自己的手机。移动运营商通过 CGNAT 把成千上万用户放在同一个地址后面,而部分风控厂商会把高密度的 CGNAT 网段视作共享基础设施。您是因为身处一张普通的移动网络而被标记。
如果以上都不适用,接下来的内容才值得读。
“干净的 IP 配上会泄露的浏览器,过不去;被标记的 IP 配上完美的浏览器,同样过不去。两者失败的方式不同,而只有其中一种值得用钱解决。”
「检测到代理」其实是三项不同的检查
提示语只有一句。它背后是三套彼此独立的系统,触发原因毫不相干;弄清是哪一套抓住了您,决定了修复要花两美元还是根本不花钱。
第一项问的是地址归谁所有。它在请求抵达应用之前就已完成,对网站而言零成本,也正是多数人读到这篇文章的原因。
第二项问的是连接是否自洽。浏览器声称自己是一回事;数据包、TLS 握手和 DNS 查询说的是另一回事。
第三项问的是账号是否像真人。这一项与代理完全无关——而人们最常试图用买代理来解决的,恰恰就是它。
第一项检查:地址早就被打了标签
有几家公司把「这个地址是不是代理」当成数据源来卖——IPQualityScore、Spur、IPinfo、MaxMind,以及十来家规模更小的。网站买下数据源,每次访问都去查一次。您不是被分析,而是被查表。
地址进入这些库有四条路。最常见的是 ASN:注册在主机公司名下的地址会被自动标记为数据中心,根本不需要观察您的行为。仅这一条就足以解释,为什么廉价数据中心代理在有防护的目标上怎么折腾都过不去。
第二条是历史。一个去年曾属于某代理网络的住宅地址,在网络释放它之后仍会保留标签,而标签往往比它的成因多活好几个月。
第三条是蜜罐。检测厂商运行着只有代理流量才会抵达的服务器,然后记录来访地址。任何商用轮换池里的地址,早晚都会撞上一个。
第四条是密度。当一天之内有两千个不同的浏览器指纹从同一个地址出现,那它就是共享基础设施——不管背后是代理还是一所大学。
论坛上被反复问到的那个问题,答案也在这里:完全不用代理的人之所以被标记,是因为运营商回收了地址,或者 CGNAT 把他们和几千个邻居放在了同一个公网 IP 后面。
第二项检查:连接自相矛盾
如果地址通过了却仍被抓,说明会话里存在不一致。下面这些信号值得记住名字:每一个的修法都不同,而其中只有一个需要花钱。
代理头。透明或配置糟糕的 HTTP 代理会在请求里加上 X-Forwarded-For、Via 或 Proxy-Connection,等于用明文宣告了这套安排。任何标称「elite」或「高匿」的代理都会剥掉它们;免费列表则经常不会。
TCP/IP 指纹。机器组装数据包的方式——窗口大小、选项顺序、TTL——因操作系统而异,且由内核决定,与浏览器无关。user-agent 说 Windows、TCP 栈却说 Linux,这是浏览器掩盖不了的矛盾,在托管于 Linux 的廉价代理上尤其常见。
TLS 指纹。握手中的加密套件列表与扩展顺序会产生 JA3 或 JA4 哈希,用以识别客户端库。JA3 显示 Python 而 user-agent 声称 Chrome,就是上一层的同一个矛盾。
WebRTC。浏览器可以被要求枚举本地网络接口,而它会返回您的真实地址,不管代理在做什么。这不是代理的失效,任何代理也阻止不了——这是浏览器设置。
DNS。如果域名是通过您自己的解析器而不是代理来解析的,那么在连接建立之前的一瞬,查询就已经从您的真实网络发出去了。SOCKS5 可以承载 DNS,但许多客户端的配置并不这么做。
时间与语言。浏览器报告莫斯科时间和俄语,却从法兰克福的地址出口——单独看什么也证明不了,与其余信号叠加起来就是强信号。
五分钟诊断
按顺序做。这样能把三项检查区分开而不必猜,而且每一步都免费。
用可疑的那个代理打开我们的 IP 检测工具。它会显示出口地址、ASN、该地址在检测数据源里是否读作代理、数据包透露的操作系统与浏览器声称的是否一致、TLS 指纹,以及 WebRTC 是否泄露。一个页面覆盖了整个第一项检查和第二项的大部分。
如果 ASN 显示主机商且地址已被标记,就到此为止——原因已经找到,在地址更换之前,清单上的其他项都无关紧要。
如果地址干净但操作系统那两行对不上,问题在指纹。如果 WebRTC 显示出一个您认得出是自己的地址,问题在浏览器。
如果每一行都干净却仍被封,那是第三项检查,答案不在本文里,而在账号是怎么被驱动的。
什么才真正改变结论
把修法对准检查项,因为对错了的修法既花钱又不改变任何事。
如果问题在 ASN,就必须更换地址类别。住宅地址属于真实的用户线路,读起来就是一户人家;ISP 地址登记在消费级服务商名下却运行在服务器硬件上,适合那些需要身份固定不动的工作。我们的住宅代理 1 GB 起、无最低消费,验证这个假设的花费不过一杯咖啡。
如果问题在 TCP 指纹,数据包就得和说辞对得上。我们在 ISP 与数据中心代理上免费提供操作系统指纹伪装——五个 p0f 配置,按代理逐个切换——这样 user-agent 是 Windows 时,留下的 TCP 签名也是 Windows 形状的。这个价位上提供该功能的厂商屈指可数。
如果是 WebRTC 或 DNS 在泄露,什么都别买。在浏览器或防关联配置文件里关掉 WebRTC,并把 DNS 走代理——SOCKS5 支持这一点。这花费为零,却解决了几百美元代理也碰不到的问题。
如果问题在账号行为,请放慢并停止购买。新身份要慢慢养,一个账号在其整个生命周期里固定用一个地址,也不要以真人无法维持的速度运行。
这些都解决不了的事
干净的地址救不回一个已经被标记的账号。信誉既附着于连接,也附着于账号:世界上最干净的住宅 IP,登进一个烧掉的账号,依然是烧掉的账号。
它也不会让您隐形。上述每一项技术都在减少互相矛盾的信号数量,但没有一项能消除信号本身。一个有真实预算、下定决心的平台仍然能把范围缩小到您身上,而宣称相反的人,都在卖东西。
它更不会让任何事变得合规。绕过身份验证、违反您已接受的条款、或以违反隐私法的方式收集个人数据——请求来自住宅地址时,这些同样违法。
常见问题
先弄清是三项检查中的哪一项抓住了您,再花钱。如果地址已被标记或位于主机商 ASN 上,只有更换地址类别才有用。如果地址干净,就去找会话中的矛盾——操作系统指纹、TLS、WebRTC、DNS——并在浏览器里修好,这通常不花钱。
三个常见原因。您的服务商回收了一个此前被代理网络占用过的地址;运营商通过 CGNAT 把您和成千上万用户放在一起,而部分厂商将其视为共享基础设施;或者您网络里有设备自己在跟互联网通信。前两种不是您的错,也无法从您这一侧解决。
有时可以。IPinfo、Spur 和 IPQualityScore 都接受申诉,真正的错误分类往往会被更正。但过程缓慢,需要逐家厂商分别申请,而且如果引发标记的行为继续,标签还会回来。
不一定,声称一定能的厂商值得怀疑。住宅地址能通过归属检查——这是最难对付的一项——但如果浏览器泄露、地址曾属于被烧掉的池子,或账号表现得像自动化程序,它照样过不去。它改变的是概率,而不是结论。
两者都有可能,把它们分开的正是诊断。先查出口地址,因为排除它的成本最低。如果地址干净,矛盾就在浏览器里——而买再多代理也修不好浏览器的问题。
它能解决第二项检查的一部分,也就是浏览器层的指纹。它对 ASN 无能为力,对底层操作系统生成的 TCP 指纹同样无能为力,对行为也毫无办法。把它与数据中心代理搭配使用,是一个常见且昂贵的错误。
它是客户端建立 TLS 连接方式的哈希:提供了哪些加密套件、发送了哪些扩展,以及两者的顺序。不同的 HTTP 库和浏览器会产生不同的哈希,因此一个自称 Chrome、哈希却像 Python 的请求,无需检查流量内容就会被抓出来。
经常可以,因为运营商地址通过 CGNAT 被成千上万真实用户共用,封掉其中一个对网站来说代价高昂。就归属检查而言它是最强的选项,同时每 GB 也最贵;而对会泄露的浏览器和可疑的账号,它什么忙也帮不上。