เอกสารอ้างอิง API
createTask สร้างงาน
หน้านี้แปลด้วยเครื่องจากเวอร์ชันภาษาจีน อาจมีข้อผิดพลาด โปรดยึดเวอร์ชันภาษาจีนเป็นหลัก
createTask สร้างงานจดจำ โดยระบุใน task.type ว่าจะจดจำ CAPTCHA ชนิดใด ประเภทแบบอะซิงโครนัสจะคืนค่า taskId จากนั้นใช้ getTaskResult เพื่อดึงผลลัพธ์ ส่วนประเภทแบบซิงโครนัสจะคืนผลลัพธ์ทันที
POST
https://api.yescaptcha.com/createTaskendpoint ทั่วโลกPOST
https://cn.yescaptcha.com/createTaskendpoint จีนฟิลด์ในคำขอ
หัวข้อที่มีชื่อว่า “ฟิลด์ในคำขอ”| ฟิลด์ | ชนิด | จำเป็น | คำอธิบาย |
|---|---|---|---|
clientKey |
string | ใช่ | ClientKey ของบัญชี คัดลอกได้จากแดชบอร์ดที่ yescaptcha.com |
task |
object | ใช่ | อ็อบเจกต์งาน ต้องมี type ส่วนฟิลด์อื่นกรอกตามประเภทงาน ดูได้ในหน้าของแต่ละประเภทงาน |
softID |
integer | ไม่ | ID นักพัฒนา ใส่ค่านี้เมื่อซอฟต์แวร์ที่คุณพัฒนามีผู้อื่นนำไปใช้ เพื่อรับส่วนแบ่งรายได้ ดู ส่วนแบ่งรายได้นักพัฒนา |
ตัวอย่างคำขอ
หัวข้อที่มีชื่อว่า “ตัวอย่างคำขอ”จดจำ CAPTCHA แบบรูปภาพ (แบบซิงโครนัส):
{ "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "ImageToTextTaskOcrBase", "body": "BASE64_IMAGE" }}ขอ token ของ reCAPTCHA v2 (แบบอะซิงโครนัส):
{ "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "NoCaptchaTaskProxyless", "websiteURL": "https://www.google.com/recaptcha/api2/demo", "websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-" }}ฟิลด์ task ของแต่ละประเภทงานดูได้ในหน้าต่าง ๆ ภายใต้ ประเภทงานและราคา
ผลลัพธ์ที่ได้รับ
หัวข้อที่มีชื่อว่า “ผลลัพธ์ที่ได้รับ”ประเภทแบบอะซิงโครนัส:
{ "errorId": 0, "taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"}เก็บ taskId ไว้ แล้วเริ่มเรียก getTaskResult หลังจากผ่านไป 5 วินาที
ประเภทแบบซิงโครนัส:
{ "errorId": 0, "status": "ready", "taskId": "2376919c-1863-11ec-a012-94e6f7355a0b", "solution": { "text": "LMResm" }}ล้มเหลว:
{ "errorId": 1, "errorCode": "ERROR_TASK_NOT_SUPPORTED", "errorDescription": "任务类型不正确或不受支持"}ลำดับการตรวจสอบ
หัวข้อที่มีชื่อว่า “ลำดับการตรวจสอบ”เซิร์ฟเวอร์จะตรวจสอบคำขอตามลำดับนี้ และเมื่อพบปัญหาแรกจะคืนรหัสข้อผิดพลาดที่ตรงกันทันที โดยไม่หักพอยต์:
- เนื้อหาคำขอเป็น JSON ที่ถูกต้อง:
ERROR_REQUEST_FORMATS - มี
clientKey:ERROR_REQUIRED_FIELDS clientKeyมีอยู่ในระบบ:ERROR_KEY_DOES_NOT_EXIST- ไม่ได้ถูกหยุดชั่วคราวอัตโนมัติ:
ERROR_IP_BLOCKED_5MIN(ดู ขีดจำกัดงานพร้อมกันและการหยุดชั่วคราวอัตโนมัติ) - ยอดคงเหลือมากกว่า 10 พอยต์:
ERROR_ZERO_BALANCE - มี
task:ERROR_TASK_ABSENT - มี
task.type:ERROR_TASK_NOT_SUPPORTED - ฟิลด์ที่จำเป็นครบถ้วน:
ERROR_REQUIRED_FIELDS(errorDescriptionจะระบุว่าขาดฟิลด์ใด) - รูปภาพของงานประเภทรูปภาพถูกต้อง:
ERROR_ZERO_CAPTCHA_FILESIZE,ERROR_IMAGE_TYPE_NOT_SUPPORTEDเป็นต้น
ตัวอย่างฉบับสมบูรณ์
หัวข้อที่มีชื่อว่า “ตัวอย่างฉบับสมบูรณ์”สร้างงานและทำ polling (เรียกตรวจซ้ำเป็นระยะ) เพื่อรอผลลัพธ์ (ประเภทแบบอะซิงโครนัส):
curl -s https://api.yescaptcha.com/createTask \ -H 'Content-Type: application/json' \ -d '{ "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "NoCaptchaTaskProxyless", "websiteURL": "https://www.google.com/recaptcha/api2/demo", "websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-" }}'
# Returns {"errorId":0,"taskId":"..."}; then poll every 5 seconds:curl -s https://api.yescaptcha.com/getTaskResult \ -H 'Content-Type: application/json' \ -d '{"clientKey": "YOUR_CLIENT_KEY", "taskId": "TASK_ID"}'import osimport time
import requests
API = "https://api.yescaptcha.com"CLIENT_KEY = os.environ["YESCAPTCHA_CLIENT_KEY"] # Read the clientKey from an environment variable
def call(method, payload): r = requests.post(f"{API}/{method}", json={"clientKey": CLIENT_KEY, **payload}, timeout=30) data = r.json() if data.get("errorId"): raise RuntimeError(f"{data.get('errorCode')}: {data.get('errorDescription')}") return data
def solve(task): task_id = call("createTask", {"task": task})["taskId"] for _ in range(36): # Poll every 5 seconds, for up to about 3 minutes time.sleep(5) result = call("getTaskResult", {"taskId": task_id}) if result.get("status") == "ready": return result["solution"] raise TimeoutError(task_id)
solution = solve({ "type": "NoCaptchaTaskProxyless", "websiteURL": "https://www.google.com/recaptcha/api2/demo", "websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",})print(solution["gRecaptchaResponse"])const API = 'https://api.yescaptcha.com';const CLIENT_KEY = process.env.YESCAPTCHA_CLIENT_KEY; // Read the clientKey from an environment variable
async function call(method, payload) { const res = await fetch(`${API}/${method}`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ clientKey: CLIENT_KEY, ...payload }), }); const data = await res.json(); if (data.errorId) throw new Error(`${data.errorCode}: ${data.errorDescription}`); return data;}
async function solve(task) { const { taskId } = await call('createTask', { task }); for (let i = 0; i < 36; i++) { // Poll every 5 seconds, for up to about 3 minutes await new Promise((r) => setTimeout(r, 5000)); const result = await call('getTaskResult', { taskId }); if (result.status === 'ready') return result.solution; } throw new Error(`timeout: ${taskId}`);}
const solution = await solve({ type: "NoCaptchaTaskProxyless", websiteURL: "https://www.google.com/recaptcha/api2/demo", websiteKey: "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",});console.log(solution.gRecaptchaResponse);© YesCaptcha