使用Selenium进行浏览器自动化:指纹,可识别性和可追溯性?

时间:2013-07-15 11:53:59

标签: selenium-webdriver web-scraping browser-automation

我想使用selenium / webdriver来模拟浏览器并用它来抓取一些网站内容。即使它不是最快的方法,对我来说它有很多优点,比如执行脚本等。

对于许多网站,禁止通过自动方式访问它们,例如google或bing等搜索引擎。

对于一个工具,我需要从谷歌搜索几个关键字的估计结果。这将如下所示:模拟访问google.com的浏览器并键入关键字并抓取结果,然后在下一个关键字中稍微暂停后输入,抓取结果等等......

我的问题是:网站是否有可能认识到我正在使用selenium来模拟浏览器而不是手动使用浏览器?特别是谷歌案例给了我一些疑虑。我知道selenium部分是由google开发的,或者至少是一些为google工作的人开发的。那么留下硒的指纹还是不可能决定我自己使用浏览器还是硒模拟,即使对谷歌来说也是如此?

2 个答案:

答案 0 :(得分:3)

不,没有人能够真正看到您正在使用Selenium,而不是自己使用WebDriver手动操作浏览器。我不确定旧的Selenium RC,但它应该是一样的。以下是它的工作原理:

  1. Selenium打开一个浏览器,其中包含干净的个人资料(或您选择的个人资料)
  2. Selenium连接到浏览器,因此它可以控制它,控制它。但浏览器仍然完成大部分工作。基本上,Selenium会将用户输入替换为浏览器,但不会更多。
  3. 您可以通过阅读浏览器发送的HTTP标头的内容轻松验证这一点。

    如果您确实需要服务器识别Selenium,您可以use Browsermob-proxyadd a custom header to your requests


    所有这一切,你必须要注意一件事。虽然没有办法直接检测Selenium,但您访问的网站可能会有一些间接的线索。这些通常包括扫描几乎没有时间发出的太多请求 - 这可能是一个问题。确保您的Selenium表现得像用户一样。


    编辑2016/04:

    它可以 ,因为https://stackoverflow.com/a/33403473/2930045表明公司可以做到这一点。我的猜测 - 这只是一个猜测 - 是他们可以运行Selenium安装到浏览器中的一些JS来运行。

答案 1 :(得分:1)

迹象表明是的,网站能够对您使用Selenium进行重新定位 反例:www.stubhub.com检测并阻止我使用Selenium启动的浏览器实例,而#34;正常"手动完成浏览(不使用Selenium Web驱动程序启动的浏览器)可以解决问题。

有关其他详细信息,请参阅此stackoverflow问题 Can a website detect when you are using selenium with chromedriver?