User-Agent解析与主流浏览器UA大全

User-Agent解析与主流浏览器UA大全 1. User-Agent基础解析User-Agent用户代理是HTTP协议中的一个请求头字段它向服务器传递客户端软件的相关信息。这个字符串包含了操作系统、浏览器类型和版本等关键数据服务器可以根据这些信息返回适配的内容。1.1 User-Agent的组成结构典型的浏览器User-Agent字符串由多个部分组成格式如下Mozilla/5.0 (平台信息) 引擎信息 浏览器信息以Chrome浏览器的User-Agent为例Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36这个字符串可以拆解为Mozilla/5.0历史兼容性标识(Windows NT 10.0; Win64; x64)操作系统和平台信息AppleWebKit/537.36渲染引擎信息(KHTML, like Gecko)引擎兼容性说明Chrome/91.0.4472.124浏览器品牌和版本Safari/537.36额外兼容性标识1.2 现代浏览器的User-Agent变化近年来主流浏览器都在实施User-Agent减少计划User-Agent Reduction目的是降低指纹追踪的风险。这意味着操作系统版本号被固定如Android 10设备型号被替换为通用标识如K次要版本号被归零如Chrome 91.0.0.0例如减少后的Android Chrome UAMozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.0.0 Mobile Safari/537.362. 主流浏览器User-Agent大全2.1 Chrome系列浏览器桌面版ChromeWindowsMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36Android版ChromeMozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36iOS版ChromeMozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/120.0.0.0 Mobile/15E148 Safari/604.12.2 Firefox系列浏览器桌面版FirefoxmacOSMozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/120.0Android版FirefoxMozilla/5.0 (Android 10; Mobile; rv:109.0) Gecko/120.0 Firefox/120.02.3 Safari浏览器macOS版SafariMozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Safari/605.1.15iOS版SafariMozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.12.4 Edge浏览器桌面版EdgeWindowsMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0Android版EdgeMozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36 EdgA/120.0.0.02.5 其他浏览器Opera桌面版Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 OPR/106.0.0.0QQ浏览器移动版Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36 QQBrowser/6.93. 爬虫和工具的User-Agent3.1 搜索引擎爬虫Googlebot桌面爬虫Mozilla/5.0 (compatible; Googlebot/2.1; http://www.google.com/bot.html)百度爬虫Mozilla/5.0 (compatible; Baiduspider/2.0; http://www.baidu.com/search/spider.html)3.2 自动化工具curl命令curl/7.68.0Postman测试工具PostmanRuntime/7.28.44. User-Agent的实用技巧4.1 检测User-Agent的JavaScript代码// 获取完整User-Agent字符串 const userAgent navigator.userAgent; console.log(User-Agent:, userAgent); // 检测浏览器类型 function detectBrowser() { if (userAgent.includes(Chrome)) return Chrome; if (userAgent.includes(Firefox)) return Firefox; if (userAgent.includes(Safari)) return Safari; if (userAgent.includes(Edg)) return Edge; if (userAgent.includes(OPR)) return Opera; return Unknown; } // 检测操作系统 function detectOS() { if (userAgent.includes(Windows)) return Windows; if (userAgent.includes(Macintosh)) return MacOS; if (userAgent.includes(Linux)) return Linux; if (userAgent.includes(Android)) return Android; if (userAgent.includes(iPhone)) return iOS; return Unknown; }4.2 服务器端User-Agent解析Python示例from flask import Flask, request app Flask(__name__) app.route(/) def index(): user_agent request.headers.get(User-Agent) browser Unknown if Chrome in user_agent: browser Chrome elif Firefox in user_agent: browser Firefox os Unknown if Windows in user_agent: os Windows elif Macintosh in user_agent: os MacOS return fBrowser: {browser}, OS: {os} if __name__ __main__: app.run()4.3 修改User-Agent的常见方法浏览器开发者工具Chrome/FirefoxF12打开开发者工具 → Network conditions → 取消勾选Use browser default → 输入自定义UAcurl命令修改UAcurl -A Mozilla/5.0 (Custom User Agent) https://example.comPython requests库修改UAimport requests headers {User-Agent: MyCustomAgent/1.0} response requests.get(https://example.com, headersheaders)5. User-Agent的最佳实践5.1 为什么不应该依赖User-Agent检测准确性问题UA字符串可以被轻易伪造维护成本需要持续更新浏览器识别规则隐私问题详细的UA信息可能涉及隐私泄露兼容性问题新浏览器版本可能导致检测失效5.2 现代替代方案特性检测推荐使用特性检测而非浏览器检测// 错误做法检测浏览器 if (navigator.userAgent.includes(Chrome)) { // Chrome特有代码 } // 正确做法检测特性支持 if (serviceWorker in navigator) { // 支持Service Worker的代码 }5.3 User-Agent Client Hints现代浏览器提供了更安全的替代方案服务器请求客户端提示HTTP/1.1 200 OK Accept-CH: Sec-CH-UA, Sec-CH-UA-Mobile客户端返回的提示头Sec-CH-UA: Chromium;v120, Google Chrome;v120 Sec-CH-UA-Mobile: ?0JavaScript API访问navigator.userAgentData.getHighEntropyValues([architecture]) .then(ua console.log(ua));6. 常见问题解答6.1 为什么所有浏览器都包含Mozilla这是历史兼容性问题。早期Netscape浏览器使用Mozilla标识网站会检查这个字符串。后来其他浏览器为了兼容也加入了这一标识即使它们与Mozilla无关。6.2 移动端和桌面端User-Agent有什么区别主要区别在于移动端包含Mobile标识操作系统信息不同Android/iOS vs Windows/macOS可能包含设备特定信息在UA减少前6.3 如何获取真实的设备信息在UA减少的背景下推荐使用Client Hints API通过权限请求获取精确信息需要用户授权使用响应式设计而非设备检测6.4 User-Agent字符串的最大长度是多少HTTP规范没有明确限制但实践中大多数服务器限制请求头总长度在8KB左右典型UA字符串长度在100-500字符之间过长的UA可能导致服务器拒绝请求7. 历史User-Agent示例7.1 早期浏览器UANetscape 41997年Mozilla/4.0 (compatible; MSIE 4.0; Windows 95)Internet Explorer 62001年Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)7.2 移动设备历史UA早期iPhone2007年Mozilla/5.0 (iPhone; U; CPU iPhone OS 2_0 like Mac OS X; en-us) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5A347 Safari/525.20Android 2.3设备2011年Mozilla/5.0 (Linux; U; Android 2.3.5; en-us; HTC Vision Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.18. 实用工具和资源8.1 在线UA解析工具UserAgentString.com - 提供UA解析和数据库WhatIsMyBrowser.com - 详细的UA分析工具MDN User-Agent参考 - 权威技术文档8.2 常用UA列表测试用UAMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 TestAgent/1.0爬虫友好UAMozilla/5.0 (compatible; MyCrawler/1.0; http://example.com/bot.html)移动设备模拟UAMozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.18.3 各语言解析库JavaScriptua-parser-jsPythonuser-agentsPHPMobile Detect9. 实际应用场景9.1 统计分析通过分析User-Agent可以获取浏览器市场份额数据操作系统分布情况设备类型比例移动/桌面地域性浏览器偏好9.2 兼容性处理虽然不推荐完全依赖UA检测但在某些场景仍有必要特定浏览器的bug规避渐进增强功能实现浏览器特有功能的启用9.3 安全防护UA信息可用于识别恶意爬虫和扫描器检测自动化工具防范基础DDoS攻击10. 未来发展趋势User-Agent逐步淘汰将被Client Hints完全取代指纹防护增强浏览器将提供更少的识别信息基于权限的访问敏感信息需要显式用户授权标准化检测API可能推出新的标准化设备检测接口在实际项目中建议逐步迁移到特性检测和Client Hints方案减少对传统User-Agent字符串的依赖。