Node.js 验证码识别:适用于 Puppeteer、Playwright 和原生 JavaScript
从 npm 添加 capskip,await 拿到答案,继续往下走。这个带类型定义、零依赖的客户端让你自己硬件上的应用来识别 reCAPTCHA、文字图片、Turnstile 和极验 v3,从不按次计费。
- npm install capskip
- 自带 TypeScript 类型
- 识别不计次
const solver = new CapSkip();
const token = await solver.recaptcha({
sitekey: '6Le-wvkS…',
url: 'example.com/signup'
});03AGdBq27…0.12 秒 · $0.00运行 npm install capskip,你的项目就有了一个 Node.js 验证码识别工具:交给它一个 reCAPTCHA、一个 Cloudflare Turnstile 小组件、一个极验 v3 滑块或一张扭曲的文字图片,Promise 就会 resolve 出 token 或识别出的字符。实际识别在 CapSkip 桌面应用中进行,你在 Windows 上运行它(家用电脑或 VPS 均可);这个包本身只是一个面向 Node 18 及更高版本的轻量 HTTP 客户端,零运行时依赖。
由于每个方法都返回 Promise,这个客户端读起来和你其余的异步代码别无二致。你可以在 Puppeteer 和 Playwright 代码、基于 fetch 的爬虫或队列 worker 中 await 它,也可以一次发起几十个识别,再用 Promise.all 收集结果。包内自带 TypeScript 类型定义,所以这款 JavaScript 验证码识别工具同样适用于 CommonJS、ESM 和带类型的项目。
并行不额外收费。没有按次计费,也没有按密钥的速率限制,所以一批两百个识别和单次调用的费用相同;上限只取决于识别机器有多少 CPU 和内存。套餐每月 35 美元起(一台设备),每个档位都无限量识别。
你的 2Captcha 客户端可以继续用。 如果 CapSkip 所在机器上的某个 Node 项目已经在用 2Captcha 或 Anti-Captcha 库,只需在应用中启用对应服务的模拟器,再点击 hosts 文件旁的添加按钮。之后它的请求都在本地完成,无需充值余额,一行代码都不用改。
为什么这款 npm 验证码识别工具适合异步 Node 代码
await 一次识别,或一千次
每个方法都返回 Promise。你可以直接 await 单个结果,也可以用 Promise.all 并发展开;如果一个挑战失败不应让其余结果一起被 reject,就改用 Promise.allSettled。
为 TypeScript 项目提供类型
SolveResult 和所有选项对象的类型定义都随包附带,无需安装 @types,编辑器即可自动补全。ES 模块通过 Node 的互操作机制加载 CommonJS 构建。
lockfile 里只多一行
该客户端只基于 Node 18 及更高版本的核心 http 和 https 模块构建,添加它不会往 node_modules 里拉进任何其他依赖。
每次 token 识别都可配代理
为 token 识别提供代理的类型和 URI,挑战就会从之后提交表单的同一个 IP 完成。支持 SOCKS5 和 SOCKS5h,也支持 HTTP 和 HTTPS。
可与任何无头浏览器搭配
客户端从不操控浏览器。由 Puppeteer 或 Playwright 读取小组件,CapSkip 返回答案,再用一次 page.evaluate 调用把它写入表单需要的位置。
批量更大,账单不变
不按次收费,也不按密钥限速:并行识别只在识别电脑的处理器时间和内存耗尽时才停下,因此并发量变成了一个硬件问题。
选择你的 Node 项目接入 CapSkip 的方式
// npm install capskip
const { CapSkip } = require('capskip');
const solver = new CapSkip({ host: '127.0.0.1', port: 8080 });
(async () => {
const result = await solver.recaptcha(
'YOUR_SITEKEY',
'https://example.com/page-with-recaptcha',
);
console.log(result.code); // token, inject and submit
})();一个客户端,一次 await:token 会放在 result.code 中,可直接写入页面或通过 fetch 提交。
让扩展自动通过小组件
完全不需要识别代码:装好 Chrome 或 Firefox 扩展并运行应用,小组件就会在页面内自动通过。Puppeteer 和 Playwright 也可以把它加载到它们启动的 Chromium 中。
npm 客户端及其姊妹库
在 Node 18 或更高版本中,每个挑战只需一次 await。对于技术栈中不是用 JavaScript 编写的部分,还有 Python、PHP 和 .NET 的官方客户端可用。
为现有代码提供的本地 API
任何 Node HTTP 客户端都能直接调用该应用,2Captcha 或 Anti-Captcha 库也能借助内置的服务模拟原样接入。
在真实的 reCAPTCHA 页面上试用客户端
我们的演示页面上有一个真实的 reCAPTCHA v2 小组件。用几行 Node 代码指向它,或在启用了扩展的浏览器中打开它,就能看到返回的 token,这一切都无需动用你的生产代码。
从 npm install 到第一个 token,只需三步
-
安装识别应用
在负责承担识别负载的 Windows 电脑或 VPS 上安装 CapSkip。你的 Node 代码可以运行在同一台机器上,也可以运行在任何能通过网络访问它的其他机器上。 下载 Windows 安装程序
-
激活套餐或试用
选择一个月度套餐,或者免费试用 CapSkip 3 天,最多 500 次识别,无需绑卡。首次登录时,用邮件发送的凭据即可解锁应用。 查看套餐与价格
-
添加 capskip 并 await 识别结果
用 npm 安装这个包,为应用创建一个客户端,然后在验证码拦住你的脚本、worker 或浏览器会话的地方 await 一次识别。 打开 SDK 指南
在 Node.js 代码库中:按量计费的识别 API 与 CapSkip 对比
当识别从按量计费的远程 API 转移到你自己掌控的机器上的应用时,Node 代码库会发生哪些变化。
| 功能 | CapSkip | 2Captcha / CapSolver |
|---|---|---|
| 如何付费 | 每月 35 美元起,包含全部识别,无开通费 | 按每千次识别收费,用多少付多少 |
| 挑战在哪里识别 | 在 CapSkip 内部,即你运行它的 Windows 电脑或服务器上 | 在远程服务器上,或由人工打码平台完成 |
| 更大的 Promise.all 批次的成本 | 没有额外费用:上限是你的 CPU 和内存 | 每多一个并行识别,就多一笔费用 |
| 用量增长时的月度成本 | 固定不变,与识别次数无关 | 随用量同步上涨 |
| 挑战数据 | 从不离开你掌控的机器 | 交给第三方识别 |
| Node 包 | npm 上的 capskip:带类型、零依赖,另有 API 模拟 | 绑定其 API 的厂商专属客户端 |
| 图片验证码返回时间 | 约 0.1 秒,无远程排队 | 每次识别都有往返和排队时间 |
想先试用一下?
开始 3 天免费试用,在你自己的目标上识别 500 个任意类型的验证码。
相关验证码识别工具与指南
用 JavaScript 识别验证码:从一次 await 到队列 worker
先从单次调用开始。在 Node 18 或更高版本的项目中添加这个包,把一个 CapSkip 客户端指向应用的主机和端口,并在各模块间共享它。对于 reCAPTCHA 或 Turnstile,传入 sitekey 和页面 URL;对于极验 v3,传入 gt 值和一个新签发的 challenge;对于图片,传入文件路径、URL 或 data URI。不支持 hCaptcha,所以调用前请先确认你面对的是哪种小组件。
然后再并发展开。由于每个方法都返回 Promise,爬虫可以为多个页面同时发起识别,再一起 await。Promise.allSettled 是更稳妥的收集方式,因为某个被 reject 的识别只会作为一个状态返回,而不会让整批结果作废。CapSkip 不设线程上限,机器本身就是唯一的限制。图片识别很轻量,但 reCAPTCHA、Turnstile 和极验会在后台运行真实的浏览器实例,所以大量并行时请预留 32 GB 或更多内存。
对于长时间运行的任务,把识别移到队列 worker 中,让 Web 请求永远不必等待挑战;下方的 BullMQ 指南展示了一种实现模式。按类型分别设置超时,并留足余量。图片识别几乎是瞬间完成(约 0.1 秒),基于浏览器的类型则耗时更长:reCAPTCHA 或 Turnstile 预计 3 到 10 秒,极验约 7 到 12 秒。
最后,token 要尽快用掉。reCAPTCHA 和 Turnstile 的 token 几分钟内就会过期,所以识别一 resolve 就立即提交,并从代理所用的那个 IP 发出该请求。在浏览器中,通过 page.evaluate 设置隐藏的响应字段;使用 fetch 或 undici 时,把 token 附加到表单 body 中。
相关指南: Puppeteer 验证码识别 · 用 Node.js 识别 Cloudflare Turnstile · BullMQ 验证码 worker
识别验证码要安装哪个 npm 包?
我能在 Puppeteer 或 Playwright 脚本里 await 识别结果吗?
完全不用浏览器、只用 fetch,客户端也能工作吗?
在 Cloudflare 整页挑战页面上,Turnstile 调用会返回什么?
一个 Node 进程能同时进行多少个识别?
我能在 ES 模块或 TypeScript 文件中 import capskip 吗?
如何用 JavaScript 识别图片验证码?
我现有的 2Captcha npm 代码能直接对接 CapSkip 吗?
让每个 await 背后都有验证码答案
安装应用,把 capskip 加入你的 package.json,然后 await 你的第一个 token。统一定价的月度套餐涵盖你的脚本、爬虫和 worker 发起的每一次识别,批量多大都一样。
