验证码识别服务 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滑块的 aidentry_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_math
anticap_detect_icon, anticap_detect_text
anticap_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": "错误描述信息"
}