【问题标题】:Remove Bot-Identyfing Features from Firefox WebDriver Source Code?从 Firefox WebDriver 源代码中删除不可识别的功能?
【发布时间】:2022-01-03 02:20:48
【问题描述】:

WebDriveridentifies itself as a bot to external websites 的一种方法是将 webdriver-active 标志设置为 true。

SO suggested 上的用户认为可以修改 Chrome Driver 源代码以删除所有机器人识别属性(请参阅 thisthis 响应)。

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

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

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

【问题讨论】:

  • 源代码在这里:github.com/mozilla/geckodriver/releases(您可能还想更改原型名称...)
  • Firefox 可能会设置标志,但是......它会知道何时使用 Marionette,这可能会自行设置标志。我真的不知道......但无论如何,任何机器人检测都会比仅仅依靠这个更聪明。他们至少还会检测到脚本注入/挂钩。 (但必须针对特定于机器人的东西,因此不会标记附加组件/扩展......)

标签: java selenium selenium-webdriver firefox webdriver


【解决方案1】:

在讨论Can a website detect when you are using Selenium with chromedriver? 中,根据不同用户的建议打开Hex Editor 中的ChromeDriver 并编辑文档变量 替换cdc_$wdc_ 字符串可能是可能的,但可能无法使用GeckoDriver 实现相同的目标。

此外,GeckoDriver 目前可能不支持像 execute_cdp_cmd() 这样的命令和像 selenium-stealth 这样的 Python 库。


GeckoDriver 源代码可以从mozilla / geckodriver 页面轻松下载ziptar.gz 格式。如果你是系统,你可以解压下载的文件,在...\geckodriver-0.30.0\src目录下找到不同模块的源代码:


此外,geckodriverMozilla Public License 下可用。 GeckoDriver 源代码也可以在 testing/geckodriver 下的 mozilla-central 中找到。


WebDriver 规范

现在根据WebDriver W3C Editor's Draft:

当用户代理处于远程控制之下时,webdriver-active 标志 设置为 true。最初是false

因此有两种可能的方法可以将webdriver 标记为false 为:

  • 删除readonly属性,所以可以在运行时进行编辑。 (如answer 中所述)
  • 阻止WebDriver 发出用户代理处于远程控制之下的信号。

对我来说,第二个选项看起来非常可行,因为最频繁更新的层是第二层(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;博士

【讨论】:

  • 感谢您的回复。扼杀 WebDriver 的第二个选项是否也只能在 .net 框架或 Java 中使用?因为我使用的是 Selenium 的 Java 版本。谢谢。
猜你喜欢
  • 1970-01-01
  • 2022-12-10
  • 2023-03-23
  • 1970-01-01
  • 2011-05-23
  • 2015-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多