透明代理
透明代理通过自己的服务器转发请求,但会向网站透露用户的原始 IP 地址。它可以将该地址添加到 HTTP 请求头中,也就是随请求传递信息的字段。因此,通过不同的 IP 建立连接,并不一定能隐藏你自己的地址。
这个术语属于较早的代理匿名级别分类。现代商业代理通常具备高匿名(Elite / High Anonymity)行为:服务既不转发客户端的原始 IP,也不添加表明使用代理的请求头。透明代理这一类别主要用于理解较早的说明和公共代理列表中的标签。
网站如何得知你的 IP
假设你的公网 IP 是 198.51.100.24,代理使用 203.0.113.80 访问网站。连接由代理发起,因此网站看到的连接来源是代理地址。
但在转发未加密的 HTTP 请求时,代理可以添加 X-Forwarded-For: 198.51.100.24。这样,网站就收到了两个地址:连接上的代理 IP,以及请求字段中的你的 IP。
IP 检测页面可能只显示连接地址。即使你的地址也已到达网站,你看到的仍可能只有代理 IP。要检查是否发生这种泄露,应将转发字段的值与你连接代理时使用的公网 IP 对比:仅存在 X-Forwarded-For,并不能证明其中包含真实地址。网站不必信任第三方提供的请求头,但如果字段值就是你的 IP,信息就已经传到了网站。
为什么要保留原始地址?
代理也用于不需要匿名的任务。在组织内部网络中,代理可以限制网站访问、过滤请求,或保存允许缓存的响应,以便再次提供这些响应时无需向源服务器重新获取。
当请求经过同一组织的多个系统时,下一个系统可能需要知道请求由哪个客户端发出。传递原始地址有助于统计请求和实施访问规则。这是有意采用的基础设施设计,但不适合希望向外部网站隐藏自身 IP 的代理购买者。
“透明”的另一种含义
在网络文档中,透明代理也可能指流量被自动路由经过的代理。用户不必在浏览器中输入代理地址,而是由网络设备设置路由。管理员可以用这种方式让设备流量经过统一的过滤系统。
在这里,“透明”描述的是连接的安排方式;在匿名级别分类中,它描述的是是否向网站透露 IP。这是两项独立特性:手动配置代理不保证地址会被隐藏,而自动重定向本身也不意味着原始地址会通过 HTTP 请求头转发。
使用 HTTPS 时有什么变化?
X-Forwarded-For 示例适用于代理能够读取的请求。通过 HTTP 代理建立普通 HTTPS 连接时,应用使用 CONNECT 打开隧道,随后发往网站的请求及其请求头都在加密的 TLS 连接中传输。只中继这些加密字节的代理无法向其中插入你的 IP。
会解密 HTTPS 的企业网关采用另一种方式:用户设备必须信任它的证书,检查过程才不会产生证书错误。因此,普通 HTTP 测试得出的透明代理结果,不能自动套用于通过隧道传输的 HTTPS。
