本指南介绍如何在 Cypress 中处理 CAPTCHA包括有效的绕过方法以及当 CAPTCHA 仍然出现时的应对措施帮助实现流畅的浏览器自动化。什么是 CAPTCHA能否自动化CAPTCHA 与 Cypress一段“艰难”的关系如何在 Cypress 中处理 CAPTCHA方法一禁用 CAPTCHA方法二自动化与 CAPTCHA 的交互方法三集成反检测浏览器这些 Cypress 方案都不奏效时该怎么办什么是 CAPTCHA能否自动化CAPTCHA全称为 Completely Automated Public Turing test to tell Computers and Humans Apart是一种安全机制用于区分真实用户与自动化脚本。它会给出对人类较易、对机器较难的挑战常被放置在网页关键位置以阻止机器行为。常见 CAPTCHA 类型常见的提供商包括 Google reCAPTCHA、hCaptcha 和 BotDetect。CAPTCHA 通常属于以下一种或多种类型文本型 CAPTCHA要求用户输入一串扭曲的字母或数字。图片型 CAPTCHA要求用户在图片网格中识别特定物体。音频型 CAPTCHA要求用户根据音频片段输入听到的词语。拼图型 CAPTCHA要求用户完成简单挑战如点击特定对象或回答问题。CAPTCHA 的使用方式CAPTCHA 常被集成在关键用户流程如表单提交中以防止自动化完成操作.its(0.contentDocument).should(dd.getElementById(recaptcha-token).click())需要注意的是CAPTCHA 已足够智能能区分机器人点击与人类点击因此此变通方法在大多数情况下并不可靠。今日可行的方案明日可能失效。欲了解最新做法可查看该方案来源的 GitHub gist。方法三集成反检测浏览器前两种绕过方法依赖假设较多。更高效的方案是配置 Cypress 去控制反检测浏览器。默认情况下Cypress 可使用本地已安装的以下浏览器之一见列表ChromeChrome BetaChrome CanaryChromiumEdgeEdge BetaEdge CanaryEdge DevElectronFirefoxFirefox Developer EditionFirefox NightlyWebKit试验性它也支持任意基于 Chromium 的浏览器。请选择其中一个基于 Chromium 的浏览器并安装。然后指示 Cypress 使用指定浏览器启动脚本cypressopen--browserpath_to_your_browser其中path_to_your_browser为包含您的反检测浏览器可执行文件的文件夹绝对路径。同样您可以在cypress.config.js中添加如下代码让 Cypress UI 将该反检测浏览器显示为可选择项import{defineConfig}fromcypressexportdefaultdefineConfig({e2e:{setupNodeEvents(on,config){constantidetectBrowser{name:ANTIDETECT_BROWSER_NAME,channel:stable,family:chromium,displayName:ANTIDETECT_BROWSER_DISPLAY_NAME,version,path:path_to_your_browser,majorVersion,}return{browsers:config.browsers.concat(antidetectBrowser),}},},})注意让 Cypress 在反检测浏览器中运行自动化代码只能降低被识别为机器人的概率。如果反机器人系统识别出您在运行自动化它仍可能强制触发 CAPTCHA 来阻断。这些 Cypress 方案都不奏效时该怎么办上述三种方法各有明显局限方法一要求您能访问目标站点代码对外部在线站点不适用。方法二仅对非常简单的 CAPTCHA 有效且可靠性不足。方法三意味着额外成本只是降低触发 CAPTCHA 的概率不能真正“解题”。尽管都值得尝试但它们都无法让您在 Cypress 自动化中以编程方式稳定地绕过 CAPTCHA。如果您需要真正的 Cypress CAPTCHA 处理方案试试 Bright Data 的网页抓取解决方案。其具备专用 CAPTCHA 解决功能可自动处理 reCAPTCHA、hCaptcha、px_captcha、SimpleCaptcha、GeeTest CAPTCHA、FunCaptcha、Cloudflare Turnstile、AWS WAF Captcha、KeyCAPTCHA 等多种类型。现在即可开启免费试用。