使用Firefox+Selenium无法绕过Cloudflare人机验证CAPTCHA
问题描述
我尝试用Selenium结合Firefox自动化ChatGPT的登录流程,但卡在了Cloudflare的“Verify you are human”CAPTCHA验证页面。试过伪造User Agent、禁用WebDriver标志等多种配置,都绕不过这个验证。
当前使用的代码
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from time import sleep from fake_useragent import UserAgent MAIL = "CHATGPTEMAIL" PASSWORD = "CHATGPTPASSWORD" options = webdriver.FirefoxOptions() options.add_argument("--log-level=3") options.add_argument(f"user-agent={UserAgent().random}") options.add_argument("user-data-dir=./") options.add_argument("--disable-blink-features=AutomationControlled") options.set_preference("dom.webdriver.enabled", False) # Disable WebDriver flag options.set_preference("useAutomationExtension", False) # Avoid using automation extension options.set_preference("general.useragent.override", "YourRandomUserAgentHere") # Custom User-Agent options.add_argument("--headless") # Optional: run in headless mode browser = webdriver.Firefox(options=options) browser.get('https://chat.openai.com/auth/login') sleep(4) # Try clicking the first button to proceed with login inputElements = browser.find_elements(By.TAG_NAME, "button") inputElements[0].click() sleep(3) # Enter email mail = browser.find_elements(By.NAME,"email")[0] mail.send_keys(MAIL) # Click the next button btn = browser.find_elements(By.TAG_NAME, "button")[0] btn.click() # Enter password password = browser.find_elements(By.NAME,"password")[0] password.send_keys(PASSWORD) sleep(2) browser.quit()
已尝试的方法
- 使用fake_useragent库更换不同的User Agent
- 禁用
dom.webdriver.enabled和useAutomationExtension标志 - 以无头模式运行Firefox
- 直接添加自定义User Agent字符串
疑问
- 是否存在使用Selenium绕过Cloudflare CAPTCHA的可行方案?
- 有人成功使用Selenium自动化ChatGPT或其他受Cloudflare保护站点的登录流程吗?
- 有没有针对Firefox的特定配置可以解决此问题?
- 任何关于绕过或处理该CAPTCHA的建议都将非常感谢!
解答
1. Selenium绕过Cloudflare CAPTCHA的可行方案
直接用Selenium原生功能绕过Cloudflare CAPTCHA几乎不可能——Cloudflare的检测机制不仅看WebDriver标志,还会分析鼠标移动轨迹、点击节奏、页面交互模式等自动化特征,单纯改User Agent或禁用几个配置项很难骗过它的高级检测。
可行的间接处理方式:
- 手动介入验证:在代码中暂停,让用户手动完成CAPTCHA验证后再继续执行。比如在打开登录页后添加
input("完成CAPTCHA验证后按回车继续..."),等用户操作完毕再往下执行后续步骤。 - 复用已登录缓存:先手动打开Firefox登录ChatGPT并完成所有验证,然后将Selenium的
user-data-dir指定到这个已登录的浏览器配置目录,启动时会直接复用登录状态,跳过验证和登录流程。
2. 成功用Selenium自动化ChatGPT登录的情况
确实有不少人实现,但大多不是纯靠Selenium绕过CAPTCHA,而是结合了复用已登录缓存的方式;还有部分人使用undetected-chromedriver这类修改过的Chrome驱动(它能隐藏更多自动化特征),不过该工具对Firefox的支持不如Chrome。另外,使用第三方CAPTCHA破解平台虽然能绕过,但这类行为可能违反Cloudflare和OpenAI的服务条款,不推荐。
3. Firefox的特定配置优化
除了你已尝试的配置,还可以试试这些:
- 关闭无头模式:无头模式本身就是Cloudflare重点检测的特征,换成正常窗口模式能降低被检测概率。
- 指定日常使用的配置文件:不要用临时的
user-data-dir=./,而是指定你日常登录ChatGPT的Firefox配置文件路径(比如Windows下的C:\Users\<用户名>\AppData\Roaming\Mozilla\Firefox\Profiles\<配置文件夹>),该配置文件有正常的浏览行为记录,更容易通过检测。 - 添加额外偏好设置:
options.set_preference("browser.sessionstore.resume_from_crash", False):避免会话恢复时暴露自动化痕迹options.set_preference("privacy.resistFingerprinting", True):减少浏览器指纹特征,但可能影响部分页面功能
4. 其他处理CAPTCHA的建议
- 模拟人类操作节奏:不要用固定的
sleep时长,换成随机间隔(比如sleep(random.uniform(2,5))),点击、输入操作也不要过于机械,尽量模拟真实用户的交互速度。 - 优先使用官方API:如果只是想调用ChatGPT的功能,OpenAI提供了官方API,完全不需要自动化浏览器,这是最稳定、合规的方案,比Selenium自动化登录靠谱得多。
- 注意合规风险:无论是使用破解服务还是过度模拟人类操作,都可能违反OpenAI和Cloudflare的服务条款,导致账号被封禁,建议优先选择官方API或手动登录复用缓存的方式。
内容的提问来源于stack exchange,提问作者Ferda-Ozdemir-Sonmez
相关产品推荐
相关产品推荐

