从 Firefox WebDriver 源代码中删除非识别功能?

Remove Bot-Identyfing Features from Firefox WebDriver Source Code?

其中一种方法 WebDriver identifies itself as a bot to external websites 是将 webdriver-active 标志 设置为 true。

SO that it is possible modify Chrome Driver source code to remove all bot-identifying attributes (see and 响应上的用户)。

是否可以通过修改 GeckodriverFirefox WebDriver 或两者的源代码来实现与 Firefox 类似的结果?我问是因为目前有 没有修改源代码。

如果我们能以某种方式从源代码中删除机器人识别功能,我们就可以防止 WebDriver 被识别为机器人而不需要

虽然无法回避 Selenium(在其当前状态下)标识自身的事实,但我们当然可以修改源代码以删除所有标识,类似于它在 Chrome 驱动程序中实现的方式?

讨论中 as suggested by different users to open the in a Hex Editor and edit the document variables replacing the cdc_ and $wdc_ string might be possible, but achiving the same with GeckoDriver未必可以。

此外,GeckoDriver目前可能不支持像 and Python libraries like 这样的命令。


GeckoDriver source code can be easily downloaded from mozilla / geckodriver page both in zip and tar.gz format. If you are on 系统您可以解压下载的文件,在...\geckodriver-0.30.0\src目录下找到不同模块的源代码:


此外,geckodriver is made available under the Mozilla Public License. GeckoDriver source code can also be found in mozilla-centraltesting/geckodriver 下。


WebDriver 规范

现在根据 WebDriver W3C Editor's Draft:

The webdriver-active flag is set to true when the user agent is under remote control. It is initially false.

所以有两种可能的方法可以将 webdriver 标志保持为 false 为:

  • 去掉readonly属性,这样运行时就可以编辑了。 (如本 中所讨论)
  • 阻止 发出用户代理受远程控制的信号。

对我来说,第二个选项看起来非常可行,因为最频繁更新的层是第二层(Selenium WebDriver.dllWebDriver.Support.dll 模块)。由于 App Studio 使用 C#.Net 版本 4.0(Selenium 4.1.0 之前(2021 年 11 月 22 日))要与 Selenium 通信,您需要下载 .Net 4.0 版本的 Selenium 模块。 current stable version4.1.0。下载 zip 文件后,将内容解压缩到文件夹并导航到 net40 子文件夹。

现在,您可以将 WebDriver.dllWebDriver.Support.dll 文件复制到 App Studio 安装的 bin 文件夹中。例如,C:\ibi\AppStudio82\bin 并进行所需的更改。

或者,您也可以下载NuGet,将NuGet包的.Net 4.0内容复制到App Studio的bin文件夹中安装并进行所需的更改。


tl;博士