Geetest Image Captcha
Tổng quan
Geetest là một hệ thống captcha phổ biến tại Trung Quốc và các nước châu Á, sử dụng các thử thách tương tác như kéo puzzle, nhận dạng hình ảnh. Chúng tôi cung cấp dịch vụ giải tất cả các loại Geetest Image (Geetest v3, Geetest v4, ...) trên trình duyệt, giả lập, phone farm.
Tài liệu hướng dẫn xử lý Geetest Captcha loại yêu cầu người dùng nhận dạng và click vào các đối tượng theo thứ tự trên hình ảnh background. Đối với loại captcha kéo, vui lòng làm theo hướng dẫn sử dụng Tiktok Captcha loại kéo.

1. Tạo yêu cầu
Mẫu ảnh gửi lên
Cắt riêng các ảnh icon và ảnh background giống mẫu sau

Request
POST https://api.achicaptcha.com/createTask
Tham số
| Tên param | Kiểu dữ liệu | Bắt buộc? | Mô tả |
|---|---|---|---|
clientKey | string | yes | Api key |
task.type | string | yes | GeetestImageCaptchaTask |
task.image | string | yes | Danh sách ảnh dạng base64 theo nguyên tắc: icon_1|icon_2|...|icon_n|background (Các base64 ngăn cách bởi dấu |) |
task.subType | int | yes | Loại captcha: 7: Chọn vật theo thứ tự |
Ví dụ Request
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
}
}Lưu ý: Tham số image phải là chuỗi base64 của các ảnh icon và background, ngăn cách nhau bằng dấu |. Thứ tự: icon_1|icon_2|icon_3|...|background
Response
Khi thành công, server sẽ trả về errorId = 0 và taskId
{
"errorId": 0,
"taskId": "f2fc70d6-c76b-4fba-9480-205ac1fe9fb9"
}2. Lấy kết quả
Request
POST https://api.achicaptcha.com/getTaskResult
Tham số
| Tên param | Kiểu dữ liệu | Bắt buộc? | Mô tả |
|---|---|---|---|
clientKey | string | yes | Api key |
taskId | string | yes | TaskId lấy từ (1) |
Ví dụ Request
POST /getTaskResult HTTP/1.1
Host: api.achicaptcha.com
Content-Type: application/json
{
"clientKey": "API_KEY của bạn",
"taskId": "f2fc70d6-c76b-4fba-9480-205ac1fe9fb9"
}Response
{
"errorId": 0,
"status": "ready",
"solution": "x1,y1,x2,y2,x3,y3"
}Giải thích trạng thái
errorId = 0vàstatus = ready: Giải thành công, đọc kết quả trongsolutionerrorId = 1vàstatus = processing: Đang giải captcha, đợi 1-2 giây rồi thử lạierrorIdkhác 0 và 1: Lỗi hệ thống, đưa ra mã lỗi và mô tả lỗi
Ý nghĩa kết quả trả về
solution: Trả về các tọa độ cần click trên captcha, định dạngx1,y1,x2,y2,x3,y3,...- Mỗi cặp (x, y) đại diện cho tọa độ pixel cần click trên ảnh background
- Thứ tự click tương ứng với thứ tự các icon được hiển thị
Ví dụ tích hợp
import requests
import time
def solve_geetest_image(base64_images, sub_type=7, api_key='YOUR_API_KEY'):
# base64_images: "icon1|icon2|icon3|background" - chuỗi base64 ngăn cách bởi |
# Bước 1: Tạo 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']
# Bước 2: Lấy kết quả
get_result_url = 'https://api.achicaptcha.com/getTaskResult'
while True:
time.sleep(2) # Đợi 2 giây
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"
# Nếu status == 'processing', tiếp tục loop
# Sử dụng
# Giả sử bạn đã có các ảnh dạng base64
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 tọa độ và sử dụng
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})')
# Thực hiện click vào tọa độ (x, y)Các mã lỗi thường gặp
| Mã lỗi | Mô tả | Chú thích |
|---|---|---|
| 0 | success | Thành công |
| 1 | processing | Đang xử lý |
| 2 | missing required fields | Thiếu trường bắt buộc, kiểm tra lại tham số |
| 3 | task not supported | Loại task không được hỗ trợ |
| 4 | task creation failed | Tạo task thất bại |
| 5 | client key does not exist | API key không tồn tại, kiểm tra lại API key |
| 6 | insufficient account balance | Số dư tài khoản không đủ, nạp thêm credit |
| 7 | task failed, please create a new task | Task thất bại, vui lòng tạo task mới |
| 8 | task ID does not exist | Task ID không tồn tại |
Best Practices
Để đạt hiệu quả tốt nhất khi sử dụng API Achicaptcha cho Geetest Image, hãy tuân thủ các nguyên tắc sau:
1. Chuẩn bị ảnh đúng định dạng
- Tất cả ảnh phải được encode sang base64
- Thứ tự ảnh:
icon_1|icon_2|...|icon_n|background - Các ảnh base64 ngăn cách nhau bằng ký tự
| - Đảm bảo ảnh background là ảnh cuối cùng trong chuỗi
2. Sử dụng kết quả đúng cách
- Kết quả trả về là chuỗi tọa độ:
x1,y1,x2,y2,x3,y3,... - Mỗi cặp (x, y) là tọa độ pixel trên ảnh background
- Thứ tự click tương ứng với thứ tự các icon hiển thị
- Click chính xác vào tọa độ để hoàn thành captcha
3. Polling interval
- Đợi ít nhất 1-2 giây giữa các lần kiểm tra kết quả
- Không spam API với quá nhiều request liên tiếp
- Có timeout để tránh vòng lặp vô hạn (khuyến nghị 60 giây)
4. Xử lý lỗi
- Kiểm tra
errorId = 1cho trạng thái processing - Retry cho các lỗi tạm thời (errorId = 6, 7)
- Tạo task mới nếu task hiện tại thất bại
- Giới hạn số lần retry tối đa
5. Bảo mật API key
- Không hardcode API key trong code
- Sử dụng biến môi trường
- Không expose API key ra client-side
- Thực hiện API call từ backend/server
Liên kết hữu ích: