Gặp lỗi ERROR_PROXY_NOT_AUTHORIZED, hoặc token bị trang đích từ chối dù CaptchaAI báo giải thành công? Nguyên nhân gần như luôn nằm ở cách bạn truyền proxy và proxytype, không phải proxy.
CaptchaAI cho phép chuyển proxy riêng vào request giải, để token khớp đúng IP hệ thống đích nhìn thấy. Dưới đây là 4 phương thức xác thực proxy CaptchaAI hỗ trợ, kèm code chạy được ngay.
Khi nào thực sự cần truyền proxy
| Loại CAPTCHA | Có cần truyền proxy? | Lý do |
|---|---|---|
| reCAPTCHA v2 tiêu chuẩn | Thường không cần | Token hoạt động từ mọi IP |
| reCAPTCHA v3 | Tùy chọn | Điểm số có thể phụ thuộc IP |
| Cloudflare Turnstile | Nên dùng | Token bị ràng buộc theo IP |
| Cloudflare Challenge | Bắt buộc | Thử thách gắn với IP từ đầu |
| Phiên giới hạn theo IP | Bắt buộc | Token chỉ hợp lệ với IP gốc |
Định dạng tham số proxy theo từng loại
| Loại proxy | Định dạng | Ví dụ |
|---|---|---|
HTTP |
host:port:user:pass |
proxy.com:8080:user:pass |
HTTPS |
host:port:user:pass |
proxy.com:8443:user:pass |
SOCKS4 |
host:port:user:pass |
proxy.com:1080:user:pass |
SOCKS5 |
host:port:user:pass |
proxy.com:1080:user:pass |
| Danh sách trắng IP | host:port |
proxy.com:8080 |
Ví dụ thực tế: theo dõi giá trên sàn TMĐT
Một đội QA tại công ty outsourcing ở TP.HCM theo dõi giá niêm yết công khai trên Shopee và Tiki. Các trang này dùng Cloudflare Turnstile — token bị ràng buộc theo IP, nên proxy giải phải khớp proxy đã tải trang, nếu không token vẫn bị từ chối dù hợp lệ về API. Quy trình dưới áp dụng cho mọi thử thách gắn IP tương tự.
Bốn cách xác thực proxy với CaptchaAI
CaptchaAI nhận proxy qua hai tham số proxy và proxytype, xếp từ phổ biến nhất đến ít dùng nhất.
1. Xác thực bằng tên đăng nhập/mật khẩu qua HTTP
import requests
import time
CAPTCHAAI_KEY = "YOUR_API_KEY"
CAPTCHAAI_URL = "https://ocr.captchaai.com"
def solve_with_http_proxy(site_url, sitekey, proxy_host, proxy_port,
proxy_user, proxy_pass):
"""Pass HTTP proxy to CaptchaAI for IP-matched solving."""
proxy_param = f"{proxy_host}:{proxy_port}:{proxy_user}:{proxy_pass}"
resp = requests.post(f"{CAPTCHAAI_URL}/in.php", data={
"key": CAPTCHAAI_KEY,
"method": "userrecaptcha",
"googlekey": sitekey,
"pageurl": site_url,
"proxy": proxy_param,
"proxytype": "HTTP",
"json": 1,
})
data = resp.json()
if data["status"] != 1:
raise Exception(f"Submit: {data['request']}")
task_id = data["request"]
for _ in range(60):
time.sleep(5)
resp = requests.get(f"{CAPTCHAAI_URL}/res.php", params={
"key": CAPTCHAAI_KEY,
"action": "get",
"id": task_id,
"json": 1,
})
data = resp.json()
if data["request"] == "CAPCHA_NOT_READY":
continue
if data["status"] == 1:
return data["request"]
raise Exception(f"Solve: {data['request']}")
raise TimeoutError("Timeout")
# Usage
token = solve_with_http_proxy(
site_url="https://example.com/form",
sitekey="6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
proxy_host="proxy.example.com",
proxy_port=8080,
proxy_user="myuser",
proxy_pass="mypass",
)
2. Xác thực bằng tên đăng nhập/mật khẩu qua SOCKS5
def solve_with_socks5_proxy(site_url, sitekey, proxy_host, proxy_port,
proxy_user, proxy_pass):
"""Pass SOCKS5 proxy to CaptchaAI."""
proxy_param = f"{proxy_host}:{proxy_port}:{proxy_user}:{proxy_pass}"
resp = requests.post(f"{CAPTCHAAI_URL}/in.php", data={
"key": CAPTCHAAI_KEY,
"method": "userrecaptcha",
"googlekey": sitekey,
"pageurl": site_url,
"proxy": proxy_param,
"proxytype": "SOCKS5",
"json": 1,
})
data = resp.json()
task_id = data["request"]
for _ in range(60):
time.sleep(5)
resp = requests.get(f"{CAPTCHAAI_URL}/res.php", params={
"key": CAPTCHAAI_KEY, "action": "get",
"id": task_id, "json": 1,
})
data = resp.json()
if data["request"] != "CAPCHA_NOT_READY":
return data["request"]
raise TimeoutError("Timeout")
3. Danh sách trắng IP (không cần xác thực)
Một số nhà cung cấp proxy xác thực bằng danh sách IP trắng thay vì thông tin đăng nhập:
def solve_with_whitelisted_proxy(site_url, sitekey, proxy_host, proxy_port):
"""Proxy with IP whitelist — no username/password."""
proxy_param = f"{proxy_host}:{proxy_port}"
resp = requests.post(f"{CAPTCHAAI_URL}/in.php", data={
"key": CAPTCHAAI_KEY,
"method": "userrecaptcha",
"googlekey": sitekey,
"pageurl": site_url,
"proxy": proxy_param,
"proxytype": "HTTP",
"json": 1,
})
data = resp.json()
task_id = data["request"]
for _ in range(60):
time.sleep(5)
resp = requests.get(f"{CAPTCHAAI_URL}/res.php", params={
"key": CAPTCHAAI_KEY, "action": "get",
"id": task_id, "json": 1,
})
data = resp.json()
if data["request"] != "CAPCHA_NOT_READY":
return data["request"]
raise TimeoutError("Timeout")
Quan trọng: Với proxy danh sách trắng, bạn còn phải whitelist IP máy chủ của CaptchaAI — chính máy chủ CaptchaAI kết nối tới proxy, không phải trình duyệt của bạn.
4. Proxy HTTPS (CONNECT)
def solve_with_https_proxy(site_url, sitekey, proxy_host, proxy_port,
proxy_user, proxy_pass):
proxy_param = f"{proxy_host}:{proxy_port}:{proxy_user}:{proxy_pass}"
resp = requests.post(f"{CAPTCHAAI_URL}/in.php", data={
"key": CAPTCHAAI_KEY,
"method": "userrecaptcha",
"googlekey": sitekey,
"pageurl": site_url,
"proxy": proxy_param,
"proxytype": "HTTPS",
"json": 1,
})
# ... same polling logic ...
Node.js: cùng logic polling, khác cú pháp
const axios = require("axios");
const CAPTCHAAI_KEY = "YOUR_API_KEY";
const API = "https://ocr.captchaai.com";
async function solveWithProxy(siteUrl, sitekey, proxyConfig) {
const params = {
key: CAPTCHAAI_KEY,
method: "userrecaptcha",
googlekey: sitekey,
pageurl: siteUrl,
proxy: `${proxyConfig.host}:${proxyConfig.port}:${proxyConfig.user}:${proxyConfig.pass}`,
proxytype: proxyConfig.type || "HTTP",
json: 1,
};
const submit = await axios.post(`${API}/in.php`, null, { params });
const taskId = submit.data.request;
for (let i = 0; i < 60; i++) {
await new Promise((r) => setTimeout(r, 5000));
const result = await axios.get(`${API}/res.php`, {
params: { key: CAPTCHAAI_KEY, action: "get", id: taskId, json: 1 },
});
if (result.data.request === "CAPCHA_NOT_READY") continue;
if (result.data.status === 1) return result.data.request;
}
throw new Error("Timeout");
}
// Usage
const token = await solveWithProxy(
"https://example.com/form",
"6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
{
host: "proxy.example.com",
port: 8080,
user: "myuser",
pass: "mypass",
type: "HTTP", // HTTP, HTTPS, SOCKS4, or SOCKS5
}
);
Định dạng proxy theo từng nhà cung cấp
Cú pháp chung: host:port:user:pass.
# Bright Data
proxy = "brd.superproxy.io:22225:brd-customer-ID-zone-residential:PASSWORD"
proxytype = "HTTP"
# Smartproxy
proxy = "gate.smartproxy.com:10001:spuser:sppassword"
proxytype = "HTTP"
# Oxylabs
proxy = "pr.oxylabs.io:7777:customer-USERNAME:PASSWORD"
proxytype = "HTTP"
Xử lý lỗi proxy thường gặp
ERROR_PROXY_NOT_AUTHORIZED— sai thông tin đăng nhập proxy hoặc IP chưa được đưa vào danh sách trắng. Kiểm tra lại thông tin xác thực; whitelist IP CaptchaAI.ERROR_PROXY_CONNECTION_FAILED— CaptchaAI không kết nối được tới proxy. Kiểm tra proxy truy cập được từ ngoài.- Token bị từ chối — IP giải không khớp IP tải trang. Dùng chung một phiên cố định.
- Giải chậm hơn — proxy thêm độ trễ. Chấp nhận hoặc đổi proxy nhanh hơn.
ERROR_BAD_PARAMETERS— sai định dạng proxy. Dùng đúnghost:port:user:pass.
Câu hỏi thường gặp
CaptchaAI hỗ trợ những proxytype nào?
Bốn loại, cùng định dạng tham số proxy (host:port:user:pass), khai báo qua proxytype:
HTTPHTTPSSOCKS4SOCKS5
Proxy của tôi bị lỗi giữa chừng thì làm sao?
Ba bước xử lý:
- Bắt lỗi
ERROR_PROXY_CONNECTION_FAILEDtừ response CaptchaAI - Chuyển sang proxy dự phòng trong danh sách của bạn
- Gửi lại request thay vì để toàn bộ tác vụ thất bại
Proxy HTTP và SOCKS5 khác nhau thế nào khi dùng với CaptchaAI?
Cùng định dạng host:port:user:pass, chỉ khác giá trị proxytype. CaptchaAI xử lý cả hai như nhau — chọn loại nhà cung cấp của bạn đang hỗ trợ.
Vì sao token vẫn bị trang đích từ chối dù CaptchaAI báo giải thành công?
Gần như luôn do proxy giải không phải proxy đã tải trang — thường gặp khi dùng proxy luân phiên. Cố định một phiên cho cả hai bước để IP luôn khớp.
Truyền proxy làm chậm thời gian giải bao nhiêu?
Thường thêm khoảng 2–5 giây so với giải không proxy, vì CaptchaAI phải định tuyến qua proxy của bạn trước khi tải trang.
Hướng dẫn liên quan
- Cấu hình proxy SOCKS5 cho CaptchaAI
- Chất lượng proxy ảnh hưởng thế nào đến tỷ lệ giải thành công
- Tích hợp proxy Bright Data với CaptchaAI
Truyền đúng proxy vào từng request để token luôn khớp IP đã tải trang — lấy API key CaptchaAI tại đây.