【问题标题】:How to bypass Cloudflare hcaptcha by sloving it manually while using Selenium如何在使用 Selenium 时通过手动解决来绕过 Cloudflare 验证码
【发布时间】: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


【解决方案1】:

没有站点 url 就不可能确切地知道发生了什么,尽管根据我以前的经验,Hcaptcha 提示可能是由于站点保护而出现的,并且可能不在站点本身上。

如果它是由于站点保护而出现的,则使用您的配置文件启动浏览器。

$browser = Start-SeDriver -Browser Chrome -Arguments "--user-data-dir=C:Users$($env:username)AppDataLocalGoogleChromeUser Data"
$browser.Navigate().GoToURL("https://google.com")

....然后运行代码的剩余部分来抓取网站。

【讨论】:

    猜你喜欢
    • 2022-09-27
    • 1970-01-01
    • 2021-08-05
    • 2021-09-18
    • 2020-03-11
    • 2021-08-23
    相关资源
    最近更新 更多