【发布时间】:2022-11-21 04:26:10
【问题描述】:
我想构建一个半自动解决方案来抓取受 Cloudflare 的 hcaptcha 保护的网站。我认为我可以在验证码出现时手动解决它,然后让我的抓取工具抓取网站一段时间,直到必须解决另一个验证码。
为了尝试我的解决方案,我使用 Selenium 打开 url,同时尝试将其屏蔽为普通用户:
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
from selenium_stealth import stealth
options = webdriver.ChromeOptions()
options.add_argument("start-maximized")
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
s=Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=s, options=options)
stealth(driver,
languages=["en-US", "en"],
vendor="Google Inc.",
platform="Win32",
webgl_vendor="Intel Inc.",
renderer="Intel Iris OpenGL Engine",
fix_hairline=True,
)
driver.get(url_to_scrape) # Fill the captcha manually
我想在解决验证码后访问实际网站,这样我就可以从中抓取一些信息。问题是,即使我解决了验证码问题,Cloudflare 也不让我看到该网站,它只是用验证码(响应 403)刷新网站并让我解决另一个问题,然后解决另一个问题,然后再解决另一个问题,等等。
我究竟做错了什么?我解决验证码应该没有任何问题,所以它必须以某种方式将 Selenium 检测为机器人。我认为使用上面使用的 sn-p 网站并没有看到 Selenium 与使用 Chrome 网络浏览器的普通用户有任何不同,但我肯定遗漏了一些东西。
【问题讨论】:
-
那只是 cloudflare 机器人检测按预期工作,我想您尝试抓取的网站的 TOS 不允许抓取。
-
@Maxime 不是,TOS 禁止某些类型的恶意抓取工具,但不包括我的。尽管如此,即使我没有被 TOS 或 robots.txt 禁止,我也无法让我的抓取工具工作。
-
发布 URL 以调试您的代码。
标签: python selenium web-scraping cloudflare hcaptcha