使用 Selenium 实现浏览器自动化:指纹、可识别性和可追溯性?

zwi*_*k86 5 browser-automation web-scraping selenium-webdriver

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

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

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

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

Pet*_*ček 3

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

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

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

如果您确实需要 Selenium 被服务器识别,您可以使用 Browsermob-proxy并向您的请求添加自定义标头


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


2016/04 编辑:

显然这可能的,因为/sf/answers/2338243141/指出公司可以做到这一点。我的猜测(这只是猜测)是他们可以运行 Selenium 安装到浏览器中的一些 JS 来进行操作。


归档时间:

查看次数:

8992 次

最近记录:

9 年,8 月 前