Geetest Image Captcha
ภาพรวม
Geetest เป็นระบบแคปช่ายอดนิยมในจีนและประเทศในเอเชีย โดยใช้ความท้าทายแบบโต้ตอบ เช่น การลากจิ๊กซอว์และการจดจำรูปภาพ เราให้บริการแก้ Geetest Image ทุกประเภท (Geetest v3, Geetest v4, ...) บนเบราว์เซอร์ เครื่องจำลอง และฟาร์มโทรศัพท์
เอกสารนี้แนะนำวิธีการจัดการ Geetest Captcha ซึ่งกำหนดให้ผู้ใช้ระบุและคลิกวัตถุตามลำดับบนรูปภาพพื้นหลัง สำหรับแคปช่าประเภทลาก โปรดปฏิบัติตามคำแนะนำสำหรับ Tiktok Captcha ประเภทลาก

1. สร้างงาน
รูปแบบการส่งรูปภาพ
แยกรูปภาพไอคอนและรูปภาพพื้นหลังตามที่แสดงด้านล่าง

คำขอ
POST https://api.achicaptcha.com/createTask
พารามิเตอร์
| ชื่อพารามิเตอร์ | ชนิดข้อมูล | จำเป็น? | คำอธิบาย |
|---|---|---|---|
clientKey | string | ใช่ | คีย์ API |
task.type | string | ใช่ | GeetestImageCaptchaTask |
task.image | string | ใช่ | รายการรูปภาพ base64 ตามหลักการ: icon_1|icon_2|...|icon_n|background (สตริง Base64 คั่นด้วย |) |
task.subType | int | ใช่ | ประเภทแคปช่า: 7: เลือกวัตถุตามลำดับ |
ตัวอย่างคำขอ
POST /createTask HTTP/1.1
Host: api.achicaptcha.com
Content-Type: application/json
{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "GeetestImageCaptchaTask",
"image": "/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT...|/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT...|/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT...",
"subType": 7
}
}หมายเหตุ: พารามิเตอร์ image ต้องเป็นสตริง base64 ของรูปภาพไอคอนและพื้นหลัง คั่นด้วย | ลำดับ: icon_1|icon_2|icon_3|...|background
การตอบกลับ
เมื่อสำเร็จ เซิร์ฟเวอร์จะส่งคืน errorId = 0 และ taskId
{
"errorId": 0,
"taskId": "f2fc70d6-c76b-4fba-9480-205ac1fe9fb9"
}2. รับผลลัพธ์
คำขอ
POST https://api.achicaptcha.com/getTaskResult
พารามิเตอร์
| ชื่อพารามิเตอร์ | ชนิดข้อมูล | จำเป็น? | คำอธิบาย |
|---|---|---|---|
clientKey | string | ใช่ | คีย์ API |
taskId | string | ใช่ | TaskId ที่ได้รับจาก (1) |
ตัวอย่างคำขอ
POST /getTaskResult HTTP/1.1
Host: api.achicaptcha.com
Content-Type: application/json
{
"clientKey": "YOUR_API_KEY",
"taskId": "f2fc70d6-c76b-4fba-9480-205ac1fe9fb9"
}การตอบกลับ
{
"errorId": 0,
"status": "ready",
"solution": "x1,y1,x2,y2,x3,y3"
}คำอธิบายสถานะ
errorId = 0และstatus = ready: แก้ไขสำเร็จ อ่านผลลัพธ์ในsolutionerrorId = 1และstatus = processing: กำลังแก้แคปช่า รอ 1-2 วินาทีแล้วลองอีกครั้งerrorIdother than 0 and 1: ข้อผิดพลาดของระบบ ส่งคืนรหัสข้อผิดพลาดและคำอธิบาย
ความหมายของผลลัพธ์
solution: ส่งคืนพิกัดที่จะคลิกบนแคปช่า รูปแบบx1,y1,x2,y2,x3,y3,...- แต่ละคู่ (x, y) แสดงถึงพิกัดพิกเซลที่จะคลิกบนรูปภาพพื้นหลัง
- ลำดับการคลิกสอดคล้องกับลำดับของไอคอนที่แสดง
ตัวอย่างการรวมระบบ
import requests
import time
def solve_geetest_image(base64_images, sub_type=7, api_key='YOUR_API_KEY'):
# base64_images: "icon1|icon2|icon3|background" - base64 string separated by |
# Step 1: Create task
create_task_url = 'https://api.achicaptcha.com/createTask'
create_task_payload = {
'clientKey': api_key,
'task': {
'type': 'GeetestImageCaptchaTask',
'image': base64_images,
'subType': sub_type
}
}
response = requests.post(create_task_url, json=create_task_payload)
result = response.json()
if result['errorId'] != 0:
raise Exception(result['errorDescription'])
task_id = result['taskId']
# Step 2: Get result
get_result_url = 'https://api.achicaptcha.com/getTaskResult'
while True:
time.sleep(2) # Wait 2 seconds
get_result_payload = {
'clientKey': api_key,
'taskId': task_id
}
response = requests.post(get_result_url, json=get_result_payload)
result = response.json()
if result['errorId'] not in [0, 1]:
raise Exception(result['errorDescription'])
if result['status'] == 'ready':
return result['solution'] # "x1,y1,x2,y2,x3,y3"
# If status == 'processing', continue loop
# Usage
# Assume you have base64 images
icon1_base64 = '/9j/4AAQSkZJRgABAQEASABIAAD...'
icon2_base64 = '/9j/4AAQSkZJRgABAQEASABIAAD...'
icon3_base64 = '/9j/4AAQSkZJRgABAQEASABIAAD...'
background_base64 = '/9j/4AAQSkZJRgABAQEASABIAAD...'
base64_images = f'{icon1_base64}|{icon2_base64}|{icon3_base64}|{background_base64}'
solution = solve_geetest_image(base64_images, 7, 'YOUR_API_KEY')
print('Geetest coordinates:', solution) # "x1,y1,x2,y2,x3,y3"
# Parse coordinates and use
coords = [int(c) for c in solution.split(',')]
for i in range(0, len(coords), 2):
x, y = coords[i], coords[i + 1]
print(f'Click at ({x}, {y})')
# Perform click at coordinates (x, y)รหัสข้อผิดพลาดทั่วไป
| รหัสข้อผิดพลาด | คำอธิบาย | หมายเหตุ |
|---|---|---|
| 0 | success | สำเร็จ |
| 1 | processing | กำลังประมวลผล |
| 2 | missing required fields | ขาดฟิลด์ที่จำเป็น ตรวจสอบพารามิเตอร์อีกครั้ง |
| 3 | task not supported | ไม่รองรับประเภทงาน |
| 4 | task creation failed | การสร้างงานล้มเหลว |
| 5 | client key does not exist | ไม่มีคีย์ API ตรวจสอบคีย์ API อีกครั้ง |
| 6 | insufficient account balance | ยอดเงินในบัญชีไม่เพียงพอ เติมเครดิต |
| 7 | task failed, please create a new task | งานล้มเหลว โปรดสร้างงานใหม่ |
| 8 | task ID does not exist | ไม่มี ID งาน |
แนวทางปฏิบัติที่ดีที่สุด
เพื่อให้ได้ผลลัพธ์ที่ดีที่สุดเมื่อใช้ Achicaptcha API สำหรับ Geetest Image ให้ปฏิบัติตามหลักการเหล่านี้:
1. เตรียมรูปภาพในรูปแบบที่ถูกต้อง
- รูปภาพทั้งหมดต้องได้รับการเข้ารหัสเป็น base64
- ลำดับรูปภาพ:
icon_1|icon_2|...|icon_n|background - รูปภาพ Base64 คั่นด้วยตัวอักษร
| - ตรวจสอบให้แน่ใจว่ารูปภาพพื้นหลังอยู่ท้ายสุดในสตริง
2. ใช้ผลลัพธ์อย่างถูกต้อง
- ผลลัพธ์ที่ส่งคืนคือสตริงพิกัด:
x1,y1,x2,y2,x3,y3,... - แต่ละคู่ (x, y) คือพิกัดพิกเซลบนรูปภาพพื้นหลัง
- ลำดับการคลิกสอดคล้องกับลำดับของไอคอนที่แสดง
- คลิกที่พิกัดอย่างแม่นยำเพื่อทำแคปช่าให้เสร็จสิ้น
3. ช่วงเวลาการตรวจสอบ
- รออย่างน้อย 1-2 วินาทีระหว่างการตรวจสอบผลลัพธ์
- อย่าสแปม API ด้วยคำขอที่ต่อเนื่องกันมากเกินไป
- ตั้งค่าการหมดเวลาเพื่อหลีกเลี่ยงลูปไม่สิ้นสุด (แนะนำ 60 วินาที)
4. การจัดการข้อผิดพลาด
- ตรวจสอบ
errorId = 1สำหรับสถานะการประมวลผล - ลองใหม่สำหรับข้อผิดพลาดชั่วคราว (errorId = 6, 7)
- สร้างงานใหม่หากงานปัจจุบันล้มเหลว
- จำกัดจำนวนการลองใหม่สูงสุด
5. ความปลอดภัยของคีย์ API
- อย่าฮาร์ดโค้ดคีย์ API ในโค้ด
- ใช้ตัวแปรสภาพแวดล้อม
- อย่าเปิดเผยคีย์ API ทางฝั่งไคลเอนต์
- เรียก API จากแบ็กเอนด์/เซิร์ฟเวอร์
ลิงก์ที่มีประโยชน์: