在用Chromeriver测试Selenium,我注意到有些页面可以检测到您正在使用Selenium,尽管根本没有自动化。即使我只是在手动浏览时,只要通过Selenium使用Chrome,我也经常会看到一个页面,上面说检测到了可疑的活动。我检查了我的用户代理和VMLogin中文版浏览器指纹,它们都与普通的铬浏览器完全相同。
当我以普通浏览这些站点时,一切都很好,但是使用Selenium的那一刻我就被检测到了。
理论上,自动化操作Chrome在任何Web服务器上看起来都应该完全相同,但不知怎么的,它们可以检测到。
使用selenium模拟浏览器进行数据抓取无疑是当下最通用的数据采集方案,它通吃各种数据加载方式,能够绕过客户JS加密,绕过爬虫检测,绕过签名机制。它的应用,使得许多网站的反采集策略形同虚设。由于selenium不会在HTTP请求数据中留下指纹,因此无法被网站直接识别和拦截。
这是不是就意味着selenium真的就无法被网站屏蔽了呢?非也。selenium在运行的时候会暴露出一些预定义的Javascript变量(特征字符串),例如"window.navigator.webdriver",在非selenium环境下其值为undefined,而在selenium环境下,其值为true(如下图所示为selenium驱动下Chrome控制台打印出的值)。
我所要做的一切是为了确保 c d c 不 再 以 文 档 变 量 的 形 式 存 在 , 而 v o i l a ( 下 载