在 Selenium 上运行 Firefox 需要 Geckodriver,因为 Gecko 引擎与 JSON Wire 协议并不真正兼容。因此,Geckodriver 通过使用 Marionette 进行翻译,为 Selenium 和浏览器之间的所有命令提供服务,从而运行 HTTP 服务器。网站真的可以说当前的浏览器是由 Marionette 控制的吗?我已经看到,当 Firefox 自动运行时,您可以使用 localhost 和配置中的 Marionette Port 访问“Marionette Page”。Firefox 还显示机器人,它告诉用户当前浏览器是自动化的。所以内置了某种自动化检测,但是可以访问吗?
编辑:是的,确实,不同的浏览器暴露了不同的东西,但是 javascript 检测不再起作用。它能够检测到 Selenium RC,因为它必须在浏览器中注入一些 Javascript 代码才能工作。从 Selenium 2.0 开始,Webdriver 直接与浏览器通信,所以简单的 Javascript-Variable-Detection 将不起作用。我还发现并解释了其中一些暴露,但网站真的可以以某种方式访问它们吗?作为暴露的另一个区别:Chrome 将 navigator.webdriver 属性设置为 true,但 firefox 没有。