Via、X-Forwarded-For 和 Forwarded:代理请求头完全解析
想象一下:你配置了同一个代理服务器,通过它访问了两个不同的网站。第一个网站兴高采烈地告诉你:你的真实 IP 是某某,你在使用代理。第二个网站则毫无察觉,把你当成普通访客。同一个代理,同一种配置,却产生了两种截然不同的结果。为什么会这样?答案几乎总是隐藏在 HTTP 请求头中。
请求头是浏览器、代理和服务器在每次请求时相互交换的元数据。它们大多对普通用户不可见,但正是这些头部决定了目标服务器能了解到关于你以及请求所经过的节点链的哪些信息。在这场戏中,三个请求头扮演着主要角色:Via、X-Forwarded-For 以及 RFC 7239 中定义的现代化 Forwarded。
在本指南中,我们将从基础到细节全面剖析这一主题。你将了解 Via 请求头到底从何而来,hop-by-hop 请求头与 end-to-end 请求头有何区别,为什么不能盲目信任 X-Forwarded-For,以及如何在服务器端正确配置对它的信任。我们会诚实地解读透明、匿名和高匿代理这些营销术语——用具体的请求头语言,而不是广告承诺。最重要的是,你会得到现成的工具,亲手检查实际对外发送的请求头组合。
先明确范围。我们只讨论 HTTP 请求头。我们不涉及指纹识别、TLS 指纹和自动化检测方法——这些是另外的宏大主题。这里只谈请求头:谁添加它们、它们会泄露什么、以及如何控制它们。