Undetected Chromedriver突遭Cloudflare验证拦截,爬虫全部失效求助
问题判断与解决方案
首先可以通过换IP测试区分问题原因:如果切换到新IP(比如手机热点)后旧爬虫能正常通过验证,说明你的原有IP被Cloudflare封禁;如果依旧陷入无限验证循环,大概率是Cloudflare更新了反爬检测机制。
以下是针对性解决方法:
一、针对Cloudflare检测机制的优化
启用核心反自动化配置
你注释掉的--disable-blink-features=AutomationControlled必须开启,同时补充更多反检测参数,进一步降低被识别的概率:options.add_argument('--disable-blink-features=AutomationControlled') options.add_argument('--no-sandbox') options.add_argument('--disable-dev-shm-usage') options.add_argument('--disable-gpu') options.add_experimental_option("excludeSwitches", ["enable-automation"]) options.add_experimental_option('useAutomationExtension', False)修复无头模式参数
代码里的--head是错误参数,Chrome 112+版本推荐使用更接近真实浏览器的新无头模式:options.add_argument('--headless=new')若使用旧版Chrome,替换为
--headless=chrome。添加真实用户代理
手动设置当前Chrome稳定版的User-Agent,避免默认UA被识别:options.add_argument('user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36')模拟真实用户行为
Cloudflare会检测页面加载后的静态等待行为,添加随机延迟和简单交互:import time import random driver.get("https://mangasehri.com/manga/?m_orderby=alphabet") # 随机延迟2-5秒 time.sleep(random.uniform(2,5)) # 模拟滚动页面 driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") time.sleep(random.uniform(1,3))更新undetected-chromedriver
该库会跟进Cloudflare的检测规则更新,确保使用最新版本:pip install --upgrade undetected-chromedriver
二、针对IP封禁的处理
如果换IP后恢复正常,说明原有IP被拉黑,可通过以下方式解决:
- 使用高匿代理IP池,每次请求切换不同IP;
- 严格控制爬取频率,单IP下每个请求间隔3-10秒;
- 若为家庭动态IP,重启路由器即可更换IP。
额外注意事项
- 避免同时运行多个爬虫实例,减少短时间内的IP请求量;
- 检查爬虫是否存在过快跳转、重复请求同一URL等异常行为,这类操作会快速触发Cloudflare防护。
内容的提问来源于stack exchange,提问作者PlatinMavi
相关产品推荐
相关产品推荐

