gpt4 book ai didi

python-3.x - Cloudflare 和 Chromedriver - cloudflare 区分 chromedriver 和正版 chrome?

转载 作者:行者123 更新时间:2023-12-03 18:57:17 29 4
gpt4 key购买 nike

我想用 chromedriver 从 fanfiction.net 上抓取一些故事。
我尝试以下方法:

from selenium import webdriver
import time

path = 'D:\chromedriver\chromedriver.exe'

browser = webdriver.Chrome(path)
url1 = 'https://www.fanfiction.net/s/8832472'
url2 = 'https://www.fanfiction.net/s/5218118'

browser.get(url1)
time.sleep(5)
browser.get(url2)
第一个链接打开(有时我必须等待 5 秒)。当我想加载第二个 url 时,cloudflare 介入并希望我解决验证码 - 这是无法解决的,至少 cloudflare 无法识别这一点。
如果我在 chromedriver 中手动输入链接(所以在 GUI 中),也会发生这种情况。但是,如果我在普通 chrome 中做同样的事情,一切都会正常运行(我什至没有得到第一个链接的等待时间)——即使在私有(private)模式下并且所有 cookie 都已删除。我可以在几台机器上重现这个。
现在我的问题是:根据我的直觉,chromedriver 只是允许控制的普通 chrome 浏览器。与普通 chrome 有什么区别,Cloudflare 如何区分两者,如何将我的 chromedriver 屏蔽为普通 chrome? (我不打算在很短的时间内加载很多页面,所以它不应该看起来像一个机器人)。
我希望我的问题很清楚

最佳答案

此错误消息...
Checking your browser before accessing
...意味着 Cloudflare已将您对网站的请求检测为自动机器人,随后拒绝您访问该应用程序。

解决方案
在这些情况下,一个潜在的解决方案是使用 undetected-chromedriver初始化 Chrome 浏览上下文。
undetected-chromedriver是一个优化的 Selenium Chromedriver 补丁,它不会触发像 Distill Network/Imperva/DataDome/Botprotect.io 这样的反僵尸服务。它会自动下载驱动程序二进制文件并对其进行修补。

  • 代码块:
    import undetected_chromedriver as uc
    from selenium import webdriver
    import time

    options = webdriver.ChromeOptions()
    options.add_argument("start-maximized")
    driver = uc.Chrome(options=options)
    url1 = 'https://www.fanfiction.net/s/8832472'
    url2 = 'https://www.fanfiction.net/s/5218118'
    driver.get(url1)
    time.sleep(5)
    driver.get(url2)

  • 引用
    您可以在以下位置找到一些相关的详细讨论:
  • Selenium app redirect to Cloudflare page when hosted on Heroku
  • How to bypass being rate limited ..HTML Error 1015 using Python
  • 关于python-3.x - Cloudflare 和 Chromedriver - cloudflare 区分 chromedriver 和正版 chrome?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65636102/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com