动态 CAPTCHA 解决

了解无头浏览器的 CAPTCHA 检测与解决机制以及如何使用它们。

默认情况下,无头浏览器在页面加载时会自动检测并立即解决验证码。但有些网站会在后续阶段显示验证码,例如提交表单时的弹出窗口或在特定用户交互之后。

无头浏览器允许你在会话的任意时刻手动触发验证码检测和解决。要手动触发验证码解决,请执行以下代码向 window 对象发送消息:

window.postMessage({action: 'solve_captcha', type: '<captcha type>'}, '*')

支持的验证码类型包括:

  • hcaptcha

  • recaptcha

  • turnstile (Cloudflare CAPTCHA)

用法示例(Playwright / Puppeteer JavaScript):

// ...
await page.click('#form-submit');
// 现在我们知道应该会显示验证码
await page.evaluate(() => {
  window.postMessage({action: 'solve_captcha', type: 'recaptcha'}, '*')
});
// 像常规情况一样监听 `oxylabs-captcha-start` 和 `oxylabs-captcha-end` 事件
// ...

Turnstile Turnstile 验证码需要不同的方法,因为必须在其出现在屏幕上之前拦截。为此,先启动验证码检测,然后执行会触发验证码的操作:

// 我们知道下一步操作可能会触发 Turnstile 验证码
await page.evaluate(() => {
  window.postMessage({action: 'solve_captcha', type: 'turnstile'}, '*')
});
await page.click('#form-submit');
// 像常规情况一样监听 `oxylabs-captcha-start` 和 `oxylabs-captcha-end` 事件
// ...

最后更新于

这有帮助吗?