Cơ bản
- URL gốc
https://unlock-api.com- API key
- 32 ký tự, có trên trang tài khoản. Gửi dưới dạng clientKey (JSON) hoặc key (in.php, res.php).
- Định dạng
- Phương thức JSON: POST với body JSON. in.php và res.php: trường form qua GET hoặc POST; thêm json=1 để nhận phản hồi JSON.
- Giới hạn
- 1.200 request mỗi phút cho mỗi tài khoản, tính cả lượt kiểm tra kết quả. Chờ khoảng 5 giây sau khi tạo tác vụ, rồi kiểm tra mỗi 5 giây.
- Thời gian tối đa
- Tác vụ không giải xong trong 5 phút sẽ lỗi với ERROR_CAPTCHA_UNSOLVABLE và tiền được trả lại vào số dư.
- Tính phí
- Giá tác vụ bị trừ khi tác vụ được tạo. Tác vụ lỗi được hoàn tiền tự động.
Bắt đầu nhanh
Giải reCAPTCHA v2 bằng các phương thức JSON. Thay YOUR_API_KEY bằng key của bạn.
import time, requests
API = "https://unlock-api.com"
KEY = "YOUR_API_KEY"
task = requests.post(f"{API}/createTask", json={
"clientKey": KEY,
"task": {
"type": "RecaptchaV2TaskProxyless",
"websiteURL": "https://example.com/login",
"websiteKey": "6LcR_RsTAAAAAFJR_5ZdbQd0SMxL7yIDmSXH1-lo"
}
}).json()
if task["errorId"]:
raise SystemExit(task["errorCode"])
while True:
time.sleep(5)
r = requests.post(f"{API}/getTaskResult", json={"clientKey": KEY, "taskId": task["taskId"]}).json()
if r["errorId"]:
raise SystemExit(r["errorCode"]) # failed tasks are refunded
if r["status"] == "ready":
print(r["solution"]["gRecaptchaResponse"])
breakPhương thức JSON
POST /createTask Tạo tác vụ
Body: clientKey và một object task. Loại tác vụ quyết định các trường còn lại; xem Loại tác vụ. Phản hồi: errorId 0 và taskId, hoặc errorId 1 kèm errorCode.
POST https://unlock-api.com/createTask
{"clientKey":"YOUR_API_KEY","task":{"type":"TurnstileTaskProxyless","websiteURL":"https://example.com","websiteKey":"0x4AAAAAAAC3DHQFLr1GavRN"}}
{"errorId":0,"taskId":1001}
{"errorId":1,"errorCode":"ERROR_ZERO_BALANCE","errorDescription":"..."}POST /getTaskResult Lấy kết quả
Body: clientKey và taskId. Khi tác vụ đang chạy: status processing. Khi xong: status ready kèm solution và cost. Tác vụ lỗi trả về errorId 1 kèm errorCode.
POST https://unlock-api.com/getTaskResult
{"clientKey":"YOUR_API_KEY","taskId":1001}
{"errorId":0,"status":"processing"}
{"errorId":0,"status":"ready","solution":{"token":"0.zrSnRHO7h0..."},"cost":"0.0012","createTime":1791640000,"endTime":1791640011,"solveCount":1}POST /getBalance Xem số dư
Body: clientKey. Phản hồi: số dư bằng đô la Mỹ.
{"clientKey":"YOUR_API_KEY"}
{"errorId":0,"balance":42.5}Báo kết quả sai
reportIncorrectRecaptcha và reportIncorrectImageCaptcha nhận clientKey và taskId và trả về success. Chúng được chấp nhận để tương thích với các thư viện hiện có; báo cáo không làm thay đổi số tiền đã trừ.
Phương thức form (in.php, res.php)
Gửi tác vụ: in.php
Trường: key, method và các trường của loại CAPTCHA. Phản hồi: OK|ID, hoặc với json=1 là {"status":1,"request":"ID"}. Lỗi được trả về bằng tên, ví dụ ERROR_ZERO_BALANCE.
POST https://unlock-api.com/in.php
key=YOUR_API_KEY&method=hcaptcha&sitekey=SITE_KEY&pageurl=https://example.com&json=1
OK|1001
{"status":1,"request":"1001"}Lấy kết quả: res.php
action=get&id=ID trả về OK|ANSWER khi đã giải và CAPCHA_NOT_READY khi đang xử lý. action=get2 kèm thêm cost. ids=ID1,ID2 kiểm tra tối đa 100 tác vụ một lúc. action=getbalance trả về số dư. action=reportbad và reportgood được chấp nhận.
GET https://unlock-api.com/res.php?key=YOUR_API_KEY&action=get&id=1001 CAPCHA_NOT_READY OK|P1_eyJ0eXAiOiJKV1Qi... GET https://unlock-api.com/res.php?key=YOUR_API_KEY&action=getbalance 42.5
Phương thức khác
POST /getToken Tạo và chờ: getToken
Body giống createTask. Lệnh gọi chờ tối đa 50 giây và trả về phản hồi giống getTaskResult. Nếu tác vụ vẫn đang chạy, phản hồi là status processing kèm taskId; hãy tiếp tục kiểm tra bằng getTaskResult.
POST https://unlock-api.com/getToken
{"clientKey":"YOUR_API_KEY","task":{"type":"TurnstileTaskProxyless","websiteURL":"https://example.com","websiteKey":"0x4AAAA..."}}
{"errorId":0,"taskId":1001,"status":"ready","solution":{"token":"0.zrSnRHO7h0..."},"cost":"0.000725"}Callback kết quả
Thêm callbackUrl vào createTask (hoặc pingback vào in.php) và kết quả sẽ được gửi tới đó khi tác vụ xong: body JSON giống getTaskResult kèm taskId, hoặc với in.php là body form id=…&code=…. Chỉ gọi tới địa chỉ công khai, một lần, thời gian chờ 5 giây; kết quả vẫn lấy được bằng cách kiểm tra như thường.
{"clientKey":"YOUR_API_KEY","callbackUrl":"https://your.server/captcha-result","task":{...}}
POST https://your.server/captcha-result
{"errorId":0,"taskId":1001,"status":"ready","solution":{...},"cost":"0.0005"}Thống kê
getQueueStats trả về số tác vụ đang chờ và đang giải cùng thời gian giải trung bình trong giờ qua. getSpendingStats trả về số lượng và số tiền theo từng giờ trong một ngày UTC (date dạng unix time). test trả lại đúng body nó nhận được.
POST https://unlock-api.com/getQueueStats {"clientKey":"..."} -> {"errorId":0,"waiting":3,"solving":12,"speed":6.4,"total":15}
POST https://unlock-api.com/getSpendingStats {"clientKey":"...","date":1791590400} -> {"errorId":0,"data":[{"dateFrom":...,"volume":120,"money":0.06},...]}
POST https://unlock-api.com/test {"anything":1} -> {"errorId":0,"received":{"anything":1}}Danh sách IP được phép
Nếu bạn đặt danh sách IP được phép trên trang tài khoản, request từ IP khác sẽ nhận ERROR_IP_NOT_ALLOWED.
Loại tác vụ
Mỗi loại có một tên không proxy và một tên có proxy (bỏ chữ Proxyless). Tên được nhận không phân biệt hoa thường và theo cả cách viết mà các API giải CAPTCHA khác dùng. Tác vụ có proxy cần thêm proxyType (http, socks4, socks5), proxyAddress và proxyPort, hoặc một chuỗi proxy như http://user:[email protected]:8080. Các trường tùy chọn không liệt kê ở đây được chuyển nguyên cho trình giải.
reCAPTCHA v2
Chi tiếtRecaptchaV2TaskProxylessRecaptchaV2Task
Trường
websiteURL (bắt buộc)websiteKey (bắt buộc)
reCAPTCHA v2 Enterprise
Chi tiếtRecaptchaV2EnterpriseTaskProxylessRecaptchaV2EnterpriseTask
Trường
websiteURL (bắt buộc)websiteKey (bắt buộc)
reCAPTCHA v3
Chi tiếtRecaptchaV3TaskProxylessRecaptchaV3Task
Trường
websiteURL (bắt buộc)websiteKey (bắt buộc)
Cloudflare Turnstile
Chi tiếtTurnstileTaskProxylessTurnstileTask
Trường
websiteURL (bắt buộc)websiteKey (bắt buộc)
FunCaptcha (Arkose Labs)
Chi tiếtFunCaptchaTaskProxylessFunCaptchaTask
Trường
websiteURL (bắt buộc)websitePublicKey (bắt buộc)
MTCaptcha
Chi tiếtMtCaptchaTaskProxylessMtCaptchaTask
Trường
websiteURL (bắt buộc)websiteKey (bắt buộc)
Friendly Captcha
Chi tiếtFriendlyCaptchaTaskProxylessFriendlyCaptchaTask
Trường
websiteURL (bắt buộc)websiteKey (bắt buộc)
Lemin Cropped Captcha
Chi tiếtLeminTaskProxylessLeminTask
Trường
websiteURL (bắt buộc)captchaId (bắt buộc)divId (bắt buộc)
DataDome
Chi tiếtDataDomeSliderTask
Trường
websiteURL (bắt buộc)captchaUrl (bắt buộc)userAgent (bắt buộc)
KeyCaptcha
Chi tiếtKeyCaptchaTaskProxylessKeyCaptchaTask
Trường
websiteURL (bắt buộc)s_s_c_user_id (bắt buộc)s_s_c_session_id (bắt buộc)s_s_c_web_server_sign (bắt buộc)s_s_c_web_server_sign2 (bắt buộc)
Prosopo Procaptcha
Chi tiếtProsopoTaskProxylessProsopoTask
Trường
websiteURL (bắt buộc)websiteKey (bắt buộc)
CaptchaFox
Chi tiếtCaptchaFoxTaskProxylessCaptchaFoxTask
Trường
websiteURL (bắt buộc)websiteKey (bắt buộc)
Yandex SmartCaptcha
Chi tiếtYandexSmartCaptchaTaskProxylessYandexSmartCaptchaTask
Trường
websiteURL (bắt buộc)websiteKey (bắt buộc)
Binance Captcha
Chi tiếtBinanceTaskProxylessBinanceTask
Trường
websiteURL (bắt buộc)websiteKey (bắt buộc)
Lỗi
Cùng tên lỗi ở cả hai định dạng. Request bị từ chối do lỗi không bị tính phí.
| Lỗi | Ý nghĩa và cách xử lý |
|---|---|
ERROR_KEY_DOES_NOT_EXIST | Key sai. Hãy sao chép lại từ trang tài khoản. (in.php và res.php: ERROR_WRONG_USER_KEY) |
ERROR_ZERO_BALANCE | Số dư không đủ cho tác vụ. Hãy nạp thêm; chưa có khoản nào bị trừ. |
ERROR_NO_SLOT_AVAILABLE | Hiện có quá nhiều request nên không nhận được tác vụ. Thử lại sau vài giây; chưa có khoản nào bị trừ. |
ERROR_TASK_NOT_SUPPORTED | Loại tác vụ không xác định hoặc đang tắt. Kiểm tra lại tên loại. |
ERROR_BAD_PARAMETERS | Thiếu một trường bắt buộc hoặc trường sai định dạng. |
ERROR_PAGEURL | Thiếu websiteURL hoặc pageurl, hoặc không phải địa chỉ http(s) đầy đủ. |
ERROR_GOOGLEKEY | Thiếu googlekey trong request reCAPTCHA qua in.php. |
ERROR_BAD_PROXY | Tác vụ có proxy cần proxyAddress và proxyPort. |
ERROR_ZERO_CAPTCHA_FILESIZE | Thiếu ảnh hoặc ảnh quá nhỏ. |
ERROR_TOO_BIG_CAPTCHA_FILESIZE | Ảnh lớn hơn 100 KB. |
ERROR_IMAGE_TYPE_NOT_SUPPORTED | Ảnh không phải base64 hợp lệ. |
ERROR_WRONG_CAPTCHA_ID | Không có tác vụ nào với id này trong tài khoản của bạn. |
CAPCHA_NOT_READY | Chỉ với in.php và res.php: tác vụ vẫn đang chạy. Kiểm tra lại sau 5 giây. |
ERROR_CAPTCHA_UNSOLVABLE | Không giải được tác vụ kịp thời gian. Tiền đã được trả lại vào số dư. |
ERROR_TOO_MANY_REQUESTS | Quá nhiều request. Hãy giãn lượt kiểm tra kết quả ra mỗi 5 giây. |
ERROR_IP_NOT_ALLOWED | Request đến từ IP không có trong danh sách được phép của tài khoản. Hãy thêm IP trên trang tài khoản. |