我们列表中的每个代理都有匿名等级:透明、匿名或高匿。这个标签回答一个问题:目标网站能了解到你和代理的哪些信息?下面介绍每个等级的含义以及我们如何判断。
为什么请求头很重要
请求经过 HTTP 代理时,代理可能添加自己的请求头,最常见的有:
X-Forwarded-For:原始客户端的 IP,也就是你的 IP。X-Real-IP、Client-IP、Forwarded:换个名字的同样信息。Via:表明请求经过了代理,常带有代理软件名称。Proxy-Connection、X-Proxy-ID:其他代理痕迹。
网站可以读取所有这些请求头,匿名等级取决于哪些请求头到达了网站。
透明代理
透明代理什么都不隐藏。网站把代理的 IP 视为连接来源,但你的真实 IP 就在 X-Forwarded-For 或类似的请求头里。这类代理通常是企业或运营商的缓存服务器,本来就不是为隐私设计的。
只有在不需要隐藏 IP 时才使用它们,例如测试缓存,或访问把代理 IP 加入白名单的资源。
匿名代理
匿名代理会去掉你的 IP,但会表明自己的身份:添加 Via 或其他代理请求头。网站不知道你是谁,但知道你在使用代理。有些网站会因此显示验证码、限制功能或直接屏蔽。
匿名代理适合阅读公开页面、下载文件和许多数据采集任务。
高匿代理
高匿(高度匿名、精英)代理什么都不添加。请求到达网站时与客户端发出的完全一致,只是来自另一个 IP。仅从请求头看,这次访问与普通用户无异。请查看高匿代理列表。
高匿并不等于无法检测。网站仍可将 IP 与已知代理和数据中心数据库比对、分析 TCP 指纹或发现异常行为。高匿只保证代理本身不会出卖你。
SOCKS 代理呢?
SOCKS4 和 SOCKS5 不触碰流量内容,因此无法添加请求头,可用的 SOCKS 代理实际上就是高匿的。剩下的问题是 DNS:通过代理解析域名(socks5h://),避免 DNS 查询泄露。
我们如何检测匿名度
我们的检测程序会通过每个代理向自己的 judge 服务器发送请求。judge 记录每个传入请求的完整请求头和来源 IP,并与检测程序的真实地址比较:
- 任何请求头中出现我们的真实 IP → 透明。
- 没有真实 IP,但有代理请求头 → 匿名。
- 请求原样到达 → 高匿。
检测大约每分钟重复一次,因为代理的行为会变化,有些代理位于负载均衡之后,各节点配置不同。
自己检查代理
通过代理向任意会回显请求头的服务发送请求:
curl -x http://IP:端口 http://httpbin.org/headers
在输出中查找你自己的 IP 以及 Via 或 X-Forwarded-For。此测试请使用 http://:在 HTTPS 下代理只建立隧道,无法添加请求头。
你需要哪个等级
- 重视隐私,或网站不能察觉代理 → 高匿。
- 需要隐藏 IP,但可以接受暴露代理 → 匿名或高匿。
- 不需要隐藏 IP → 任意等级。