User-Agent
User-Agent(简称 UA,中文常叫「用户代理」)是 HTTP 请求头里的一个字段,客户端在发起请求时用它来自报家门:告诉服务器发起请求的是什么软件。典型的浏览器 UA 长这样:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36,里面拼接了产品名、版本、操作系统、渲染引擎等信息。命令行工具和库也各有自己的 UA,例如 curl/8.4.0。
服务器拿到 UA 后,常见用途包括:
- 做内容适配,比如给移动端和桌面端返回不同页面;
- 统计分析,识别访问来自哪种浏览器或设备;
- 爬虫识别与访问控制,配合
robots.txt或直接按 UA 拦截。
要注意的是:UA 完全由客户端自行填写,可以随意伪造或留空,因此它不能作为安全或鉴权依据,只能当作参考性提示。此外历史包袱导致几乎所有浏览器 UA 都以 Mozilla/5.0 开头,靠字符串硬解析既脆弱又易错;现代做法是尽量用特性检测,或改用结构化的 Sec-CH-UA 客户端提示(Client Hints)来获取浏览器信息。
常见问题
User-Agent 和 Referer、IP 有什么区别?
三者都是请求携带的信息,但含义不同:UA 描述「用什么软件」发起请求,Referer 说明「从哪个页面跳转」过来,IP 则是网络层的来源地址。UA 和 Referer 都由客户端填写、可伪造,IP 相对更难随意假冒。
能靠 User-Agent 判断真实浏览器或拦截爬虫吗?
只能做初步过滤,不能作为可靠依据。UA 可任意修改,爬虫完全可以伪装成 Chrome,恶意请求更会主动模仿正常浏览器。真正的鉴别要结合行为特征、频率限制、验证码等手段。
为什么所有浏览器的 UA 都带 Mozilla/5.0?
这是历史兼容遗留。早年网站用 UA 判断是否支持某些特性,后来的浏览器为了不被误判而互相「假装」,层层叠加,最终大家都保留了 <code>Mozilla/5.0</code> 前缀,它今天已基本没有实际含义。