我想使用selenium / webdriver来模拟浏览器并用它来抓取一些网站内容。即使它不是最快的方法,对我来说它有很多优点,比如执行脚本等。
对于许多网站,禁止通过自动方式访问它们,例如google或bing等搜索引擎。
对于一个工具,我需要从谷歌搜索几个关键字的估计结果。这将如下所示:模拟访问google.com的浏览器并键入关键字并抓取结果,然后在下一个关键字中稍微暂停后输入,抓取结果等等......
我的问题是:网站是否有可能认识到我正在使用selenium来模拟浏览器而不是手动使用浏览器?特别是谷歌案例给了我一些疑虑。我知道selenium部分是由google开发的,或者至少是一些为google工作的人开发的。那么留下硒的指纹还是不可能决定我自己使用浏览器还是硒模拟,即使对谷歌来说也是如此?
答案 0 :(得分:3)
不,没有人能够真正看到您正在使用Selenium,而不是自己使用WebDriver手动操作浏览器。我不确定旧的Selenium RC,但它应该是一样的。以下是它的工作原理:
您可以通过阅读浏览器发送的HTTP标头的内容轻松验证这一点。
如果您确实需要服务器识别Selenium,您可以use Browsermob-proxy和add 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?