You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Undetected-chromedriver遭Cloudflare拦截问题求助

解决AWS Ubuntu容器中爬取Carrefour.fr被Cloudflare拦截的问题

针对你在AWS Ubuntu容器中使用undetected_chromedriver爬取Carrefour.fr时触发Cloudflare验证的问题,结合本地正常、容器异常的差异,给出以下针对性解决方案:

1. 修复Headless模式配置

普通的headless=True容易被Cloudflare检测,改用Chrome官方推荐的新Headless模式,同时指定合理的窗口尺寸(容器默认窗口过小会被标记为异常):

options.add_argument("--headless=new")
options.add_argument("--window-size=1920,1080")  # 模拟桌面端窗口大小

2. 补充容器环境必需的Chrome参数

Ubuntu容器环境存在资源限制和沙箱问题,添加以下参数避免异常:

options.add_argument("--disable-dev-shm-usage")  # 解决容器/dev/shm空间不足问题
options.add_argument("--disable-gpu")  # 禁用GPU渲染(Headless模式无需)
options.add_argument("--disable-blink-features=AutomationControlled")  # 禁用自动化检测标志

3. 固定Chrome User-Agent,避免版本不匹配

你指定了Chrome版本113,但fake_useragent生成的UA可能与该版本不匹配,直接使用对应版本的UA字符串:

# 替换原UA生成代码,使用Chrome 113的标准UA
options.add_argument('User-Agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36')

4. 确保容器中Chrome版本与代码指定版本一致

代码中指定了version_main=113,需在Ubuntu容器中安装对应版本的Chrome浏览器:

# 安装Chrome 113的命令示例
wget https://dl.google.com/linux/chrome/deb/pool/main/g/google-chrome-stable/google-chrome-stable_113.0.5672.126-1_amd64.deb
dpkg -i google-chrome-stable_113.0.5672.126-1_amd64.deb
apt-get install -f -y

如果容器中Chrome路径非默认,需在options中指定:

options.binary_location = "/usr/bin/google-chrome-stable"

5. 优化代理配置与验证

  • 确保代理IP为法国本土IP(Carrefour.fr针对法国用户,异地IP易触发验证)
  • 检查代理是否为独享IP,共享IP大概率已被Cloudflare标记
  • 验证seleniumwire代理配置是否生效,避免真实IP泄露:
# 可以在请求后打印代理信息确认
for request in driver.requests:
    if request.response:
        print("代理IP:", request.proxy)

6. 添加等待逻辑,确保Cloudflare验证完成

容器中网络延迟可能导致验证未完成就获取页面,添加显式等待:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

driver.get(url)
# 等待页面加载完成(示例:等待商品列表元素出现,需根据目标页面调整)
WebDriverWait(driver, 30).until(
    EC.presence_of_element_located((By.CLASS_NAME, "product-card"))
)
print(driver.page_source)

7. 更新undetected_chromedriver版本

确保容器中安装的undetected_chromedriver版本与Chrome 113兼容,执行更新:

pip install --upgrade undetected-chromedriver

内容的提问来源于stack exchange,提问作者Bernard Van Der Vyver

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 17:02:34