Skip to content
API
Grid Captcha
Botion

Botion Grid Captcha

Tổng quan

Botion là loại captcha chọn ô lưới: trang hiển thị ảnh mẫu tham chiếulưới 3×3 ô. Solver phải trả về các ô lưới khớp với ảnh mẫu (chỉ số 0-based, theo hàng: trái sang phải, trên xuống dưới).

🔲

Trường task.image mã hóa hai payload Base64 được nối bằng | — ảnh mẫu trước, sau đó là ảnh lưới.

Botion captcha UI example

1. Tạo yêu cầu

Định dạng gửi ảnh

Ảnh mẫu Botion request payload (sample | grid)

Ảnh lưới Botion request payload (sample | grid)

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.subTypestringyesbotion
task.imagestringyesBASE64_SAMPLE_IMAGE|BASE64_GRID_IMAGE — ảnh mẫu trước, sau đó |, rồi ảnh lưới 3×3 (cả hai đều là Base64, không có tiền tố data:)
task.otherstringnotopk|grid_size. Mặc định là 3|3 nếu bỏ qua

Ví dụ Request

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

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 3×3.

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_botion(sample_path, grid_path, api_key='YOUR_API_KEY', other='3|3'):
    with open(sample_path, 'rb') as f:
        sample_b64 = base64.b64encode(f.read()).decode()
    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': 'botion',
                'image': f'{sample_b64}|{grid_b64}',
                'other': other
            }
        }
    )
    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_botion('sample.png', 'grid.png', '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 Botion Grid Captcha, hãy tuân thủ các nguyên tắc sau:

1. Thứ tự ảnh

  • Luôn gửi ảnh mẫu (tham chiếu) trước, sau đó |, rồi ảnh lưới
  • Không bao gồm tiền tố data:image/...;base64, — chỉ dùng Base64 thuần
  • Đảm bảo cả hai ảnh đã được tải và mã hóa đầy đủ trước khi gửi

2. Tham số task.other

  • Định dạng là topk|grid_size (ví dụ: 3|3)
  • Bỏ qua sẽ mặc định là 3|3, nhưng hãy luôn đặt rõ ràng để tránh hành vi không mong đợi
  • Sai grid_size sẽ làm hỏng ánh xạ chỉ số 0-based trong solution.click

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: