验证码识别服务 API 文档
一站式验证码识别平台,支持多种验证码类型,提供简洁统一的 REST API 接口。
💡 基础信息
Base URL:
http://localhost:1818 | 数据格式: JSON | 认证: API
Key
支持的验证码类型
| 类型代码 | 名称 | 入参字段 | 说明 (图片均需Base64编码) | 返回示例 |
|---|---|---|---|---|
ddddocr_ocr |
文字OCR识别 | image |
通用英数汉字识别,传入图片Base64 | 查看示例 |
ddddocr_detection |
目标检测(点选) | image |
识别图片中的目标物体,返回坐标 | 查看示例 |
ddddocr_slide |
滑块缺口识别 | bg_image, slide_image |
bg_image: 带缺口背景图slide_image: 滑块小图 |
查看示例 |
tencent_slider |
tx滑块验证码 | aid, entry_url |
需传入tx滑块的 aid 和 entry_url |
查看示例 |
anticap_ocr |
通用OCR识别 | image |
通用英数汉字识别,支持复杂干扰 | 查看示例 |
anticap_math |
算术验证码 | image |
识别图片算术题并返回计算结果 | 查看示例 |
anticap_detect_icon |
图标侦测 | image |
识别图中所有图标位置,返回坐标列表 | 查看示例 |
anticap_detect_text |
文字侦测 | image |
识别图中所有文字位置,返回坐标列表 | 查看示例 |
anticap_click_icon |
图标点选 | order_image, target_image |
order_image: 提示图(如"请点击...")target_image: 待点击大图 |
查看示例 |
anticap_click_text |
文字点选 | order_image, target_image |
order_image: 提示图(如文字顺序)target_image: 待点击大图 |
查看示例 |
anticap_slider |
缺口/阴影滑块 | target_image, bg_image |
target_image: 滑块小图bg_image: 带缺口背景图 |
查看示例 |
anticap_similarity |
相似度对比 | image1, image2 |
比对两张图片是否相似,返回相似度数值 | 查看示例 |
anticap_rotate_double |
双图旋转 | inside_image, outside_image |
inside_image: 内圈图outside_image: 外圈图 |
查看示例 |
anticap_rotate_single |
单图旋转 | image |
识别单张图片的旋转角度 | 查看示例 |
🚀 快速开始
获取账号
联系管理员创建账号,获取您的 API Key。
携带 API Key
在后续所有 API 调用的请求头中携带 X-API-Key。
发起识别请求
向 POST /api/solve 发送请求,指定验证码类型和图片数据,即可获得识别结果。
完整示例
Python
cURL
JavaScript
import requests, base64
API = "http://localhost:1818"
KEY = "cap_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
# 读取验证码图片并Base64编码
with open("captcha.png", "rb") as f:
img_b64 = base64.b64encode(f.read()).decode()
# 发起识别
resp = requests.post(f"{API}/api/solve", json={
"type_code": "ddddocr_ocr",
"data": {"image": img_b64}
}, headers={"X-API-Key": KEY})
print(resp.json())
# {"success": true, "result": {"text": "a8Kx"}}
# 识别验证码
curl -X POST http://localhost:1818/api/solve \
-H "Content-Type: application/json" \
-H "X-API-Key: cap_xxxxxxxx" \
-d '{"type_code":"ddddocr_ocr","data":{"image":"BASE64..."}}'
const API = "http://localhost:1818";
const KEY = "cap_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
// 识别验证码
const resp = await fetch(`${API}/api/solve`, {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-API-Key": KEY
},
body: JSON.stringify({
type_code: "ddddocr_ocr",
data: { image: imgBase64 }
})
});
const result = await resp.json();
console.log(result);
🔑 认证方式
所有需要认证的 API 端点都需要在请求头中携带 X-API-Key:
X-API-Key: cap_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
也可以通过 URL 参数传递(不推荐):
GET /api/user/info?api_key=cap_xxxxxxxx
⚠️ 安全提示
请妥善保管您的 API Key,不要在公开代码中硬编码。建议使用环境变量管理。
验证码识别
POST /api/solve
提交验证码识别请求(需认证)
请求参数
| 参数 | 类型 | 必须 | 说明 |
|---|---|---|---|
type_code |
string | 是 | 验证码类型代码 |
data |
object | 是 | 识别数据,字段取决于类型 |
data 字段说明(按类型)
| 类型 | 字段 | 说明 |
|---|---|---|
ddddocr_ocr |
image |
Base64编码的验证码图片 |
ddddocr_detection |
image |
Base64编码的验证码图片 |
ddddocr_slide |
bg_image, slide_image |
背景图和滑块图(Base64) |
tencent_slider |
aid, entry_url |
应用ID和入口URL |
anticap_ocr, anticap_mathanticap_detect_icon,
anticap_detect_textanticap_rotate_single
|
image |
Base64编码的验证码图片 |
anticap_click_icon, anticap_click_text |
order_image, target_image |
提示图(顺序)和目标图(Base64) |
anticap_slider |
target_image, bg_image |
滑块图和背景图(Base64) |
anticap_similarity |
image1, image2 |
待比对的两张图片(Base64) |
anticap_rotate_double |
inside_image, outside_image |
内圈图和外圈图(Base64) |
请求示例
POST /api/solve HTTP/1.1
Host: localhost:1818
Content-Type: application/json
X-API-Key: cap_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
{
"type_code": "ddddocr_ocr",
"data": {
"image": "iVBORw0KGgoAAAANSUhEUgAA..." // Base64编码的图片
}
}
响应示例
{
"success": true,
"result": {
"text": "a8Kx"
}
}
验证码类型列表
GET /api/types
获取所有已启用的验证码类型(无需认证)
请求示例
GET /api/types HTTP/1.1
Host: localhost:1818
响应示例
{
"success": true,
"data": [
{
"id": 1,
"name": "文字OCR识别",
"code": "ddddocr_ocr",
"engine": "ddddocr",
"pricing": {"normal": 2, "vip": 1}
}
]
}
用户登录
POST /api/login
登录并获取 API Key(同时设置Web Session)
请求参数
| 参数 | 类型 | 必须 | 说明 |
|---|---|---|---|
username |
string | 是 | 用户名 |
password |
string | 是 | 密码 |
请求示例
POST /api/login HTTP/1.1
Host: localhost:1818
Content-Type: application/json
{
"username": "myuser",
"password": "mypassword"
}
响应示例
{
"success": true,
"data": {
"id": 2,
"username": "myuser",
"api_key": "cap_a1b2c3d4..."
}
}
个人信息
GET /api/user/info
查看当前用户详细信息(需认证)
请求示例
GET /api/user/info HTTP/1.1
Host: localhost:1818
X-API-Key: cap_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
响应示例
{
"success": true,
"data": {
"id": 2,
"username": "myuser",
"email": "user@example.com",
"role": "normal",
"balance": 88,
"api_key": "cap_a1b2c3d4...",
"active_package": {
"package_name": "月卡",
"expires_at": "2026-03-14T20:00:00"
}
}
}
重置 API Key
POST /api/user/reset-key
重新生成 API Key,旧 Key 立即失效(需认证)
请求示例
POST /api/user/reset-key HTTP/1.1
Host: localhost:1818
X-API-Key: cap_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
响应示例
{
"success": true,
"new_api_key": "cap_e5f6g7h8..."
}
错误码参考
| HTTP状态码 | 含义 | 说明 |
|---|---|---|
| 400 | 请求参数错误 | 缺少必要参数或格式不正确 |
| 401 | 未认证 | 缺少 API Key 或 Key 无效 |
| 402 | 余额不足 | 点数不够,请充值或购买套餐 |
| 403 | 无权限 | 账号已封禁或权限不足 |
| 404 | 类型不存在 | 验证码类型代码错误或已禁用 |
| 409 | 冲突 | 用户名已存在等 |
| 500 | 服务器错误 | 引擎异常,请联系管理员 |
错误响应格式
{
"success": false,
"error": "错误描述信息"
}