Skip to content
API
Captcha chữ

Captcha chữ

Tổng quan

Captcha thông thường là một hình ảnh có chứa văn bản bị bóp méo nhưng con người có thể đọc được. Để giải quyết hình ảnh xác thực, người dùng phải nhập văn bản từ hình ảnh.

📝

Text captcha có thể bao gồm số, chữ cái hoặc sự kết hợp của cả hai. Chúng thường sử dụng các biến dạng hình ảnh, nhiễu và nhiều phông chữ khác nhau để khiến việc đọc tự động trở nên khó khăn.

Captcha chữ phổ biến

1. Tạo yêu cầu

Request

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

Tham số

Tên paramKiểu dữ liệuBắt buộc?Mô tả
clientKeystringyesApi key
task.typestringyesImageToTextTask
task.imagestringyesbase64 của hình ảnh
task.subTypestringyesLà một trong các loại: common, amazon, microsoft, facebook, garena, artistshot, gmx, 11166, houssam

Ví dụ Request

POST /createTask HTTP/1.1
Host: api.achicaptcha.com
Content-Type: application/json
 
{
  "clientKey": "API_KEY của bạn",
  "task": {
    "type": "ImageToTextTask",
    "image": "base64 encoded của ảnh",
    "subType": "gmx"
  }
}

Response

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

{
  "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 paramKiểu dữ liệuBắt buộc?Mô tả
clientKeystringyesApi key
taskIdstringyesTaskId 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": "swamn"
}

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

  • errorId = 0status = ready: Giải thành công, đọc kết quả trong solution.text
  • errorId = 0status = processing: Đang giải captcha, đợi 2 giây rồi thử lại
  • errorId > 0: Lỗi hệ thống, đưa ra mã lỗi và mô tả lỗi

Các loại SubType

Achicaptcha hỗ trợ nhiều loại text captcha khác nhau thông qua tham số subType:

SubTypeMô tả
commonCaptcha văn bản thông thường, phổ biến nhất
amazonCaptcha đặc thù của Amazon với độ méo đặc biệt
microsoftCaptcha được sử dụng trên các dịch vụ Microsoft
facebookCaptcha của Facebook với font chữ đặc trưng
garenaCaptcha trên nền tảng Garena
artistshotCaptcha của website Artistshot
gmxCaptcha email GMX
11166Loại captcha đặc biệt với mã 11166
houssamLoại captcha đặc thù có tên Houssam
discordLoại captcha đặc thù của discord
okvipLoại captcha đặc thù okvip
shopeeLoại captcha đặc thù shopee
📝

Thông thường subType: common có thể xử lý mọi loại captcha chữ. Nếu captcha chữ ở trang web của bạn quá đặc thù, vui lòng liên hệ admin (opens in a new tab) để được hỗ trợ.

Ví dụ tích hợp

import requests
import time
import base64
 
def solve_captcha(image_path, sub_type='common', api_key='YOUR_API_KEY'):
    # Đọc và encode hình ảnh
    with open(image_path, 'rb') as image_file:
        image_base64 = base64.b64encode(image_file.read()).decode('utf-8')
    
    # Bước 1: Tạo task
    create_task_url = 'https://api.achicaptcha.com/createTask'
    create_task_payload = {
        'clientKey': api_key,
        'task': {
            'type': 'ImageToTextTask',
            'image': image_base64,
            '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'] != 0:
            raise Exception(result['errorDescription'])
        
        if result['status'] == 'ready':
            return result['solution']
        
        # Nếu status == 'processing', tiếp tục loop
 
# Sử dụng
solution = solve_captcha('captcha.png', 'common', 'YOUR_API_KEY')
print('Kết quả captcha:', solution)

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

Best Practices

Để đạt hiệu quả tốt nhất khi sử dụng API Achicaptcha, hãy tuân thủ các nguyên tắc sau:

1. Chất lượng hình ảnh

  • Sử dụng hình ảnh có độ phân giải tốt
  • Đảm bảo hình ảnh không bị mờ hoặc nhiễu quá mức
  • Chọn đúng subType phù hợp với loại captcha

2. Polling interval

  • Đợi ít nhất 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

3. Retry logic

  • 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

4. 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

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