WebDriver 检测

WebDriver 检测是识别浏览器是否处于自动控制之下的过程。 最熟悉的信号是 navigator.webdriver 属性。 网站还可能检查浏览器环境、网络连接、会话历史记录和页面上的活动。

检测结果不一定会导致区块。 网站可以允许会话、监视会话、应用速率限制、请求验证或审查活动。 响应通常取决于访问者想要做什么。

自动控制并不是滥用的证据。 测试系统、监控服务、辅助工具和批准的业务工作流程都可以使用 浏览器自动化。 重要的问题是该活动对于网站的该部分是否是预期的、授权的和安全的。

什么是WebDriver 检测?

WebDriver 检测查找浏览器正在通过 WebDriver 或相关自动化环境进行控制的证据。

WebDriver 为软件提供了控制浏览器的标准方法。 脚本可以打开页面、查找元素、输入文本、单击按钮、管理窗口和读取结果。 大多数人将 Selenium 与 WebDriver 联系在一起,但这两个术语的含义并不相同。

WebDriver是一个浏览器控制标准。 Selenium 是一个使用 WebDriver 的自动化项目。 ChromeDriver、GeckoDriver、SafariDriver 和 EdgeDriver 是各个浏览器的实现。

驱动程序通常在页面外部运行,并在自动化客户端和浏览器之间传递命令。 网站观察浏览器状态和产生的信号,而不是检查驱动程序可执行文件本身。

WebDriver 检测回答了一个狭隘的技术问题。

该浏览器似乎处于自动控制之下吗?

授权和风险是不同的问题。 测试工作流程和滥用脚本都可能产生自动化信号。 网站需要请求、会话、帐户和业务上下文来区分它们。

这就是为什么 WebDriver 证据经常成为更广泛的 Bot 检测 决策中的一项输入。

WebDriver 是如何工作的?

基本的 WebDriver 工作流程有四个部分。

  1. 自动化脚本定义任务。

该脚本可能会要求浏览器打开 URL、查找表单、输入数据或检查元素是否出现。

  1. WebDriver 客户端发送命令。

客户端库将 Python、Java、JavaScript、C# 或其他支持的语言的指令转换为 WebDriver 命令。

  1. 浏览器驱动程序接收命令。

ChromeDriver 控制 Chrome 或 Chromium。 GeckoDriver 控制 Firefox。 其他浏览器提供自己的驱动程序实现。

  1. 浏览器执行该操作。

浏览器加载页面并将信息返回给自动化脚本。

W3C WebDriver 规范 将 WebDriver 定义为浏览器的远程控制接口。 它还定义了一个标志,当浏览器处于远程控制之下时该标志将变为活动状态。

浏览器通过 navigator.webdriver 将此状态公开给网页。 根据MDN,该属性指示浏览器是否受自动化控制。

这种行为是故意的。 它为页面提供了一种识别自动浏览器的标准方法,并在需要时使用不同的代码路径。 例如,测试环境可能会禁用动画或收集额外的诊断信息。

该属性是自动化接口的一部分,并非意外泄漏。

WebDriver 检测如何工作?

在典型的设置中,页面 JavaScript 读取浏览器状态并收集一小组相关信号。 该页面将这些观察结果发送到服务器。 风险系统将它们与请求、会话和尝试的操作进行比较。 然后,策略决定是否允许、监视、质疑、限制或阻止该请求。

最简单的检查是navigator.webdriver。 值 true 表示浏览器报告自动化控制处于活动状态。

这是有用的证据,但其意义有限。 该属性仅报告控制状态。 它不识别脚本的所有者或任务的目的。

公开文章请求和付费变更不应以同一标准来判断。 第一个行动几乎没有直接影响。 即使人们正在使用浏览器,第二个可能也需要更严格的检查。

现代检测可能会考虑多层。

标准自动化状态

navigator.webdriver 是最直接的 WebDriver 信号。 检查起来很便宜而且很容易理解。

内部测试套件可以产生与未经授权的脚本相同的值。 因此,网站在选择响应之前需要更多背景信息。

浏览器和驱动程序证据

自动化环境可能与普通浏览器会话有一些细微的不同。 这些差异可能出现在浏览器属性、对象结构、权限、启动设置或运行时环境中。

随着浏览器、驱动程序和自动化框架的更新,特定的工件也会发生变化。 围绕一个旧工件构建的规则可能会停止工作或开始标记合法浏览器。

生产检测系统需要定期测试。 它不能依赖于可疑变量的永久列表。

浏览器一致性

网站可能会将浏览器声明的内容与它可以观察到的内容进行比较。

例如,用户代理字符串可能声明一种浏览器或操作系统,而其他 API 则建议不同的环境。 屏幕配置、图形结果、权限状态或可用功能可能不适合声明的平台。

更改用户代理字符串不会重现完整的浏览器。 用户代理欺骗 更改声明的客户端信息。 它不会自动更改渲染引擎、图形环境、网络堆栈、cookie 或会话历史记录。

图形数据可以提供另一个比较点。 WebGL 指纹 可以帮助系统检查报告的浏览器、操作系统和图形环境是否一起有意义。

不一致会增加不确定性。 虚拟机、远程桌面、隐私工具、浏览器扩展和不常见的硬件也可能产生不寻常的组合。

网络和请求上下文

检测可以在页面读取浏览器属性之前和之后继续。

网站可以考虑:

  • IP地址和网络所有者
  • 请求频率
  • 标头一致性
  • 请求的端点
  • 导航顺序
  • TLS 和 HTTP 特性
  • 来自同一会话的较早请求

这些不是严格意义上的 WebDriver 信号。 它们属于更广泛的流量和风险评估。

例如,TLS 指纹 可以帮助将网络握手与所声明的浏览器进行比较。 结果添加了上下文,但它本身无法识别请求的目的。

会话和行为

随着时间的推移,一些最有力的证据就会出现。

平台可以检查重复的登录失败、帐户创建量、结账活动、导航顺序以及会话之间的变化。 意义来自于整个工作流程。

对一篇公开文章的十次请求可能是无害的。 针对不同帐户的十次失败登录尝试更令人担忧。

关于人类行为的简单想法是不可靠的。 人们可以快速点击。 自动化可能包括延迟。 辅助工具可能会创建看起来不寻常的交互模式。 一个有用的模型会考虑操作、帐户和可能的危害。

WebDriver 检测中使用哪些信号?

WebDriver 检测通常从一个标准属性开始。 更广泛的自动化检测可以使用多个信号组。

标准浏览器信号

示例包括:

  • navigator.webdriver
  • 浏览器报告自动化状态
  • 自动化相关的运行时设置

这些信号可以表明浏览器处于自动控制之下。 现阶段意图仍未知。

运行时信号

示例包括:

  • 驱动程序相关的浏览器差异
  • 更改的浏览器对象
  • 不寻常的财产结构
  • 意外的权限状态
  • 浏览器版本和可用 API 之间的差异

这些信号可以揭示仪表化环境。 它们的值可能会在浏览器或驱动程序更新后发生变化。

环境一致性

示例包括:

  • 用户代理字符串和浏览器功能协议
  • 操作系统和图形协议
  • 屏幕和输入功能
  • 浏览器版本和API支持
  • 有头和无头运行时差异

一致性检查非常有用,因为浏览器环境有许多相互连接的部分。 检测规则仍然需要空间来容纳不常见但合法的设置。

网络和请求信号

示例包括:

  • IP 信誉
  • ASN 和网络类型
  • TLS 特性
  • HTTP 标头
  • 请求率
  • 端点序列

这些信号描述了连接和流量模式。 它们并非特定于 WebDriver。

会话和帐户信号

示例包括:

  • Cookie 和会话连续性
  • 登录记录
  • 失败的尝试
  • 账户年龄
  • 重复动作
  • 交易速度
  • 访问之间的变化

这些信号帮助平台判断活动的风险,而不仅仅是浏览器。

可靠的决策取决于独立信号之间的一致性。 浏览器标志、网络值或行为模式不应包含整个决策。

为什么网站使用 WebDriver 检测?

WebDriver 可以多次运行相同的操作,只需很少的手动操作。 这使得它对于测试很有用。 它还会增加有害活动的规模。

网站在保护时可能会使用 WebDriver 检测:

  • 凭证填充的登录页面
  • 保护注册表单,防止创建虚假账号
  • 垃圾邮件中的评论表单
  • 卡测试的结账流程
  • 保护门票和产品发售,防止自动化抢购
  • 来自虚假点击的广告系统
  • 未经授权收集的公开内容
  • 来自过多或滥用请求的 API

风险来自行动及其影响。 自动化只是交付方法。

同样的技术支持合法的工作。 Selenium 广泛用于回归测试和浏览器兼容性检查。 监控服务可能会打开页面以确认重要流程仍然有效。 内部团队可以自动执行报告下载或重复数据输入。 当不存在合适的 API 时,获得批准的合作伙伴可以使用浏览器自动化。

如果可能,经批准的自动化应使用官方 API、服务帐户、记录的爬虫身份或白名单。 它还应该有明确的所有者、定义的权限、合理的速率限制和有用的日志。

WebDriver 检测与相关概念

几个相关术语描述了浏览器和流量分析的不同部分。

浏览器自动化检测

WebDriver 检测是浏览器自动化检测的一部分。

WebDriver 检测询问浏览器是否似乎是通过 WebDriver 控制的。 浏览器自动化检测询问软件是否似乎通过任何支持的控制通道控制浏览器。

Playwright 和 Puppeteer 是浏览器自动化工具,但不应将它们描述为与 Selenium WebDriver 相同。 它们的控制方法取决于浏览器和运行时。 在 Chromium 中,它们通常通过 Chrome DevTools 协议进行通信。

仅检查navigator.webdriver的网站正在检查一个信号,而不是每种形式的浏览器自动化。

无头浏览器检测

无头浏览器运行时没有通常可见的浏览器窗口。 WebDriver 是一种控制浏览器的方法。

这两个概念可以重叠。 WebDriver 会话可以在无头模式下运行。 它还可以使用可见的浏览器窗口运行。

无头浏览器检测可以检查渲染行为、窗口属性、图形输出或缺少的浏览器功能。 这些检查并非全部 WebDriver 检查。

无头模式常见于持续集成、自动化测试、监控和计划任务中。

Bot 检测

WebDriver 检测重点关注技术控制状态。

Bot 检测范围更广。 它可以结合:

  • 浏览器自动化证据
  • 网络信誉
  • 请求模式
  • 会话历史记录
  • 账户活动
  • 行为信号
  • 商业风险

Bot 检测系统可能找不到 WebDriver 证据,但仍将流量分类为自动化。 它还可以识别批准的自动化并允许会话。

检测可识别证据。 政策决定如何处理它。

浏览器指纹

浏览器指纹收集浏览器和设备特征。 它可以将结果用于识别、一致性检查、欺诈预防、分析或跟踪。

WebDriver 检测可以使用指纹信息,但它有不同的目标。 它询问是否存在自动控制。

当会话自动化时,指纹可能看起来很普通。 不寻常的指纹可能属于真人。 更广泛的背景决定了结果的权重。

WebDriver 检测会产生误报吗?

当合法活动被视为有害的自动化时,就会出现误报。 当滥用自动化通过检查时,就会出现漏报。

误报可能会影响:

  • 质量保证和开发团队
  • 监控系统
  • 注重隐私的浏览器
  • 辅助软件
  • 远程桌面用户
  • 虚拟机
  • 企业浏览器设置
  • 新的或不常见的浏览器版本

有时技术观察是正确的,但政策决定是错误的。 系统可能会识别 WebDriver 控制,然后假设该任务是滥用的,而不检查授权或目的。

阅读公共页面可能只需要监控或合理的速率限制。 更改付款详细信息可能需要更严格的验证。 高影响力的行动应该有更严格的门槛和更好的恢复路径。

团队应该审查阻碍、挑战、用户投诉以及浏览器更新的影响。 他们还应该为批准的自动化提供稳定的访问方法。

WebDriver 检测和浏览器配置文件

浏览器配置文件将浏览器数据和设置保存在单独的环境中。 它可以保留特定工作流程的 cookie、存储、登录状态、代理设置和指纹配置。

这使得批准的自动化更容易组织。 它可以减少意外的会话重叠并帮助团队保持所有权清晰。

MoreLogin 允许用户通过本地 API 启动 浏览器配置文件。 对于本地 Selenium 工作流程,启动结果提供调试端口和匹配的 WebDriver 路径。 开发者可以使用这些详细信息将Selenium连接到运行配置文件,如官方Selenium自动化示例所示。

该配置文件无法确定另一个网站将如何对会话进行分类。 授权、任务频率、帐户历史记录和平台规则仍然会影响结果。

管理多个帐户环境的团队可以使用 多帐户浏览器 来组织可重复使用的配置文件、单独的会话并控制团队访问。 权限、日志记录、速率限制和人工审核仍然是工作流程的一部分。

要点

  • WebDriver 是用于控制浏览器的标准接口。
  • WebDriver 检测寻找自动浏览器控制的证据。
  • navigator.webdriver 是最熟悉的标准信号。
  • 浏览器、网络、会话和业务上下文都会影响最终决策。
  • 经批准的自动化应具有明确的权限、所有权和限制。
  • 浏览器配置文件组织自动化环境,但不保证网站如何对其进行分类。

WebDriver 检测常见问题解答

简单来说,WebDriver 检测是什么?

WebDriver 检测检查软件是否通过 WebDriver 控制浏览器。 网站可以读取navigator.webdriver并检查其他浏览器或会话信号。 结果可以帮助网站决定是否允许、监控、质疑、限制或阻止某项操作。

navigator.webdriver 是什么意思?

navigator.webdriver 是页面可以读取但不能写入的浏览器属性。 它由 WebDriver 标准定义,并报告自动化控制是否处于活动状态。 该属性未描述自动化的目的。

网站可以检测 Selenium WebDriver 吗?

是的。 网站可以检查标准 WebDriver 状态和自动化浏览器环境的其他标志。 检测方法因网站而异,并随着浏览器和驱动程序的更新而变化。 寻找与硒相关的证据并不能确定该活动是否获得批准。

WebDriver 和 Selenium 一样吗?

不。 WebDriver是浏览器控制的标准接口和协议。 Selenium 是一个使用 WebDriver 的自动化项目。 Selenium 还提供语言绑定和工具,帮助开发人员创建和运行浏览器自动化。

Playwright 和 Puppeteer WebDriver 是工具吗?

Playwright 和 Puppeteer 是浏览器自动化工具,但它们不是 Selenium WebDriver 的替代名称。 它们的控制方法取决于浏览器和环境。 在 Chromium 中,它们通常通过 Chrome DevTools 协议进行通信。

无头浏览器总是由 WebDriver 控制吗?

不。 无头描述了浏览器如何在没有通常可见窗口的情况下运行。 WebDriver描述了一个浏览器控制接口。 WebDriver 会话可以是有头会话,也可以是无头会话。 其他自动化工具也可以在无头模式下运行浏览器。

navigator.webdriver 是否证明访问者是恶意机器人?

不。 它表明浏览器报告活动的自动化控制。 该酒店无法确定授权、意图或业务风险。 自动化测试、监控和内部工作流程可能会产生与滥用脚本相同的价值。

浏览器配置文件是否会阻止 WebDriver 检测?

没有浏览器配置文件可以保证每个网站都得到特定的结果。 配置文件可以分离浏览器存储、设置、会话和代理配置。 每个网站仍然对其观察到的活动应用自己的检测方法和策略。

保持浏览器自动化工作流程井井有条

当控制、身份和行为被视为单独的层时,WebDriver 检测更容易理解。 浏览器可以自动化作为有效测试的一部分。 熟悉的浏览器环境也可能执行有害的操作。

对于批准的工作,从明确的任务和定义的权限开始。 将会话分开,记录有用的日志,设置合理的限制,并审查高影响力的操作。 MoreLogin 浏览器配置文件可以帮助组织该环境,而无需替换工作流程中的规则和职责。

开始使用 MoreLogin 构建

探索 API 文档,通过命令行实现自动化,连接兼容 MCP 的工具,或创建可复用的 RPA 工作流。