Python 验证码识别:在 Python 脚本和爬虫中识别验证码
执行 pip install capskip,在普通代码或 asyncio 代码中为每种验证码调用一个对应的方法,即可从运行在你掌控的硬件上的 CapSkip 应用拿到 token 或文字结果。这一切都不按次计费。
- pip install capskip
- 同步与 asyncio 客户端
- Python 3.10 及更高版本
solver = CapSkip()
token = solver.recaptcha(
sitekey = "6Le-wvkS…",
url = "example.com/signup")03AGdBq27…0.12 秒 · $0.00只需一条 pip install capskip,任何脚本都能变成 Python 验证码识别工具:交给它一个 reCAPTCHA、一个 Cloudflare Turnstile 验证框、一个极验(GeeTest)v3 滑块或一张模糊的文字图片,它就会返回可直接提交的 token 或字符。真正的识别在本地完成,由你安装在工作站或 VPS 上的 Windows 桌面应用负责,这意味着不必在远程队列里等待,每次调用也不会单独收费。
SDK 为每一类验证码提供一个方法。recaptcha() 支持 Enterprise、v3,以及 v2 的复选框和隐形版本;turnstile() 既能处理小组件,也能处理整页的 Cloudflare 验证;geetest() 使用 gt 和 challenge 这对参数;normal() 负责识别图片验证码,无论你传入的是已保存的文件、图片链接还是 base64 数据。对于较少见的类型,friendly_captcha()、captchafox()、capy()、altcha() 和 amazon_waf() 也遵循相同的调用方式。
两个客户端共用这些方法名。CapSkip 像 requests 一样是阻塞式的,适合 Selenium 或快速脚本;AsyncCapSkip 则把每次识别变成一个协程,你可以在 httpx 或异步 Playwright 爬虫中一次 gather 几十个。套餐统一定价,每月 35 美元起,因此一个触发一千次的重试循环,花费与单次调用完全相同。
按验证码类型设置超时时间。 文字图片约 0.1 秒即可返回。对于 reCAPTCHA、Cloudflare Turnstile 和极验,应用会在后台打开真实浏览器,因此前两者大约需要 3 到 10 秒,滑块大约需要 7 到 12 秒。请在超时设置和工作池中为这些调用留出更多余量。
pip install capskip 为你的 Python 代码带来什么
每类验证码对应一个方法
recaptcha()、turnstile()、geetest()、normal() 以及另外四个小众识别方法共用同一种调用方式。如果传入了某个类型不接受的参数,ValidationException 会立即提示你,而不是在目标网站上悄无声息地失败。
阻塞或 asyncio,方法名相同
CapSkip 适合 requests 代码和 Selenium 会话。AsyncCapSkip 把每次识别都变成协程,单个事件循环就能并行 await 多个验证码,无需额外线程。
文字验证码直接返回字符串
normal() 能在约 0.1 秒内把扭曲的图片转换成字符。不打开浏览器,也不需要代理,因此 OCR 这一步永远不会成为爬虫的瓶颈。
与 Selenium、Playwright、Scrapy 并肩工作
SDK 不会干预浏览器。你的工具找到 sitekey,CapSkip 返回答案,然后由你把它填入已打开的页面,或随表单提交一起发送。
为重试逻辑设计的异常体系
NetworkException、TimeoutException、ApiException 和 ValidationException 都继承自 CapSkipError,因此一个 except 子句就能全部捕获,你也可以分别处理每一种失败。
循环与重试不额外收费
统一价格的月度授权涵盖你的脚本发出的每一次调用,因此无论是重试循环、被拒绝的表单提交,还是跑满整个周末的爬取,都不会产生按次识别费用。
从浏览器附加组件到 pip 包:三种接入方式
# pip install capskip
from capskip import CapSkip
solver = CapSkip(host="127.0.0.1", port=8080)
# recaptcha() covers v2, v3 and Enterprise; turnstile(), geetest()
# and normal() (image CAPTCHAs) follow the same pattern.
result = solver.recaptcha(
sitekey="YOUR_SITEKEY",
url="https://example.com/page-with-recaptcha",
)
print(result["code"]) # token, inject it and submit the form一个最简的阻塞式示例:连接应用,把 sitekey 和页面 URL 传给 recaptcha(),再从 result['code'] 读取 token 后提交。
适合手动浏览的扩展
一款 Chrome 和 Firefox 附加组件,无需代码即可在页面内识别验证码;在为目标网站写脚本之前先手动摸索时尤其好用。它需要应用保持运行。
capskip 包及其姊妹库
pip install capskip 为 Python 提供一个阻塞式客户端和一个异步客户端。Node.js、PHP 和 .NET 的官方 SDK 则覆盖混合技术栈中的其他部分。
面向现有代码的本地 API
原有的 2Captcha 或 Anti-Captcha Python 代码可以通过服务模拟器与 CapSkip 通信;任何支持 HTTP 的程序,哪怕只是最基础的 requests 调用,都能使用本地 API。
在 reCAPTCHA 在线演示上试用 SDK
在把脚本对准真实网站之前,先拿我们托管的 reCAPTCHA v2 演示页面跑一遍。它加载的是真正的小组件,你可以从头到尾确认 sitekey 处理和 token 提交都正常工作。
从安装程序到你在 Python 中的第一次识别
本地还是计量计费的 Python 验证码识别工具:CapSkip 对比 2Captcha 与 CapSolver
三者都能为你的 Python 代码识别验证码。区别在于:由谁来完成识别、你的数据流向哪里,以及爬虫通宵运行时账单如何变化。
| 功能 | CapSkip | 2Captcha / CapSolver |
|---|---|---|
| 计费方式 | 统一月费,35 美元起,零按次费用 | 按每千次识别收费 |
| 计算在哪里进行 | 在应用内,运行于你自己的硬件上 | 在远程服务器上,有时由人工完成 |
| 用量增长时的成本 | 任何用量,账单都一样 | 随每次识别和重试而增长 |
| 你的数据 | 验证码永远不离开你的机器 | 上传到外部服务 |
| 并行识别 | 无线程限制,取决于你的硬件 | 吞吐量越大,账单越高 |
| Python 接入方式 | pip install capskip,或继续使用你的 2Captcha 客户端 | 供应商自家的 Python 客户端 |
| 图片验证码速度 | 约 0.1 秒,本地识别 | 每张图片都要经历网络往返和排队 |
想先试用一下?
开始 3 天免费试用,在你自己的目标上识别 500 个任意类型的验证码。
相关验证码识别工具与指南
用 Python 识别验证码:requests 脚本、浏览器与 Scrapy
验证码出现在哪里,决定了你如何接入识别工具;而 Python 代码通常会在以下三种场景之一遇到它。
纯 HTTP 脚本。如果你用 requests 或 httpx 抓取页面,就完全不需要浏览器。从已经下载的 HTML 中提取 sitekey,带上页面 URL 向 CapSkip 请求 token,然后把 token 和其余表单字段一起提交。请保持同一个会话,让 cookie 前后一致,并及时提交,因为 reCAPTCHA 的 token 生成后大约两分钟就会失效。
Selenium 和 Playwright 脚本。SDK 从不控制浏览器,只负责生成答案。你的脚本从已打开的页面读取 sitekey,等待识别完成,用一行 JavaScript 调用把 token 写入页面中隐藏的答案字段,然后点击提交。配合异步 Playwright 使用时,AsyncCapSkip 能让一个标签页等待它的验证码,其他标签页照常工作。
Scrapy 爬虫和 asyncio 爬虫。spider 可以用 CSS 或 XPath 选择器读取 sitekey,完成识别,再 yield 一个携带 token 的 FormRequest。对于大型异步爬取,用 return_exceptions=True 把多次识别一起 gather,这样一个出错的验证码不会连累其他结果。此后,爬取速度取决于 CapSkip 机器的硬件,而不是套餐限制。
相关指南: Selenium 验证码识别工具 · Playwright 验证码识别工具 · 用 Python 并行识别验证码
如何在 Python 中自动识别验证码?
这个 Python reCAPTCHA 识别工具也支持 v3 和 Enterprise 吗?
文字验证码还需要我自己写 OCR 代码吗?
我能用 asyncio 同时运行大量识别吗?
CapSkip 如何融入 Scrapy spider?
如果我的 Python 代码运行在 macOS 或 Linux 上,能用 CapSkip 吗?
pip install capskip 会往我的环境里装些什么?
我现有的 2Captcha Python 客户端还能继续用吗?
为你的 Python 脚本提供不计量的验证码识别
安装应用,运行 pip install capskip,然后把你的第一个 recaptcha() 或 normal() 调用指向它。此后的每一次识别,无论一次还是一百万次,都包含在同一个月度套餐里。
