如何识别文字验证码
上方的方框是一个 文字验证码:一小串扭曲的字符绘制在图片中,你必须读出并输入。本页展示三种简单的方式来自动识别它并获得正确字符:用 CapSkip 浏览器扩展、在你自己的代码中用 CapSkip SDK,或把你的工具已经调用的验证码服务路由到 CapSkip。CapSkip 用设备端 OCR 读取图片,因此没有按次费用,也没有任何数据离开你的机器。
选项 1:用浏览器扩展识别
打败文字验证码最简单的方式是面向 Chrome 和 Firefox 的 CapSkip 验证码识别扩展 。经过一次快速的初次设置,告诉它读取哪张图片、在哪里输入后,它就会为你填入答案,无需编写代码。
安装扩展
从 Chrome 应用商店或 Firefox 附加组件添加 CapSkip。它同样适用于 Brave、Edge、Opera 和 Vivaldi。
运行 CapSkip 应用
安装并打开 CapSkip 桌面应用。它在你自己的设备上完成识别,并与扩展配对。
指出验证码
图片验证码需要一个快速步骤。在 CapSkip 中点击 在页面上选择,然后点击验证码图片和答案字段。每个页面只需做一次。
CapSkip 随后会读取字符并填入你所选的字段,你只需按下 验证。你也可以通过右键点击图片(标记为验证码来源)和字段(在此插入验证码答案)来绑定它。此一次性设置仅图片和文字验证码需要,reCAPTCHA 或 Turnstile 不需要。 查看设置指南.
选项 2:用 CapSkip SDK 识别
在构建自动化、爬虫或机器人?使用 CapSkip 验证码识别 SDK 从以下语言识别文字验证码: Python, Node.js, PHP 或 C#。你把验证码图片交给 normal() ,CapSkip 会返回它读出的字符。无需 site key,也无需页面 URL,因为 CapSkip 直接从图片工作。
"captcha.png""https://site.com/captcha.php""data:image\/png;base64,...<\/b>"开始之前
CapSkip 在本地识别。下载并运行 CapSkip 桌面应用 并让它在后台保持打开。SDK 通过 127.0.0.1:8080与它通信,因此没有云端调用,也没有按次费用。
安装 SDK
将官方 CapSkip 客户端添加到你的项目中。
pip install capskipnpm install capskipcomposer require capskip/capskipdotnet add package CapSkip读取验证码图片并获取字符
将验证码图片传给 normal()。它接受文件路径、图片 URL 或 base64 数据 URI。CapSkip 对其运行 OCR,并以纯文本返回字符。
from capskip import CapSkip
# Connect to the CapSkip app running on your machine
solver = CapSkip(host="127.0.0.1", port=8080)
# Read the distorted characters from the captcha image
result = solver.normal("captcha.png")
answer = result["code"] # the characters CapSkip read
print(answer)const { CapSkip } = require('capskip');
// Connect to the CapSkip app running on your machine
const solver = new CapSkip({ host: '127.0.0.1', port: 8080 });
(async () => {
// Read the distorted characters from the captcha image
const result = await solver.normal('captcha.png');
const answer = result.code; // the characters CapSkip read
console.log(answer);
})();<?php
require 'vendor/autoload.php';
use CapSkip\CapSkip;
// Connect to the CapSkip app running on your machine
$solver = new CapSkip(['host' => '127.0.0.1', 'port' => 8080]);
// Read the distorted characters from the captcha image
$result = $solver->normal('captcha.png');
$answer = $result['code']; // the characters CapSkip read
echo $answer;using CapSkip;
// Connect to the CapSkip app running on your machine
var solver = new CapSkipClient(host: "127.0.0.1", port: 8080);
// Read the distorted characters from the captcha image
var result = await solver.NormalAsync("captcha.png");
string answer = result.Code; // the characters CapSkip read
Console.WriteLine(answer);你会得到图片中的字符,例如 5F59R,可随时输入到框中。
使用答案:输入并验证
将字符输入验证码的文本字段并提交。在此演示中,字段为 .captcha-input ,按钮为 .captcha-btn,因此你可以直接从浏览器填写并发送它。
// 1. Put the recognized characters into the text field
document.querySelector('.captcha-input').value = answer;
// 2. Press the Verify button
document.querySelector('.captcha-btn').click();在其他文字验证码站点上使用 CapSkip
文字验证码始终是一张扭曲字符的图片。要在任何地方识别它,抓取该图片并以最方便的形式交给 normal() :
- 从一个
<img>标签: 将其src直接作为图片 URL 传给 CapSkip,或右键将其保存为文件。 - 从一个
<canvas>: 调用canvas.toDataURL()获取 base64 字符串,然后传入它。此演示将其验证码绘制在<canvas class="captcha-text__canvas">上,因此这里用 base64。 - 从截图: 只截取验证码元素并传入保存的文件或其 base64。
从 base64 图片识别
当验证码是画布或内联数据 URI 时,直接传入 base64 字符串:
# Grab the canvas in the browser with canvas.toDataURL(), then:
result = solver.normal("data:image/png;base64,iVBORw0KGgo...")
answer = result["code"] # the characters CapSkip read// Grab the canvas in the browser with canvas.toDataURL(), then:
const result = await solver.normal('data:image/png;base64,iVBORw0KGgo...');
const answer = result.code; // the characters CapSkip read// A base64 data URI works anywhere a file path does
$result = $solver->normal('data:image/png;base64,iVBORw0KGgo...');
$answer = $result['code']; // the characters CapSkip read// A base64 data URI works anywhere a file path does
var result = await solver.NormalAsync("data:image/png;base64,iVBORw0KGgo...");
string answer = result.Code; // the characters CapSkip read文字验证码无需 site key 或页面 URL。CapSkip 在你自己的设备上读取图片,因此即使在离线或内部页面上也能工作。
不使用 Python、Node.js、PHP 或 C#?这些 SDK 只是 CapSkip HTTP API 的封装(即标准的 由以下端点返回的验证码 ID: / res.php 端点),因此你可以从 任何语言、框架或工具识别 reCAPTCHA v2。参见 图片验证码 API 参考.
选项 3:将你现有的识别服务代码发送到 CapSkip
已经在通过按次收费的服务(例如 2Captcha, Anti-Captcha 或 CapMonster)识别基于回调的 reCAPTCHA v2?你无需重写一行代码。CapSkip 应用包含一个 服务模拟器 ,它在本地讲这些服务自己的 API:选择你使用的服务,点击 添加到 hosts 文件,你的机器人、爬虫或现成工具已经发送给它的每个请求,都会由 CapSkip 在你自己的机器上响应,采用统一价格而非按次账单。
选择你的服务
打开 CapSkip 应用,选择你的代码已经在对接的服务:2Captcha、RuCaptcha、Anti-Captcha、CapMonster Cloud、CapSolver、DeathByCaptcha、SolveCaptcha 或 Captchas.io。
添加到 hosts 文件
在应用中一键将该服务的域名指向 CapSkip,于是你的工具发出的调用会在你自己的机器上得到响应,而不是发往付费 API。
原样运行你的工具
相同的 API 密钥、相同的请求、相同的轮询循环。CapSkip 以该服务自己的格式回复,你的代码会得到从图片中读出的字符。
切换时下面的内容不会改变。这与你今天代码发出的调用完全相同,只是文字验证码现在在本地识别,从图片中读出的字符由 CapSkip 返回:
POST https://2captcha.com/in.php
key=YOUR_EXISTING_API_KEY
method=base64
body=BASE64_OF_THE_CAPTCHA_IMAGE
GET https://2captcha.com/res.php?key=YOUR_EXISTING_API_KEY&action=get&id=2122988149
OK|W7H4KP the characters CapSkip read客户端库同样如此:Anti-Captcha 风格的 createTask / getTaskResult 配对,或任何基于这些服务构建的封装,在模拟器开启后都能继续工作。完整的请求和响应参考见 CapSkip API 文档.
关于识别文字验证码的更多内容
针对人们通常与此演示搭配使用的工具和语言的指南。
关于此文字验证码演示
本页是一个实时的 文字验证码演示 ,你可以在此实时观看一个经典的字符识别挑战被识别。文字验证码显示一小串绘制在图片中的扭曲字符,要求你读出并输入。它是最古老、最常见的验证码类型之一,用于阻止垃圾信息、虚假注册和自动表单提交。
开发者、测试人员和自动化工程师可以使用这个文字验证码测试页面,来对基于 OCR 的验证码识别进行基准测试、验证集成,并研究字符识别挑战的生成与校验方式。无论你需要识别一个文字验证码,还是自动完成数千次,CapSkip 都是一款 文字验证码识别工具 ,它有三种工作方式:面向 Chrome 和 Firefox 的免代码 验证码识别扩展 ,面向 Python、Node.js、PHP 和 C# 的 验证码识别 SDK ,以及对你今天可能按次付费的验证码服务的即插即用模拟,全部以统一价格无限量识别。三者都由同一个桌面 AI 验证码识别工具驱动,安装一次即可在你自己的机器上运行,因此没有任何内容在远程服务器排队,也没有任何按次计费。
