HTTP User-Agent详解与主流浏览器UA大全
1. User-Agent基础概念解析User-Agent用户代理是HTTP协议中的一个重要请求头字段它向服务器传递了客户端软件的相关信息。这个字符串包含了操作系统、浏览器类型和版本等关键数据服务器可以根据这些信息来优化返回的内容。典型的User-Agent字符串结构如下Mozilla/5.0 (平台信息) 引擎信息 浏览器信息这个看似简单的字符串实际上蕴含着丰富的信息Mozilla/5.0历史遗留标识几乎所有现代浏览器都会包含括号内的平台信息操作系统、设备类型等引擎信息渲染引擎及其版本浏览器信息浏览器名称和版本号重要提示虽然User-Agent可以用于浏览器检测但MDN官方文档明确指出基于User-Agent进行内容适配通常是个糟糕的主意。现代Web开发更推荐使用特性检测而非浏览器检测。2. 主流浏览器User-Agent大全2.1 Chrome浏览器系列桌面版Chrome典型UAMozilla/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.36Chrome UA的特点包含AppleWebKit引擎标识特别注明KHTML, like Gecko以保持兼容性最后会带上Safari标识历史原因2.2 Firefox浏览器系列桌面版Firefox典型UAMozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0) Gecko/20100101 Firefox/120.0移动版FirefoxMozilla/5.0 (Android 12; Mobile; rv:120.0) Gecko/120.0 Firefox/120.0Firefox UA的独特之处明确标注Gecko渲染引擎包含rv:版本号与Firefox版本一致桌面版固定包含20100101这个日期标识2.3 Safari浏览器系列Mac版SafariMozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Safari/605.1.15iOS版SafariMozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Mobile/15E148 Safari/604.1Safari UA的特点包含详细的系统版本信息有独立的Version/xx标识浏览器版本移动版明确标注Mobile标识2.4 Edge浏览器系列桌面版EdgeMozilla/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.0移动版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.0Edge UA的识别要点基于Chromium内核所以开头与Chrome相同末尾的Edg/版本号是识别关键安卓版使用EdgA前缀iOS版使用EdgiOS前缀3. 移动设备与特殊浏览器UA3.1 微信内置浏览器Android版微信Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/120.0.0.0 Mobile Safari/537.36 MMWEBID/1.0 MicroMessenger/8.0.0iOS版微信Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.0识别关键包含MicroMessenger标识3.2 QQ浏览器手机QQ浏览器Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/120.0.0.0 Mobile Safari/537.36 QQ/8.0.03.3 UC浏览器Android UC浏览器Mozilla/5.0 (Linux; U; Android 10; zh-CN; K) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/120.0.0.0 Mobile Safari/537.36 UCBrowser/12.0.0特点包含UCBrowser标识和语言代码4. 爬虫与自动化工具的UA4.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)4.2 自动化测试工具Selenium WebDriverMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36PuppeteerMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36注意许多自动化工具会模拟常规浏览器UA仅凭UA难以100%准确识别5. User-Agent的现代应用与隐私保护5.1 User-Agent减少计划由于隐私保护考虑现代浏览器正在实施User-Agent减少计划固定操作系统版本号如所有Android设备都显示Android 10统一设备型号标识如用K代替真实型号简化次要版本号如将120.1.2显示为120.0.05.2 替代方案Client Hints现代浏览器推荐使用Client Hints来获取设备信息服务器发送Accept-CH头部指定需要的信息客户端通过Sec-CH-UA-*头部返回具体信息需要时可以请求更详细的设备数据示例交换过程请求头 Accept-CH: Sec-CH-UA, Sec-CH-UA-Mobile 响应头 Sec-CH-UA: Chrome; v120, Chromium; v120 Sec-CH-UA-Mobile: ?16. 实际应用中的注意事项6.1 浏览器检测的正确方式不建议的做法// 不推荐基于UA字符串的简单匹配 if(navigator.userAgent.indexOf(Chrome) -1) { // Chrome特定代码 }推荐的做法// 推荐特性检测 if(IntersectionObserver in window) { // 支持IntersectionObserver API }6.2 服务端UA解析的最佳实践使用成熟的解析库如ua-parser-js只解析必要的字段缓存解析结果避免重复计算考虑User-Agent减少计划的影响Node.js解析示例const parser require(ua-parser-js); function parseUserAgent(req) { const ua parser(req.headers[user-agent]); return { browser: ${ua.browser.name} ${ua.browser.version}, os: ${ua.os.name} ${ua.os.version}, device: ua.device.type || desktop }; }6.3 常见问题排查问题为什么我的网站显示手机版布局即使用户使用桌面浏览器 可能原因UA检测逻辑没有正确处理某些桌面浏览器的移动标识解决方案检查是否包含Mobile就判定为移动设备某些桌面浏览器如开发者工具可能模拟移动UA结合屏幕尺寸和触摸支持等综合判断问题如何区分真正的Chrome和基于Chromium的浏览器 解决方案检查Edg/、OPR/等特定标识注意某些浏览器可能故意隐藏身份考虑是否真的需要如此细粒度的区分7. 历史UA格式与演变7.1 早期浏览器UANetscape 4Mozilla/4.0 (compatible; MSIE 4.01; Windows 98)IE 6Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)7.2 现代浏览器的UA演变趋势逐渐简化不必要的信息减少可用于指纹识别的独特标识向标准化格式靠拢通过Client Hints提供更可控的信息披露8. 实用工具与资源8.1 在线UA解析工具UserAgentString.comWhatIsMyBrowser.comUA-Parser Demo8.2 常用UA解析库JavaScriptua-parser-jsbowserPythonuser-agentsua-parserPHPDeviceDetectorMobile Detect8.3 获取最新UA信息的渠道各浏览器官方开发者文档MDN Web文档Can I Use网站浏览器厂商的开发者博客在实际项目中处理User-Agent时建议保持逻辑简单健壮不要过度依赖UA中的细节信息。随着Web生态的发展特性检测和响应式设计才是更可靠的解决方案。

相关新闻

低代码平台构建应急预案管理系统的技术实践与架构分析

低代码平台构建应急预案管理系统的技术实践与架构分析

低代码平台构建应急预案管理系统的技术实践与架构分析 从技术实现角度来说,应急预案管理系统的核心需求包括:预案模板的灵活定义、应急流程的可视化编排、多角色协同响应、实时消息通知、事后复盘分析等功能模块。传统开发模式下,这类系统通常…

2026/10/13 9:12:50 阅读更多 →
现在不理解MoE稀疏激活机制,3个月内将无法调试任何百亿级模型:一线大厂SRE紧急备忘录

现在不理解MoE稀疏激活机制,3个月内将无法调试任何百亿级模型:一线大厂SRE紧急备忘录

更多请点击: https://kaifayun.com 第一章:MoE稀疏激活机制的本质与历史演进 稀疏激活是混合专家(Mixture of Experts, MoE)模型区别于传统稠密神经网络的核心特征。其本质在于:对每个输入样本,仅动态路由…

2026/10/11 6:07:34 阅读更多 →
Unity UI Toolkit实战避坑:从Web前端视角解析USS、UQuery与3D世界空间UI

Unity UI Toolkit实战避坑:从Web前端视角解析USS、UQuery与3D世界空间UI

1. 项目概述:当Web前端思维遇上Unity UI Toolkit如果你是从Web前端(比如React、Vue、原生HTML/CSS/JS)转战Unity的开发者,第一次打开UI Toolkit(UITK)时,大概率会感到一阵亲切,紧接着…

2026/10/12 6:15:56 阅读更多 →

最新新闻

北航机试工程思维:输入解析、缓存优化与格式鲁棒性

北航机试工程思维:输入解析、缓存优化与格式鲁棒性

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 1:42:11 阅读更多 →
四寸液氮高低温真空探针台:从选型到实操的完整指南

四寸液氮高低温真空探针台:从选型到实操的完整指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 1:42:11 阅读更多 →
ITK PointSet完全指南:离散点数据的存储、访问与实战避坑

ITK PointSet完全指南:离散点数据的存储、访问与实战避坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 1:42:11 阅读更多 →
嵌入式SQLite交叉编译与部署实战:从源码到目标板全流程

嵌入式SQLite交叉编译与部署实战:从源码到目标板全流程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 1:42:11 阅读更多 →
USB HID免驱监控:破解UPS运维的通信脆弱与数据粗糙困局

USB HID免驱监控:破解UPS运维的通信脆弱与数据粗糙困局

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 1:42:11 阅读更多 →
轴角编码器与超声波传感器:VEX V5机器人精准定位与避障全解析

轴角编码器与超声波传感器:VEX V5机器人精准定位与避障全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 1:41:11 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →