网页开发测试的随机用户代理生成器

生成真实的浏览器用户代理字符串,具有按设备类型、浏览器系列和操作系统过滤的选项。非常适合网页开发测试和兼容性检查。

随机用户代理生成器

生成随机的、真实的浏览器用户代理字符串,用于网页开发测试。

生成的用户代理

复制
📚

文档

随机用户代理生成器

介绍

用户代理字符串是一个特定的文本标识符,网页浏览器和其他应用程序将其发送到网站以识别自己。这个字符串通常包含关于浏览器、操作系统、设备类型和使用的渲染引擎的信息。对于网页开发人员和测试人员来说,获取各种真实的用户代理字符串对于测试网站的兼容性、响应性和在不同平台上的功能至关重要。

这个随机用户代理生成器工具根据您选择的参数创建看起来真实的用户代理字符串。您可以按设备类型(桌面或移动)、浏览器系列(Chrome、Firefox、Safari或Edge)和操作系统进行筛选,以生成符合您测试要求的用户代理。该工具提供一个简单的界面,具有一键复制生成的字符串和即时生成新随机字符串的选项。

用户代理结构

用户代理字符串根据浏览器和平台遵循特定的模式,但通常包含几个共同的组件:

  1. 浏览器标识符:通常以“Mozilla/5.0”开头,以确保历史兼容性
  2. 平台/操作系统信息:关于操作系统的详细信息(Windows、macOS、Android、iOS)
  3. 浏览器引擎:渲染引擎(如Gecko、WebKit或Blink)
  4. 浏览器详细信息:特定的浏览器名称和版本

以下是主要浏览器的典型用户代理结构的细分:

Chrome

1Mozilla/5.0 (platform; details) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/version Safari/537.36
2

Firefox

1Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion
2

Safari

1Mozilla/5.0 (platform) AppleWebKit/webkitversion (KHTML, like Gecko) Version/safariversion Safari/safariversion
2

Edge

1Mozilla/5.0 (platform) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/chromiumversion Safari/537.36 Edg/edgeversion
2

平台部分在桌面和移动设备之间有显著差异:

桌面示例:

  • Windows: Windows NT 10.0; Win64; x64
  • macOS: Macintosh; Intel Mac OS X 10_15_7
  • Linux: X11; Linux x86_64

移动示例:

  • Android: Linux; Android 12; SM-G998B
  • iOS: iPhone; CPU iPhone OS 15_4 like Mac OS X

设备类型差异

桌面用户代理

桌面用户代理通常包含特定的操作系统信息、架构细节(如x86_64或Win64),并且有时包含语言偏好。与移动用户代理相比,它们在不同浏览器之间通常更为一致。

移动用户代理

移动用户代理包含设备型号信息、移动操作系统版本,并且通常在末尾包含“Mobile”一词。iOS设备上的移动Safari将包含“iPhone”或“iPad”标识符,而Android设备则包含制造商和型号。

浏览器版本模式

每个浏览器遵循不同的版本模式:

  • Chrome:使用四部分版本号(例如,96.0.4664.110)
  • Firefox:通常使用两或三部分版本号(例如,95.0或95.0.2)
  • Safari:使用简单的版本号,如15.2
  • Edge:使用类似于Chrome的版本号,但具有自己的Edge版本(例如,96.0.1054.62)

用例

随机用户代理生成在网页开发和测试中有几个重要的应用:

  1. 跨浏览器兼容性测试:测试您的网站在不同浏览器上的渲染和功能,而无需安装多个浏览器或使用多个设备。

  2. 响应式设计测试:验证您的网站是否正确检测到移动和桌面设备,并提供适当的布局。

  3. 功能检测验证:确保您的网站的功能检测机制在不同浏览器能力下正常工作。

  4. 质量保证和自动化测试:将不同的用户代理纳入您的自动化测试脚本,以模拟各种用户环境。

  5. 性能测试:分析您的网站在不同浏览器环境下的性能。

  6. 调试浏览器特定问题:重现和修复仅在特定浏览器或版本中发生的错误。

  7. API测试:测试您的API如何处理来自不同客户端应用程序的请求。

替代方案

虽然我们的随机用户代理生成器在许多测试场景中很有用,但还有其他替代方法:

  1. 浏览器测试服务:像BrowserStack、Sauce Labs或LambdaTest这样的平台提供实际的浏览器实例进行测试,而不仅仅是模拟用户代理。

  2. 浏览器开发者工具:大多数现代浏览器允许您通过其开发者工具覆盖用户代理,这对于快速测试非常有用。

  3. 用户代理切换扩展:允许您在浏览时切换预定义用户代理的浏览器扩展。

  4. 虚拟机或容器:运行不同操作系统和浏览器的实际实例,以获得最准确的测试。

  5. 无头浏览器测试:使用像Puppeteer或Selenium这样的工具,以不同的用户代理设置程序控制浏览器。

每种替代方案都有其自身的优点,并且可能更适合您的特定测试需求和资源。

历史

用户代理字符串的概念可以追溯到万维网的早期。术语“用户代理”来自HTTP规范,指的是向Web服务器发出请求的客户端应用程序。

早期(1990年代)

第一个广泛使用的浏览器NCSA Mosaic包含一个简单的用户代理字符串,标识浏览器的名称和版本。当Netscape Navigator发布时,它使用了类似的格式。然而,随着Web服务器开始根据浏览器提供不同的内容,出现了一种被称为“浏览器嗅探”的做法。

浏览器战争和用户代理伪装(1990年代末)

在Netscape和Internet Explorer之间的浏览器战争期间,网站通常仅为特定浏览器提供优化的内容。为了确保兼容性,浏览器开始包含将自己标识为其他浏览器的字符串。这就是为什么大多数现代浏览器仍在其用户代理字符串中包含“Mozilla”的原因,这是对Netscape Navigator代码名称的引用。

移动革命(2000年代-2010年代)

移动设备的崛起给用户代理字符串带来了新的复杂性。移动浏览器需要将自己识别为移动设备,以接收适当的内容,导致设备标识符和移动特定标记的添加。

现代挑战(2010年代-现在)

随着Web生态系统变得更加复杂,用户代理字符串变得越来越复杂。它们现在包含对多个浏览器引擎(如“AppleWebKit”和“Gecko”)的引用,以确保兼容性,即使这些引擎实际上并未被使用。

这种复杂性导致准确解析用户代理字符串的挑战,一些Web标准组织提议弃用或简化用户代理字符串,以支持更结构化的客户端提示。然而,出于向后兼容性原因,传统的用户代理字符串仍然是Web浏览的重要组成部分。

代码示例

以下是如何在各种编程语言中处理用户代理字符串的示例:

1// JavaScript:根据用户代理检测浏览器类型
2function detectBrowser() {
3  const userAgent = navigator.userAgent;
4  
5  if (userAgent.indexOf("Firefox") > -1) {
6    return "Firefox";
7  } else if (userAgent.indexOf("SamsungBrowser") > -1) {
8    return "Samsung Browser";
9  } else if (userAgent.indexOf("Opera") > -1 || userAgent.indexOf("OPR") > -1) {
10    return "Opera";
11  } else if (userAgent.indexOf("Trident") > -1) {
12    return "Internet Explorer";
13  } else if (userAgent.indexOf("Edge") > -1) {
14    return "Edge";
15  } else if (userAgent.indexOf("Chrome") > -1) {
16    return "Chrome";
17  } else if (userAgent.indexOf("Safari") > -1) {
18    return "Safari";
19  } else {
20    return "未知";
21  }
22}
23
24// 使用
25console.log("您正在使用:" + detectBrowser());
26

常见用户代理模式

以下是不同浏览器和平台的一些真实用户代理字符串示例:

桌面浏览器

Windows上的Chrome:

1Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36
2

macOS上的Firefox:

1Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:95.0) Gecko/20100101 Firefox/95.0
2

macOS上的Safari:

1Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.2 Safari/605.1.15
2

Windows上的Edge:

1Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36 Edg/96.0.1054.62
2

移动浏览器

Android上的Chrome:

1Mozilla/5.0 (Linux; Android 12; SM-G998B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.104 Mobile Safari/537.36
2

iPhone上的Safari:

1Mozilla/5.0 (iPhone; CPU iPhone OS 15_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.2 Mobile/15E148 Safari/604.1
2

Android上的Firefox:

1Mozilla/5.0 (Android 12; Mobile; rv:95.0) Gecko/95.0 Firefox/95.0
2

Galaxy上的Samsung Internet:

1Mozilla/5.0 (Linux; Android 12; SM-G998B) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/16.0 Chrome/92.0.4515.166 Mobile Safari/537.36
2

参考文献

  1. “用户代理。” MDN Web 文档,Mozilla,https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent

  2. “浏览器用户代理字符串。” WhatIsMyBrowser.com,https://www.whatismybrowser.com/guides/the-latest-user-agent/

  3. “HTTP用户代理头解释。” KeyCDN,https://www.keycdn.com/support/user-agent

  4. “客户端提示。” MDN Web 文档,Mozilla,https://developer.mozilla.org/en-US/docs/Web/HTTP/Client_hints

  5. “用户代理字符串的历史。” WebAIM,https://webaim.org/blog/user-agent-string-history/

  6. “使用用户代理的浏览器检测。” Google Developers,https://developer.chrome.com/docs/multidevice/user-agent/