跳到正文
赞助 AccsZone — 购买账号, 即时发货, 24/7客服

HTTP 请求头

浏览器为请求本页而附加的每个请求头,按我们服务器收到的原样显示,并对暴露代理、您的语言、浏览器或来源页面的请求头加以说明。

本次请求中的请求头

11 个请求头 · GET HTTP/1.1

存在代理相关请求头:x-forwarded-for, x-real-ip。您路径上的透明代理或负载均衡器添加了它们;网站读取这些头来找出代理背后的地址。

请求头值含义
accept*/*浏览器在本次导航中接受的内容类型;具体顺序因浏览器而异。
accept-encodingbr支持的压缩方式(gzip、br、zstd)——一个浏览器版本信号。
hostipcheckerpro.com请求的站点名称;虚拟主机必需。
user-agentMozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)浏览器、引擎和操作系统的自我描述。
x-forwarded-for 代理请求头216.73.216.163代理或负载均衡器看到的原始客户端地址——可能暴露您的真实 IP。
x-forwarded-port443
x-forwarded-protohttps
x-lscache1
x-port443
x-real-ip 代理请求头216.73.216.163由 nginx 等反向代理插入的客户端地址。
x-real-port55016

本检测如何工作

您的浏览器请求本页时,先于其他一切发送了一组请求头。我们的服务器捕获每一个,把名称转为小写、按字母排序,连同请求方法和连接使用的 HTTP 协议版本一起印在上方表格中。没有任何过滤,我们也不添加任何内容;表格就是到达我们时的请求。

含义已知的请求头在第三列附有说明。表明代理或工具的请求头会被标记,表格上方的摘要单独列出它们,因为对检查代理配置的人来说这些才是关键。同样的数据也以 JSON 提供,脚本或命令行客户端可以用易于比对的形式查看自己发送了什么。

本页刻意保持朴素。请求头是请求中唯一无法对服务器隐藏的部分,所以这份列表也是浏览器指纹的被动部分:网站不运行一行脚本就能从每次访问收集的信息。浏览器指纹测试对这组被动信息哈希,并与脚本收集的信号并列显示。

如何解读结果

按作用把行分组。

分组 请求头 透露的内容
身份 user-agent、sec-ch-ua、sec-ch-ua-mobile、sec-ch-ua-platform、sec-ch-ua-full-version-list 及其他 sec-ch-* 浏览器家族、版本和平台;User Agent 页面会解析它们
偏好 accept、accept-language、accept-encoding 内容类型、按偏好排序的语言列表、支持的压缩;语言列表在匿名度评分中与 IP 国家/地区比较
请求上下文 host、referer、origin、sec-fetch-site、sec-fetch-mode、sec-fetch-dest、sec-fetch-user、upgrade-insecure-requests、priority 您请求的网站、链接您到此的页面,以及浏览器如何分类该请求
连接 connection、te、cache-control、pragma 保活和缓存行为;多属 HTTP/1.1 时代
隐私信号 dnt、sec-gpc Do Not Track 和 Global Privacy Control 退出选项(如已启用);罕见,因而是区分特征
会话 cookie 仅本站的 Cookie
代理 via、x-forwarded-for、forwarded、x-real-ip、client-ip、x-proxy-id、proxy-connection、x-forwarded 由代理软件添加;部分携带您的原始 IP
边缘 cf-connecting-ip 及类似 由网站前面的 CDN 或边缘网络添加;显示边缘看到的地址

代理行是需要处理的。 浏览器从不发送它们。出现任何一个,就说明浏览器与我们服务器之间有东西插入了它们。X-Forwarded-For、Forwarded、X-Real-IP 和 Client-IP 通常包含代理所转发客户端的地址,也就是您的真实地址;把它与代理检测显示的 IP 比较,若不同,您的真实地址正被交给您访问的每个网站。Via 和 X-Proxy-ID 不携带您的地址,但宣告代理的存在,严格的网站把这当作信号。存在任何一个时匿名度评分扣 10 分。

Referer 和 Origin 告诉网站您从哪里来。在地址栏直接输入的新访问没有 referer;从另一个网站点击链接会发送该网站的地址,按来源网站的策略裁剪。Sec-Fetch-Site 说明请求是同源、同站、跨站还是用户发起,网站用它检测嵌入和跨站请求。

Accept-Language 比看起来更能说明问题。它按偏好顺序列出您配置的语言及地区变体。以 IP 所在国家/地区不常见的语言开头的列表是弱不一致;英语在前处处可接受。该值也是指纹输入,因为精确的列表和顺序因人而异。

Client Hints 只出现在 Chromium 浏览器中。低熵的品牌、移动标记和平台随每个请求发送。完整版本列表、架构、位数和型号等高熵项只在网站于先前响应中请求后才发送,所以这里看到的是默认集合。

Do Not Track 和 Global Privacy Control 很少有网站遵守,而且因为启用的人少,它们的存在让浏览器稍微更独特。这不是反对它们的理由,只是读指纹时该知道的事实。

如何修复

存在代理请求头

  1. 找出来源。如果您在浏览器或系统中设置了代理,就是那个代理。如果什么都没设却看到 Via 或 X-Forwarded-For,说明运营商或网络运行着透明代理或缓存,移动运营商和办公室常见。
  2. 对于您控制的代理,切换到不添加请求头的模式,常叫高匿。对于商业代理,向服务商索取高匿端口或另一个地址池;该行为按代理而非按浏览器决定。
  3. 对于运营商的透明代理,VPN 是绕过的办法:隧道把您的请求带过代理,代理只看到加密流量。
  4. 刷新本页。代理摘要应显示无,匿名度评分中的代理行应通过。

与配置其余部分矛盾的请求头

  1. user agent 写一个平台而 sec-ch-ua-platform 写另一个,说明扩展或配置文件在改写其中之一。移除覆盖,或使用同时设置两者的配置文件。
  2. 与 IP 国家/地区不符的 Accept-Language 在浏览器语言设置中修复:Chrome 和 Edge 在设置 → 语言;Firefox 在设置 → 常规 → 语言;Safari 遵循系统设置中的系统语言列表。

Referer 暴露

  1. 要停止把来源页面发给其他网站,把浏览器的 referrer 策略设为 strict-origin-when-cross-origin(当前浏览器默认如此),或通过扩展或 Firefox 的 about:config 中的 network.http.referer 设置设为 no-referrer。站长可以为自己的外链设置 Referrer-Policy 响应头。

面向开发者和脚本

  1. 用您的工具请求本页的 JSON 版本,精确查看它发送哪些请求头。自称浏览器 user agent 却不发送 Accept-Language、Sec-Fetch 请求头和 Client Hints 的脚本,网站很容易把它与浏览器区分开。
  2. 用客户端选项显式添加请求头(例如 curl 的 -H 参数),并比较前后的 JSON 输出。

本检测的局限

  • 我们只能看到到达我们服务器的内容。 网站前面的 CDN 或边缘网络可能在网站看到之前去除、改写或添加请求头。这里看到的是没有这一层的源服务器视角,最完整,但不一定是某个网站得到的。
  • 仅请求头。 服务器返回的响应头不属于请求,不显示;浏览器的开发者工具两者都显示。
  • Cookie 按站点隔离。 只出现本站设置的 Cookie,首次访问时没有。这一行无法告诉您其他网站持有什么 Cookie。
  • 请求头顺序丢失。 我们按字母排序以便阅读。有些指纹系统把请求头的原始顺序当作信号,它因浏览器而异;这里不复现该顺序。
  • 加密传输对网络隐藏请求头,对服务器则不。 HTTPS 防止路径上的任何人读取这些请求头,不防止您访问的网站读取,而这正是本页的意义。
  • 代理检测基于请求头。 不添加请求头的代理对本检测不可见;其地址的网络类型由代理检测和 IP 检测覆盖。

透明代理请求头泄露是什么样子

透明代理位于您与互联网之间,用自己的地址转发您的请求,再把您的原始地址写入 X-Forwarded-For 或 Forwarded,使目标仍能记录是谁在请求。目标看到两个地址:作为连接来源的代理地址,和请求头中的您的地址。对运营商的缓存代理来说这是无害的记账。对您为改变表面位置而购买的代理来说这完全违背了目的,因为谨慎的网站首先读的就是那个请求头。代理请求头术语条目列出每个请求头、谁添加它以及携带什么值。

为什么不同浏览器的请求头列表不同

每个浏览器引擎有自己的默认值:列出哪些 Accept 类型、是否发送 Client Hints、包含哪些 Sec-Fetch 请求头、如何格式化 Accept-Language、是否在 HTTP/2 或 HTTP/3 上发送 priority 请求头。版本更迭会改变这些。差异大到服务器通常仅凭请求头集合就能说出浏览器家族,即使去掉 user agent。这就是只改写 user agent 不足以看起来像另一个浏览器的原因,也是浏览器指纹页面把被动指纹与脚本收集的指纹分开哈希的原因。

从脚本或命令行读取请求头

如果您维护抓取程序、监控工具或集成,本页的 JSON 输出是查看自己发送内容的最快方式。让工具带 application/json 的 Accept 请求头访问本页,把结果与浏览器发送的比较:浏览器以可识别的模式发送十几个请求头,裸客户端只发两三个。以“看起来像浏览器”为准入条件的网站检查的正是这一差异。诚实的工具与其不完整地模仿浏览器,不如清楚表明身份并遵守频率限制。

常见问题

什么是 HTTP 请求头?

浏览器在每个请求正文之前发送的元数据行,写明想要的主机、接受的内容、浏览器是什么、偏好的语言以及请求来自哪里。服务器读取它们来决定返回什么。

哪些请求头会暴露我在使用代理?

Via、X-Forwarded-For、Forwarded、X-Real-IP、Client-IP、X-Proxy-ID、Proxy-Connection 和 X-Forwarded。浏览器从不自行发送这些;它们由代理软件添加,其中一些携带您的真实 IP 地址。

为什么我看到自己没设置的请求头?

浏览器自动添加大多数请求头,您与我们服务器之间的任何东西(代理、企业网关或运营商缓存)都可能再添加。列表显示的是到达的内容,无论谁添加的。

本页会显示我的 Cookie 吗?

只显示本站的 Cookie(如有),因为浏览器只把 Cookie 发给设置它的网站。其他网站的 Cookie 在这里或对任何第三方都不可见。

为什么请求头名称是小写的?

HTTP/2 和 HTTP/3 以小写传输请求头名称,我们把 HTTP/1.1 的名称也规范为小写以保持列表一致。请求头名称按定义不区分大小写。

用 VPN 时网站能从请求头看到我的真实 IP 吗?

VPN 不添加请求头,所以不能。风险在代理:透明代理把您的原始地址写入 X-Forwarded-For 或 Forwarded,经它访问的每个网站都能读到。

为什么不同浏览器的列表不同?

每个浏览器发送自己的一套。Chromium 浏览器添加 Client Hint 和 Sec-Fetch 请求头,Firefox 发送不同的 Accept 列表,Safari 完全省略部分提示。这些差异正是无需脚本就能区分浏览器的原因之一。