跳至正文
中文
立即开始

User-Agent(用户代理)

用户代理是浏览器、应用或机器人程序,会向网站发送 HTTP User-Agent 标头,用来说明自身的软件和平台。

文章目录(8 个章节)

User-Agent 标头如何工作

“用户代理”可以指客户端软件本身。User-Agent 则是客户端随请求发送的具体 HTTP 标头。

GET /products HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36

这个字符串可能会声明浏览器系列、操作系统和渲染引擎。为保持历史兼容性,其中保留了许多标记,按字面理解可能产生误导。客户端也可以更改该标头,因此它无法证明客户端实际使用的软件或设备。

网站如何使用 User-Agent

  • 兼容性: 规避已知的浏览器限制,或提供浏览器支持的功能。
  • 设备专用内容: 选择移动端或桌面端响应,不过通常更推荐响应式设计。
  • 分析: 估算不同浏览器、操作系统和设备的使用情况。
  • 流量检查: 将缺失、格式错误或异常的字符串作为 机器人检测 的一项依据。

网站不应把该标头当作可靠的身份标识。许多用户可能发送相同的字符串,同一个客户端也可能发送不同的字符串。

User-Agent 与浏览器指纹识别

User-Agent 浏览器指纹识别
来源 声明的 HTTP 标头 实测的浏览器信号
显示内容 声称使用的客户端和平台 字体、Canvas 输出等组合属性
可否更改 容易修改 需要让多项信号保持一致
识别能力 单独使用时较弱 基于概率,并不确定

浏览器指纹识别 可以将声明的 User-Agent 与 JavaScript 结果、屏幕尺寸和其他属性进行比对。如果桌面版 Chrome 的 User-Agent 字符串对应的是移动浏览器行为,就可能显得不一致。

配合代理使用 User-Agent

代理服务器 会更改目标网站看到的来源 IP,但通常不会替你选择 User-Agent。该标头由浏览器、HTTP 库或采集工具提供。

应使用与实际运行的客户端相符的字符串。使用浏览器自动化时,让浏览器生成正常标头,可以使 User-Agent 与其渲染引擎和支持的功能保持一致。请遵守网站条款和 robots.txt,将请求频率控制在合理范围内,也不要把更换 User-Agent 当作绕过访问控制的许可。

常见问题

代理会更改我的 User-Agent 吗?

通常不会。代理会更改对方看到的 IP 地址,而浏览器或 HTTP 客户端仍会发送其配置的 User-Agent 标头。

如何查看我的 User-Agent?

打开浏览器开发者工具,在 Network 面板中选择一个请求,然后查看请求标头。命令行客户端可以通过请求选项输出或设置该标头。

更改 User-Agent 能避开机器人检测吗?

不能。网站还可能检查请求模式、Cookie、JavaScript 属性和 TLS 行为。伪造的 User-Agent 如果与这些信号冲突,反而会让客户端更容易被标记。

相关术语

查看全部术语