5

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

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

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

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

4

2 回答 2

3

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

  1. Selenium 使用干净的配置文件(或您选择的配置文件)打开浏览器
  2. Selenium 连接到浏览器,因此它可以引导、控制它。但是浏览器仍然可以完成大部分工作。基本上,Selenium 取代了用户对浏览器的输入,但仅此而已。

您可以通过阅读浏览器发送的 HTTP 标头的内容轻松验证这一点。

如果你真的需要 Selenium 被你的服务器识别,你可以使用 Browsermob-proxy在你的 requests 中添加一个自定义标头


综上所述,您必须注意一件事。虽然无法直接检测 Selenium,但您访问的网站可能会发现一些间接线索。这些通常包括扫描几乎立即发出的过多请求——这可能是您的问题。确保您的 Selenium 表现得像一个用户。


编辑 2016/04:

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

于 2013-07-15T12:26:25.353 回答
1

迹象表明是的,网站能够识别您正在使用 Selenium。
反例:www.stubhub.com 检测并阻止我使用 Selenium 启动的浏览器实例,而手动完成的“正常”浏览(不使用 Selenium Web 驱动程序启动的浏览器)没有问题。

有关更多详细信息,请参阅此 stackoverflow 问题 网站可以检测到您何时将硒与 chromedriver 一起使用?

于 2015-10-23T21:38:45.233 回答