如何使用Selenium绕过Cloudflare验证?
解决Selenium自动化登录时的Cloudflare验证问题
优化隐身配置
你当前使用的selenium_stealth配置可以更贴近真实浏览器,调整参数如下:
stealth(driver, languages=["pt-BR", "pt"], # 匹配目标网站的巴西葡萄牙语环境 vendor="Google Inc.", platform="Win32", webgl_vendor="Intel Inc.", # 替换为常见硬件厂商,减少特征特殊性 renderer="Intel Iris OpenGL Engine", fix_hairline=True, run_on_insecure_origins=True, disable_evasions=False, # 启用全部反检测规避策略 )
补充浏览器伪装参数
在chrome_options中添加更多配置,进一步消除自动化特征:
chrome_options.add_argument("--start-maximized") # 最大化窗口,模拟真实用户操作习惯 chrome_options.add_argument("--disable-extensions") chrome_options.add_argument("--disable-plugins") chrome_options.add_argument("--disable-popup-blocking") chrome_options.add_argument("--no-sandbox") chrome_options.add_argument("--disable-dev-shm-usage") chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"]) chrome_options.add_experimental_option('useAutomationExtension', False) # 模拟真实Chrome浏览器的User-Agent chrome_options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36")
调整验证处理逻辑
- 智能等待验证完成:替换固定
sleep,用显式等待检测Cloudflare验证元素消失:
driver.get('https://oikos.corbee.com.br/') # 等待Cloudflare验证界面消失,超时30秒 try: WebDriverWait(driver, 30).until( EC.invisibility_of_element_located((By.CSS_SELECTOR, ".cf-turnstile-wrapper")) ) except: # 自动等待超时后,提示手动完成验证 input("请完成页面上的Cloudflare验证,按回车继续...")
- 修正登录流程顺序:确保验证完成后再切换iframe并操作登录框,替换原代码中
sleep(5)及后续的固定等待逻辑。
额外实用建议
- 随机操作间隔:用
random.uniform(1, 3)代替固定sleep,模拟真实用户的操作节奏,降低被检测概率 - 静态住宅代理:如果IP被Cloudflare标记,使用静态住宅代理更换访问IP,避免数据中心IP被拦截
- 尝试专用工具:若以上方法无效,可改用
undetected-chromedriver——这是针对反爬机制优化的Selenium分支,能更高效绕过Cloudflare检测
内容的提问来源于stack exchange,提问作者Davi Castaldini
相关产品推荐
相关产品推荐

