API文档
了解如何使用我们的API进行验证码识别
认证
所有API请求都需要使用API令牌进行认证。您可以在API令牌页面创建和管理您的令牌。
在请求头中包含您的API令牌
Authorization: Bearer YOUR_API_TOKENAPI端点
验证码识别(Base64)
通过Base64编码的图片数据识别验证码并返回结果。
方法
POST
URL
https://api.aunly.cn/captcha/recognize
请求体
{
"image_base64": "BASE64_ENCODED_IMAGE",
"captcha_type_override": "geetest_v3_click" // 可选参数
}Base64编码的图片数据(必填)
image_base64
验证码的Base64编码图片数据
captcha_type_override
指定验证码类型,跳过自动识别可用值:
- 极验 V3 点选验证码 (
geetest_v3_click) - 极验 V3 滑块验证码 (
geetest_v3_slide) - 极验 V4 点选验证码 (
geetest_v4_click) - 极验 V4 滑块验证码 (
geetest_v4_slide)
注意:Base64编码后的图片数据总大小不得超过512KB。
滑块验证码响应示例
响应
{
"message": "success",
"code": 0,
"data": {
"result": {
"captcha_type": "geetest_v4_slider",
"slider_distance": 785,
"click_points": null,
"confidence_thres": 0.87,
"avg_confidences": {
"overall": 0.93,
"captcha_type": 0.94,
"slider": 0.92,
"click_i": null,
"click_t3": null,
"click_t4": null,
"siamese_match": null
}
},
"balance": 431,
"captcha_id": "4d8406f7f1674d9d867b32561b47a663",
"processing_time": 642
}
}点选验证码响应示例
响应
{
"message": "success",
"code": 0,
"data": {
"result": {
"captcha_type": "geetest_v3_click",
"slider_distance": null,
"click_points": [
[392, 285],
[431, 410],
[246, 451]
],
"confidence_thres": 0.87,
"avg_confidences": {
"overall": 0.93,
"captcha_type": 1,
"slider": null,
"click_i": 0.91,
"click_t3": 0.9,
"click_t4": null,
"siamese_match": 0.92
}
},
"balance": 421,
"captcha_id": "15751a26a85e4a528f4ad9935a9850f6",
"processing_time": 887
}
}报告识别结果
当验证码识别结果不正确时,您可以通过此接口进行报告。这有助于我们改进识别算法,同时系统可能会根据报告情况对特定请求进行退款处理。
方法
POST
URL
https://api.aunly.cn/captcha/report
请求参数
captcha_id
验证码ID(必填,从识别结果中获取的captcha_id字段)
响应
{
"message": "success",
"code": 0,
"data": null
}可处理的验证码类型示例
极验 V3 点选验证码
geetest_v3_click
极验 V3 滑块验证码
geetest_v3_slide
极验 V4 点选验证码
geetest_v4_click
极验 V4 滑块验证码
geetest_v4_slide
API令牌信息
获取当前API令牌信息
获取当前使用的API令牌详细信息
方法
GET
URL
https://api.aunly.cn/token/info
响应
{
"message": "success",
"code": 0,
"data": {
"remark": "测试Token",
"expires_at": "2023-12-31T00:00:00",
"token": "api_token_value",
"username": "username",
"created_at": "2023-01-01T12:00:00",
"last_used_at": "2023-01-02T12:30:00",
"used_times": 5,
"user_balance": 1000
}
}使用示例
curl -X POST \
https://api.aunly.cn/captcha/recognize \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"image_base64": "BASE64_ENCODED_IMAGE_STRING"}'错误处理
API可能返回以下错误代码
HTTP状态码
400
请求参数错误或缺失
401
无效的令牌
402
余额不足
403
非管理员用户不允许使用raw参数
413
图片文件太大。请使用较小的文件(最大512KB)。
429
请求过于频繁。请稍等片刻再试。
500
服务器内部错误
API错误码
API错误码在响应的code字段中返回。即使HTTP状态码为200,请求也可能因为业务原因而失败。
2001
密码至少需要8个字符
2002
无效的激活码 (CDK)
2003
此激活码 (CDK) 已被使用
2004
用户名已存在
2005
密码不正确
2006
auth.samePassword
2007
用户名只能包含字母、数字和下划线
2008
无效的验证码
2009
无效的手机号格式
2010
无效的令牌
2011
auth.userNotExist
2012
手机验证码无效
2013
该手机号已被使用
3001
源和目标大小不匹配。验证码图像结构无效或已损坏。
3002
无效的图片数据
3003
验证码识别失败, 已尝试所有阈值
3004
captcha.uploadCaptcha.captchaIdNotFound
3005
captcha.uploadCaptcha.captchaIdMarkedFailed
3099
处理图片失败
4001
api.tooManyTokens
错误处理示例
// 处理错误的示例
try {
// 读取验证码图片并转换为Base64
const fileInput = document.getElementById('captchaFile');
const file = fileInput.files[0];
const reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = async function() {
// 从Data URL中提取Base64字符串(移除"data:image/jpeg;base64,"前缀)
const base64Image = reader.result.toString().split(',')[1];
const response = await fetch('https://api.aunly.cn/captcha/recognize', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json'
},
body: JSON.stringify({
image_base64: base64Image
})
});
const result = await response.json();
// 首先检查HTTP状态码
if (!response.ok) {
// 处理HTTP错误
switch (response.status) {
case 401:
console.error('认证失败: 令牌无效或已过期');
break;
case 402:
console.error('余额不足: 请充值后再试');
break;
// 处理其他HTTP错误...
default:
console.error(`请求失败: HTTP状态码: ${response.status}`);
}
return;
}
// 然后检查API错误码
if (result.code !== 0) {
// 处理API错误
switch (result.code) {
case 3001:
console.error('验证码图像结构无效: 源和目标大小不匹配');
break;
case 3002:
console.error('无效的图像数据');
break;
// 处理其他API错误...
default:
console.error(`API错误: ${result.message || '未知错误'}`);
}
return;
}
// 请求成功,处理结果
console.log('识别成功:', result.data);
};
} catch (error) {
console.error('请求异常:', error);
}请求限制
基于您账户余额的请求限制。每次成功请求将从您的账户余额中扣除相应费用。