我正在尝试使用 python 抓取 https://www.controller.com/ ,并且由于该页面检测到使用 pandas.get_html
的机器人,并且请求使用用户代理和旋转代理,我求助于使用 selenium网络驱动程序。但是,这也被检测为带有以下消息的机器人。谁能解释我怎样才能克服这个问题?:
请原谅我们的打扰…当您浏览 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)
原文由 Alex 发布,翻译遵循 CC BY-SA 4.0 许可协议
您提到了
pandas.get_html
仅在您的问题中,而options.add_argument('headless')
仅在您的代码中提到,因此不确定您是否正在实施它们。但是,从您的代码尝试中取出最少的代码如下:我遇到过同样的问题。
当我检查 HTML DOM 时,发现该网站引用了 ---
window.onbeforeunload
上的 distil_referrer,如下所示:快照:
这清楚地表明该网站受到 Bot Management 服务提供商 Distil Networks 的保护, ChromeDriver 的导航被检测到并随后 被阻止。
蒸馏
根据文章 There Really Is Something About Distil.it… :
进一步,
参考
您可以在以下位置找到一些详细的讨论: