【问题标题】:Can a website detect when you are using selenium with geckodriver?网站可以检测到您何时将 selenium 与 geckodriver 一起使用?
【发布时间】:2017-09-30 20:55:26
【问题描述】:

是否可以检测由 Selenium 和 geckodriver 控制的 firefox 浏览器实例?

请注意有一个corresponding answer for chromedriver,但我想知道这对于 firefox/geckodriver 是否可行。

【问题讨论】:

  • 链接问题的答案是肯定的,它只提供 Chromedriver 的解决方法细节。
  • 答案是特定于 Chromedriver 的。它讨论的$cdc_$wdc_ 方法是chromedriver 的工件,一般不是Selenium 的工件,不适用于geckodriver。
  • 不,不是。详细信息特定于 Chromedriver,但答案从一般性开始并回答您的问题,这也是一般性的。您的问题是,“网站可以检测到您何时将 selenium 与 geckodriver 一起使用?”答案是肯定的,Basically the way the selenium detection works, is that they test for pre-defined javascript variables which appear when running with selenium.Of course, all of this depends on which browser you are on. All the different browsers expose different things.
  • 它正在回答一个不同的问题,但该问题的答案表明所有浏览器的答案都是肯定的,并继续详细说明这可能如何适用于 Chrome。你没看到吗?我引用了上面的相关部分。
  • 嗨,杰夫,我理解你,但你是不必要的迂腐和无益的。下面的实际答案很有帮助。

标签: selenium firefox selenium-firefoxdriver geckodriver


【解决方案1】:

是的,您可以通过 JavaScript 中的简单检查来检测 geckodriver 控制的硒

var runningSelenium = !("showModalDialog" in window);

【讨论】:

  • 这似乎不准确。将 selenium 与 geckodriver 一起使用时,我得到了真正的价值,但在所有正常运行的平台上,Firefox 和 Chrome 以及 Windows 上的 Edge 也得到了真正的价值。据我所知,唯一返回 false 的浏览器是 Safari 和 Internet Explorer。
  • 我在 Mac 上测试过,所以不确定它是否是特定于平台的
【解决方案2】:

正如其他人所指出的,网站可以通过多种不同的方式识别并检测您正在运行的浏览器是否已由 selenium 自动化。不过幸运的是,一些检测机制非常简单,只需寻找一堆环境默认值,例如屏幕尺寸等。

例如,当使用 Selenium 测试 Dropbox 等应用程序的 OAUTH 注册序列时,只需将屏幕设置为非默认值(并偏移浏览器窗口以模拟任务栏)即可避免 CAPTCHA 阶段:

@@headless = Headless.new( dimensions: '1600x1200x24' )
@@headless.start
browser = Watir::Browser.new :firefox
width = browser.execute_script( 'return screen.width;' )
height = browser.execute_script( 'return screen.height;' ) - 95
browser.driver.manage.window.resize_to( width, height )
browser.driver.manage.window.move_to( 0,0 ) 

【讨论】:

    猜你喜欢
    • 2019-05-22
    • 2012-07-13
    • 2010-10-16
    • 1970-01-01
    相关资源
    最近更新 更多