Skip to content
API
Grid Captcha
Amazon

Amazon Grid Captcha

Tổng quan

Amazon Grid Captcha là loại captcha chọn ô lưới: trang hiển thị câu hỏi/gợi ý và một lưới ô. Solver phải trả về các ô lưới khớp với câu hỏi (chỉ số 0-based, theo hàng: trái sang phải, trên xuống dưới).

🔲

Trường task.image có thể mã hóa ảnh lưới dưới dạng một chuỗi Base64 duy nhất hoặc 9 ảnh 1x1 riêng biệt (Base64, phân cách bằng |)

Amazon Grid Captcha UI example

1. Tạo yêu cầu

Định dạng gửi ảnh

Ảnh lưới 3x3 Amazon Grid Captcha request payload (grid) Hoặc 9 ảnh 1x1 riêng biệt

Request

POST https://api.achicaptcha.com/createTask

Tham số

Tên tham sốKiểu dữ liệuBắt buộc?Mô tả
clientKeystringyesAPI key
task.typestringyesGridCaptcha
task.subTypestringyesamzn
task.imagestringyesẢnh lưới mã hóa Base64
task.otherstringyesVăn bản câu hỏi/gợi ý hiển thị cho người dùng (ví dụ: "the curtains")

Ví dụ Request

POST /createTask HTTP/1.1
Host: api.achicaptcha.com
Content-Type: application/json
 
{
  "clientKey": "YOUR_API_KEY",
  "task": {
    "type": "GridCaptcha",
    "subType": "amzn",
    "image": "BASE64_GRID_IMAGE",
    "other": "the curtains"
  }
}

Phản hồi

Khi thành công, server trả về errorId = 0taskId

{
  "errorId": 0,
  "taskId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}

2. Lấy kết quả

Request

POST https://api.achicaptcha.com/getTaskResult

Tham số

Tên tham sốKiểu dữ liệuBắt buộc?Mô tả
clientKeystringyesAPI key
taskIdstringyesTaskId lấy từ bước (1)

Ví dụ Request

POST /getTaskResult HTTP/1.1
Host: api.achicaptcha.com
Content-Type: application/json
 
{
  "clientKey": "YOUR_API_KEY",
  "taskId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}

Phản hồi

{
  "errorId": 0,
  "status": "ready",
  "solution": {
    "click": "0,2,5"
  }
}

solution.click là chuỗi chỉ số ô 0-based phân cách bằng dấu phẩy (theo hàng) cần nhấp vào lưới.

Giải thích trạng thái

  • errorId = 0status = ready: Giải thành công, đọc chỉ số ô trong solution.click
  • errorId = 0status = processing: Đang giải, chờ 2 giây rồi thử lại
  • errorId > 0: Lỗi hệ thống, kiểm tra errorCodeerrorDescription

Ví dụ tích hợp

import requests
import base64
import time
 
def solve_amzn(grid_path, question, api_key='YOUR_API_KEY'):
    with open(grid_path, 'rb') as f:
        grid_b64 = base64.b64encode(f.read()).decode()
 
    # Bước 1: Tạo task
    create_resp = requests.post(
        'https://api.achicaptcha.com/createTask',
        json={
            'clientKey': api_key,
            'task': {
                'type': 'GridCaptcha',
                'subType': 'amzn',
                'image': grid_b64,
                'other': question
            }
        }
    )
    result = create_resp.json()
 
    if result['errorId'] != 0:
        raise Exception(result['errorDescription'])
 
    task_id = result['taskId']
 
    # Bước 2: Lấy kết quả
    while True:
        time.sleep(2)
        poll_resp = requests.post(
            'https://api.achicaptcha.com/getTaskResult',
            json={'clientKey': api_key, 'taskId': task_id}
        )
        result = poll_resp.json()
 
        if result['errorId'] != 0:
            raise Exception(result['errorDescription'])
 
        if result['status'] == 'ready':
            return result['solution']['click']  # ví dụ: "0,2,5"
 
# Sử dụng
indices = solve_amzn('grid.png', 'the curtains', 'YOUR_API_KEY')
print('Các ô cần nhấp:', indices)

Các mã lỗi thường gặp

Mã lỗiMô tảChú thích
0successThành công
1processingĐang xử lý
2missing required fieldsThiếu trường bắt buộc, kiểm tra lại tham số
3task not supportedLoại task không được hỗ trợ
4task creation failedTạo task thất bại
5client key does not existAPI key không tồn tại, kiểm tra lại API key
6insufficient account balanceSố dư tài khoản không đủ, nạp thêm credit
7task failed, please create a new taskTask thất bại, vui lòng tạo task mới
8task ID does not existTask ID không tồn tại

Thực tiễn tốt nhất

Để đạt kết quả tốt nhất khi sử dụng Achicaptcha API cho Amazon Grid Captcha, hãy tuân thủ các nguyên tắc sau:

1. Mã hóa ảnh

  • Chỉ gửi ảnh lưới dưới dạng một chuỗi Base64 duy nhất
  • Không bao gồm tiền tố data:image/...;base64, — chỉ dùng Base64 thuần
  • Đảm bảo ảnh đã được tải và mã hóa đầy đủ trước khi gửi

2. Tham số task.other

  • Truyền chính xác văn bản câu hỏi hiển thị cho người dùng (ví dụ: "the curtains")
  • Trường này bắt buộc — bỏ qua sẽ gây ra kết quả sai
  • Sao chép chính xác chuỗi câu hỏi từ thử thách captcha

3. Khoảng thời gian polling

  • Chờ ít nhất 2 giây giữa các lần kiểm tra kết quả
  • Không spam API với nhiều request liên tiếp
  • Đặt timeout để tránh vòng lặp vô hạn (khuyến nghị: 60 giây)

4. Xử lý kết quả

  • solution.click là chuỗi chỉ số ô 0-based phân cách bằng dấu phẩy (theo hàng, trái sang phải, trên xuống dưới)
  • Tách theo , và chuyển sang số nguyên trước khi nhấp vào các ô lưới tương ứng

5. Logic retry

  • Implement retry cho các lỗi tạm thời như ERROR_NO_SLOT_AVAILABLE
  • Sử dụng exponential backoff khi retry
  • Giới hạn số lần retry tối đa

6. Bảo mật API key

  • Không hardcode API key trong code
  • Sử dụng biến môi trường hoặc secrets manager
  • Không expose API key ở phía client

Liên kết hữu ích: