网页正在使用Chromdriver作为漫游器来检测Selenium Webdriver

时间:2019-03-04 13:20:36

标签: python selenium selenium-webdriver webdriver bots

我正在尝试使用python抓取https://www.controller.com/,并且由于该页面使用pandas.get_html检测到了漫游器,并使用了用户代理和旋转代理进行了请求,因此我不得不使用selenium webdriver。但是,还会通过以下消息将其检测为机器人。谁能解释我该如何克服呢?:

  

原谅我们的打扰...   当您浏览www.controller.com时,有关您的浏览器的某些信息使我们认为您是机器人。发生这种情况有几个原因:   您是超级用户,以超人的速度浏览此网站。   您已在网络浏览器中禁用了JavaScript。   第三方浏览器插件(例如Ghostery或NoScript)阻止了JavaScript的运行。此支持文章中提供了更多信息。   要请求取消阻止,请填写以下表格,我们将尽快对其进行审核。

这是我的代码:

from selenium import webdriver
import requests
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
options = webdriver.ChromeOptions()
options = webdriver.ChromeOptions()
options.add_argument("start-maximized")
options.add_argument("disable-infobars")
options.add_argument("--disable-extensions")
#options.add_argument('headless')
driver = webdriver.Chrome(chrome_options=options)
driver.get('https://www.controller.com/')
driver.implicitly_wait(30)

2 个答案:

答案 0 :(得分:1)

您仅在问题中提到了pandas.get_html,在代码中仅提到了options.add_argument('headless'),因此不确定是否要实现它们。但是,尝试从代码中取出最少的代码,如下所示:

  • 代码块:

    from selenium import webdriver
    
    options = webdriver.ChromeOptions()
    options.add_argument("start-maximized")
    options.add_argument("disable-infobars")
    options.add_argument("--disable-extensions")
    driver = webdriver.Chrome(chrome_options=options, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
    driver.get('https://www.controller.com/')
    print(driver.title)
    

我遇到了同样的问题。

  • 浏览器快照:

controller_com

当我检查HTML DOM时,发现该网站在 window.onbeforeunload 上引用了 distil_referrer ,如下所示:

<script type="text/javascript" id="">
    window.onbeforeunload=function(a){"undefined"!==typeof sessionStorage&&sessionStorage.removeItem("distil_referrer")};
</script>

快照:

onbeforeunload

这清楚地表明该网站受 Bot Management 服务提供商Distil Networks的保护,并且检测到 ChromeDriver 的导航,随后将其阻止


Distil

根据文章There Really Is Something About Distil.it...

  

Distil通过观察站点行为并识别刮板特有的模式来保护站点免受自动内容抓取机器人的攻击。当Distil在一个站点上识别出一个恶意bot时,它将创建一个列入黑名单的行为配置文件,并将其部署到所有客户。像漫游器防火墙一样,Distil会检测模式并做出反应。

进一步

  

"One pattern with **Selenium** was automating the theft of Web content",Distil首席执行官拉米·埃塞伊(Rami Essai)在上周的一次采访中表示。 "Even though they can create new bots, we figured out a way to identify Selenium the a tool they're using, so we're blocking Selenium no matter how many times they iterate on that bot. We're doing that now with Python and a lot of different technologies. Once we see a pattern emerge from one type of bot, then we work to reverse engineer the technology they use and identify it as malicious".


参考

您可以在以下位置找到一些详细的讨论:

答案 1 :(得分:-1)

Distil可以通过使用html5 canvas进行指纹识别来检测您是否没有头。他们还会检查浏览器插件和用户代理之类的内容。硒设置了一些也可以检测到的浏览器标志。