如何在Cypress自动化测试中处理登录表单的Cloudflare验证码?
解决Cloudflare验证导致UI测试循环的问题
启用测试环境专属豁免规则
既然大部分测试已通过API完成,建议给保留的UI测试配置Cloudflare豁免规则:在测试环境中,针对测试机器IP或带有特定测试标识头(如X-Testing: true)的请求,直接跳过Cloudflare验证。这是最高效的方案,无需和反爬机制硬耗。使用Cloudflare测试专用验证令牌
Cloudflare Turnstile提供了测试模式支持:- 在Cloudflare控制台开启站点的Turnstile测试模式
- 测试代码中直接调用Cloudflare验证接口,获取测试专用令牌
- 将令牌填入表单的
cf-turnstile-response字段后提交登录,无需模拟点击验证
优化自动化工具的用户特征模拟
若必须模拟点击验证,要让测试工具(如Selenium、Playwright)尽可能接近真实用户行为:- 禁用自动化标识:比如Selenium添加
--disable-blink-features=AutomationControlled参数,Playwright用context.add_init_script移除window.navigator.webdriver标记 - 加入随机操作延迟:点击验证码前随机等待1-3秒,模拟用户操作间隔
- 模拟真实路径:先点击表单输入框,再移动鼠标到验证码区域,模拟自然的操作轨迹
- 禁用自动化标识:比如Selenium添加
限制重试并清理会话
测试循环多因重复触发更严格的验证导致。可在测试代码中设置重试次数上限,每次失败后清理浏览器缓存、Cookie,重新启动会话,避免被Cloudflare标记为可疑请求
内容的提问来源于stack exchange,提问作者George
相关产品推荐
相关产品推荐

