Playwright

Playwright 验证码识别工具:在 Node.js 和 Python 中绕过验证码

Playwright 测试用例和爬虫不再卡在 reCAPTCHA、Turnstile、极验 v3 或图片验证码上。从 Node.js 或 Python SDK 中 await 一个 token,或者让扩展通过验证。每次识别都在你自己的机器上运行。

Windows x64·本地运行,验证码不会离开你的电脑
  • Node.js 和 Python SDK
  • 支持所有 Playwright 引擎
  • 不按次收费
每月验证码数量40,000
40.0k250.0k
别家按次收费,每 1,000 次约 $1.40$56.00
CapSkip Bronze,统一定价$35.00
$21.00留在你的口袋里按当前用量,每月如此

Playwright 验证码识别工具补上了 Playwright 唯一无法脚本化的那一步:它的 locator 能点击、输入和自动等待,却没有一个能生成 reCAPTCHA、Cloudflare Turnstile 或扭曲文字图片所要求的答案。CapSkip 在与你的测试并行运行的桌面应用中生成答案,运行在你掌控的 Windows 电脑或 VPS 上。遇到验证的测试用例或爬取任务会继续执行,而不是一直等到超时,所有识别都包含在一份统一月费授权中。

Playwright 的两大语言阵营都得到支持。TypeScript 和 JavaScript 项目添加 capskip npm 包,在 locator 调用之间 await 它的 Promise;Python 项目在 sync_playwright 中使用 CapSkip,在 async_playwright 中使用 AsyncCapSkip,二者方法名相同。识别只是向应用发送一个普通的 HTTP 请求,从不操作浏览器,因此同一个辅助函数在 Chromium、Firefox 和 WebKit 项目中都能使用。CapSkip 支持的所有类型都向 Playwright 开放:reCAPTCHA v2、v3 和 Enterprise,Turnstile 小组件和挑战页面,极验 v3 滑块,ALTCHA、CaptchaFox、Capy、Friendly Captcha 和 AWS WAF CAPTCHA,以及数千种扭曲文字图片。

playwright-recaptcha 这类音频转写辅助工具,只在 Google 继续提供音频挑战时才有效,而一旦 IP 看起来可疑,音频挑战往往就会消失;真正的 token 并不依赖这扇门。已经接入 2Captcha、Anti-Captcha 或 CapSolver 的测试套件也可以保留这些调用,因为应用会在本地响应相同的 API。

不想手动接入 token? 启动一个加载了 CapSkip 扩展的持久化 Chromium 上下文,有头模式或新版 headless 实现均可,当你的测试等待下一个 locator 时,挑战就会在页面内被通过。扩展与正在运行的 CapSkip 应用通信,所以请保持应用开启。 阅读扩展指南

Playwright 项目能从 CapSkip 获得什么

TypeScript 和 Python 客户端

npm install capskip 提供一个带类型定义、基于 Promise 的客户端;pip install capskip 提供用于 sync_playwright 的 CapSkip 和用于 async_playwright 的 AsyncCapSkip,二者方法名相同。

一个辅助函数适配所有浏览器项目

SDK 向 CapSkip 应用发送 HTTP 请求,从不操作浏览器,所以同一个识别辅助函数可以服务你的 chromium、firefox 和 webkit 项目,无需分支处理。

用 page.evaluate 回写 token

通过 locator 读取 sitekey,连同 page.url 一起传给 recaptcha() 或 turnstile(),然后把答案写入隐藏的响应字段,如果小组件有回调函数,再触发它。

只在出现挑战时才识别

每次导航后给小组件的 locator 设一个较短的超时,只有当它解析成功时才调用识别工具。没有验证码的页面保持 Playwright 的正常速度。

每个测试 worker 都有余量

Playwright Test 在并行 worker 上运行测试用例,每个 worker 都可以同时识别。没有线程上限,授权按统一价格收费,所以增加 worker 永远不会让账单变大。

2Captcha 和 CapSolver 调用照常工作

围绕 2Captcha、Anti-Captcha 或 CapSolver 构建的测试套件无需改动。在 CapSkip 模拟器中选择该服务,并在它的 Hosts file 一行点击 Add。此后,由你自己的机器而不是付费队列来响应它的请求。

在 Playwright 中绕过验证码的三种方式

Python
from playwright.sync_api import sync_playwright
from capskip import CapSkip

solver = CapSkip(host="127.0.0.1", port=8080)

with sync_playwright() as p:
    page = p.chromium.launch().new_page()
    page.goto("https://example.com/login")

    sitekey = page.get_attribute(".g-recaptcha", "data-sitekey")
    token = solver.recaptcha(sitekey=sitekey, url=page.url)["code"]

    page.evaluate(
        "t => document.getElementById('g-recaptcha-response').innerHTML = t", token
    )
    page.click("button[type=submit]")

Python 搭配 sync_playwright:读取 reCAPTCHA sitekey,从 127.0.0.1 上的 CapSkip 获取 token,写入页面,然后提交。

在持久化 Chromium 中使用扩展

完全不需要识别代码:Playwright 启动加载了 CapSkip 扩展的 Chromium,由扩展在页面中通过小组件。同一个扩展也能在日常使用的 Chrome 和 Firefox 中运行。

Node.js、Python 和 .NET SDK

在 TypeScript 或 Python 中,每种验证码类型只需 await 一次调用;在 Playwright for .NET 下则使用 .NET 客户端。每个结果返回时都可以直接注入。

为现有代码提供本地 API

现有的 2Captcha 风格请求由应用来响应,所以旧的测试用例照常运行。Playwright for Java 或任何其他语言绑定,都可以直接调用 HTTP API。

用 Playwright 脚本对准一个真实小组件

我们的 reCAPTCHA v2 演示加载的是真正的 Google 小组件。把你的 Playwright 脚本指向它,运行识别步骤,确认表单接受了 token,再去处理你自己的目标网站。

三步设置 Playwright 验证码识别工具

  1. 把应用装在可访问的机器上

    在 Windows 上把 CapSkip 安装在测试运行器旁边,或安装在你的 CI 任务能通过网络访问的任意 VPS 上,然后启动它,让它空闲等待第一个识别请求。 下载 Windows 安装程序

  2. 用授权或试用登录

    订阅后,登录信息会通过邮件发送给你;在应用中输入即可。想先测试的话,试用提供 3 天、500 次识别,限一台设备,无需银行卡。 开始免费试用

  3. 把识别步骤接入你的测试

    安装 npm 或 pip 包,把客户端封装进一个辅助函数或 fixture,在任何可能出现挑战的地方调用它。方法名和选项详见 SDK 页面。 打开 SDK 指南

在 Playwright 测试套件中,CapSkip 与按次计费 API 对比

下表列出当识别从付费 API 转移到你自己的机器上时,Playwright 测试套件会发生哪些变化。

功能CapSkip2Captcha & API 服务
如何付费无限量识别,统一价格每月 35 美元起按每千次识别扣除额度,每次运行都在增加
识别在哪里进行在你掌控的 Windows 主机或 VPS 上在服务商的云端,或由付费的人工完成
Playwright 语言Node.js 和 Python SDK、.NET 客户端、本地 HTTP API他们的客户端库加一个 API 密钥
并行测试 worker没有线程上限,只受你的硬件限制并发限制或额外费用
为 2Captcha 编写的测试用例通过内置模拟器继续运行被锁定在该 API 及其预付余额上
图片验证码返回时间约 0.1 秒,无需经过互联网往返每次识别都有网络和排队延迟
挑战数据从不离开识别所在的机器每次都上传到外部服务

价格

不再按次付费

选择你的授权

青铜授权

$35/ 月

订阅青铜授权

授权即时激活

按月计费,可随时在账户中取消。

功能相同,机器越多,吞吐量越大。

每台机器的识别速度都受限于它自己的 CPU 和内存。机器越多,同时运行的线程就越多:白银可同时识别两倍数量的验证码,黄金则是三倍。

  • 无限解决,无每日上限
  • 无限线程,速度随硬件提升
  • 90% 至 100% 的识别准确率
  • 可直接替代主流打码服务的 API
  • 几乎兼容任何工具,无需编写代码
  • REST API、SDK 和浏览器扩展
  • 出现新的验证码类型时免费训练
  • 在你自己的机器上运行,数据不外传

上面展示的每一种验证码类型,每个授权都支持。 查看支持范围

想先试用一下?

开始 3 天免费试用,在你自己的目标上识别 500 个任意类型的验证码。

开始免费试用

如何在 Playwright 中处理验证码:分步指南

首先决定识别放在哪里。Playwright 提供两个干净的位置:在浏览器内通过 CapSkip 扩展,或在测试代码中通过 SDK。两者都支持 Node.js 和 Python,同一个代码仓库可以在合适的地方分别使用。

在浏览器内。启动一个加载扩展的持久化 Chromium 上下文,使用有头模式或 Chromium 的新版 headless 模式,因为旧版 headless shell 不支持扩展。一旦 reCAPTCHA、Turnstile 或极验 v3 小组件渲染出来,扩展就会发现它,并在你的下一个 locator 等待期间完成识别。对于图片验证码,只需在扩展中标记一次图片及其输入框。

在你的代码中。用 locator 从小组件上取出 sitekey,连同 page.url 一起发给 SDK,然后用 page.evaluate 设置网站读取的隐藏字段:reCAPTCHA 是 g-recaptcha-response,Turnstile 是 cf-turnstile-response。如果页面声明了小组件回调,就调用它,然后提交。Google 的 reCAPTCHA token 有效期大约两分钟,所以应在提交前一刻识别,而不是在测试开头。

让干净的页面保持快速。每次导航后,给小组件的 locator 设一个较短的超时,什么都没出现就跳过识别。需要登录的测试套件可以在 setup 项目中识别一次登录挑战,保存 storageState,之后的每个测试都以已登录状态开始。

从付费服务迁移过来?在运行 CapSkip 的机器上,在模拟器设置中选择 2Captcha 或 Anti-Captcha,然后点一下,让应用把该服务写入 Windows hosts 文件。你的 Playwright 调用保持原样,所有受支持的验证码都在本地识别。

相关指南: Patchright 验证码 · Camoufox 验证码 · Crawlee 验证码

如何在不编写识别代码的情况下在 Playwright 中绕过验证码?
给 Playwright 一个装有 CapSkip 扩展的持久化 Chromium 上下文,并保持 CapSkip 应用运行。扩展会发现 reCAPTCHA、Turnstile 和极验 v3 小组件并在页面上识别,你的脚本只需等待下一个元素。图片验证码需要多一步设置:把扩展指向图片和填写答案的输入框。
哪些 Playwright 浏览器可以与 CapSkip 配合使用?
走 SDK 路线时,三种都可以。识别是从你的测试进程到应用的一次 HTTP 调用,所以 Chromium、Firefox 和 WebKit 的表现完全一致。扩展路线则不同:Playwright 只能把扩展加载进 Chromium,所以无代码运行请保留一个 Chromium 项目,其他地方都用 SDK。
它适合有大量并行 worker 的 Playwright Test 吗?
适合。在 worker 作用域的 fixture 或共享辅助函数中创建客户端,每个 worker 都能同时识别。CapSkip 不设线程限制,所以吞吐量只取决于识别机器的处理能力,增加 worker 也永远不会改变你每月支付的费用。
我能在 Playwright 中识别隐形 reCAPTCHA 和 reCAPTCHA v3 吗?
能。对于隐形 v2 小组件,传入 invisible 标志;对于 v3,把版本号连同网站在自身调用中指定的 action 一起发送。无论哪种,CapSkip 都会返回 token,但 Google 仍会根据 IP 和浏览器指纹为 v3 流量打分,所以没有任何识别工具能保证分数;干净的代理最有帮助。
headless 模式会导致 CapSkip 无法工作吗?
对 SDK 来说不会,它从不让浏览器去识别任何东西,所以 CI 中的 headless 运行与有头运行表现一样。只有扩展需要注意:它需要有头浏览器或 Chromium 的新版 headless 模式,因为旧版 headless 构建不支持扩展。
如何让 Playwright 通过 Cloudflare Turnstile?
从 Turnstile 小组件读取 sitekey,用它和 page.url 调用 turnstile(),并在提交前把 token 写入 cf-turnstile-response 字段。CapSkip 也能通过 Cloudflare 整页验证;这时答案会附带识别时使用的 user agent,所以请让该浏览器上下文保持同一个 user agent。
我的 Playwright 测试套件能保留 2Captcha 或 Anti-Captcha 调用吗?
能。在 CapSkip 中开启对应的模拟器,并在它的 Hosts file 一行点击 Add。此后你的代码发往该服务的请求都由应用来响应。测试用例无需任何改动,也不消耗任何余额。请在 CapSkip 所在的机器上运行测试,因为 hosts 文件只对那台电脑生效。
单靠 playwright-recaptcha 或 stealth 补丁就够了吗?
通常撑不了多久。playwright-recaptcha 这类基于音频的包,在 Google 不再提供音频挑战时就会失效,而被标记的 IP 经常遇到这种情况。stealth 补丁和 Patchright 这类构建能减少挑战出现的频率,但从不识别挑战。喜欢的话可以继续用 stealth,剩下仍然出现的挑战交给 CapSkip。

让你的 Playwright 测试全部绿灯通过

安装 CapSkip,加一个识别步骤或装上扩展,过去卡在挑战上的测试用例就能一路跑到最后一个断言。一份统一月费套餐,无限量识别。