captchaRun
1059字约4分钟
2024-05-21
参数名 | 是否必填 | 说明 |
captchaType | 是 | 固定为 ReCaptchaV2Classification |
image | 是 | Base64 编码的图片文件 |
question | 是 | 问题 ID, 请查表, 以 /m/ 开头 |
resize | 否 | 缩放图片 -1: 自动缩放, 0: 不缩放, 1: 缩放至 100x100, 3: 缩放至 300x300, 4: 缩放至 400x400 |
注意
图片 Base64 请不要包含 "data:image/***;base64,"
重要
resize 为 -1 时, 服务会基于白线自动猜测是 3x3 还是 4x4 的大图. 因此,自动缩放只对大图截图有效, 小图请将 resize 设为 1
注意
图片最大大小为1000*1000,如果超出大小服务器将拒绝自动缩放和后续处理
POST https://api.captcha.run/v2/tasks
Content-Type: application/json
Authorization: Bearer 00000000-0000-0000-0000-000000000000
{
"captchaType": "ReCaptchaV2Classification",
"image": "/9j/4AAQSkZJRgABAQAAAkiOOIucyMmHHVdLmLXpRtPg3Vqboi/jze0nKm5DJ3aQ+19/zHmK292ZU8O0h...",
"question": "/m/01lynh"
}
CURL
curl -X POST "https://api.captcha.run/v2/tasks" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer 00000000-0000-0000-0000-000000000000" \
-d '{
"captchaType": "ReCaptchaV2Classification",
"image": "/9j/4AAQSkZJRgABAQAAAkiOOIucyMmHHVdLmLXpRtPg3Vqboi/jze0nKm5DJ3aQ+19/zHmK292ZU8O0h...",
"question": "/m/01lynh"
}'
Python
import requests
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer 00000000-0000-0000-0000-000000000000',
}
json_data = {
'captchaType': 'ReCaptchaV2Classification',
'image': '/9j/4AAQSkZJRgABAQAAAkiOOIucyMmHHVdLmLXpRtPg3Vqboi/jze0nKm5DJ3aQ+19/zHmK292ZU8O0h...',
'question': '/m/01lynh',
}
response = requests.post('https://api.captcha.run/v2/tasks', headers=headers, json=json_data)
import requests
import base64
token = "xxxxx"
headers = {
'Content-Type': 'application/json',
'Authorization': f'Bearer {token}',
}
with open("payload.jpg", "rb") as image_file:
encoded_string = base64.b64encode(image_file.read()).decode('utf-8')
json_data = {
'captchaType': 'ReCaptchaV2Classification',
'image': encoded_string,
'question': '/m/01lynh',
}
response = requests.post('https://api.captcha.run/v2/tasks', headers=headers, json=json_data)
print(response.json() )
JavaScript
const resp = await fetch('https://api.captcha.run/v2/tasks', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer 00000000-0000-0000-0000-000000000000'
},
body: JSON.stringify({
"captchaType": "ReCaptchaV2Classification",
"image": "/9j/4AAQSkZJRgABAQAAAkiOOIucyMmHHVdLmLXpRtPg3Vqboi/jze0nKm5DJ3aQ+19/zHmK292ZU8O0h...",
"question": "/m/01lynh"
}),
});
const json = await resp.json();
console.info(json);
重要
注意image是base64编码的图片原始文件,最好不要使用屏幕截图
重要
本接口为同步返回结果,无需轮询获取结果
多目标 (3x3 / 4x4)
对于 3x3, 第一行为 0,1,2 第二行为 3,4,5 第三行为 6,7,8
对于 4x4, 第一行为 0,1,2,3 第二行为 4,5,6,7 第三行为 8,9,10,11 第四行为 12,13,14,15
{
"taskId": "ada7d30b-a12f-4105-85a5-0aa90bf0487a",
"result": {
"type": "multi",
"objects": [ 0, 1, 2 ],
"size": 3 // 3x3: 3 或者 4x4: 4
}
}
单目标 (1x1)
{
"taskId": "ada7d30b-a12f-4105-85a5-0aa90bf0487a",
"result": {
"hasObject": true / false, // 是否需要点击
"type": "single",
"size": 1
}
}
注意
必须将图片缩放至 标准 (100x100, 300x300, 450x450) 大小, 否则服务器无法判断类型
在按下 3x3 后, 如果不是 imageselect 类型, 会刷新 1x1 小图.
重要
中文并非 ReCaptcha 官方翻译, 仅供参考
英文 | 中文 (参考, 不准确) | ID |
taxis | 出租车 | /m/0pg52 |
bus | 巴士 | /m/01bjv |
school bus | 校车 | /m/02yvhj |
motorcycles | 摩托车 | /m/04_sv |
tractors | 拖拉机 | /m/013xlm |
chimneys | 烟囱 | /m/01jk_4 |
crosswalks | 人行横道 | /m/014xcs |
traffic lights | 红绿灯 | /m/015qff |
bicycles | 自行车 | /m/0199g |
parking meters | 停车计价表 | /m/015qbp |
cars | 汽车 | /m/0k4j |
bridges | 桥 | /m/015kr |
boats | 船 | /m/019jd |
palm trees | 棕榈树 | /m/0cdl1 |
mountains or hills | 山 | /m/09d_r |
fire hydrant | 消防栓 | /m/01pns0 |
stairs | 楼梯 | /m/01lynh |
英文对照 (JSON):
{
"/m/0pg52": "taxis",
"/m/01bjv": "bus",
"/m/02yvhj": "school bus",
"/m/04_sv": "motorcycles",
"/m/013xlm": "tractors",
"/m/01jk_4": "chimneys",
"/m/014xcs": "crosswalks",
"/m/015qff": "traffic lights",
"/m/0199g": "bicycles",
"/m/015qbp": "parking meters",
"/m/0k4j": "cars",
"/m/015kr": "bridges",
"/m/019jd": "boats",
"/m/0cdl1": "palm trees",
"/m/09d_r": "mountains or hills",
"/m/01pns0": "fire hydrant",
"/m/01lynh": "stairs"
}
中文对照 (JSON):
{
"/m/0pg52": "出租车",
"/m/01bjv": "巴士",
"/m/02yvhj": "校车",
"/m/04_sv": "摩托车",
"/m/013xlm": "拖拉机",
"/m/01jk_4": "烟囱",
"/m/014xcs": "人行横道",
"/m/015qff": "红绿灯",
"/m/0199g": "自行车",
"/m/015qbp": "停车计价表",
"/m/0k4j": "汽车",
"/m/015kr": "桥",
"/m/019jd": "船",
"/m/0cdl1": "棕榈树",
"/m/09d_r": "山",
"/m/01pns0": "消防栓",
"/m/01lynh": "楼梯"
}