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.

1. Tạo yêu cầu
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 | ImageToTextTask |
task.image | string | yes | base64 của hình ảnh |
task.subType | string | yes | Là 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 = 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": "swamn"
}Giải thích trạng thái
errorId = 0vàstatus = ready: Giải thành công, đọc kết quả trongsolution.texterrorId = 0vàstatus = processing: Đang giải captcha, đợi 2 giây rồi thử lạierrorId > 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:
| SubType | Mô tả |
|---|---|
common | Captcha văn bản thông thường, phổ biến nhất |
amazon | Captcha đặc thù của Amazon với độ méo đặc biệt |
microsoft | Captcha được sử dụng trên các dịch vụ Microsoft |
facebook | Captcha của Facebook với font chữ đặc trưng |
garena | Captcha trên nền tảng Garena |
artistshot | Captcha của website Artistshot |
gmx | Captcha email GMX |
11166 | Loại captcha đặc biệt với mã 11166 |
houssam | Loại captcha đặc thù có tên Houssam |
discord | Loại captcha đặc thù của discord |
okvip | Loại captcha đặc thù okvip |
shopee | Loạ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ỗ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, 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
subTypephù 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: