ERROR_PROXY_NOT_AUTHORIZED nghĩa là solver của CaptchaAI không mở được trang đích qua proxy bạn khai báo — thường do sai định dạng, proxy chưa whitelist IP của CaptchaAI, thông tin xác thực hết hạn, hoặc chọn nhầm giao thức HTTP/SOCKS.
Team theo dõi giá trên Shopee, Lazada, Tiki thường xoay hàng trăm proxy qua CaptchaAI mỗi ngày, và lỗi này hay xuất hiện nhất khi đổi sang pool proxy mới. Đội outsourcing/QA làm việc theo ca đêm cũng hay gặp lỗi này khi provider proxy đổi dải IP mà quên cập nhật whitelist. Kiểm tra theo đúng thứ tự dưới đây thay vì đoán mò từng cấu hình một.
Có bắt buộc phải dùng proxy khi giải CAPTCHA không?
Không. Proxy chỉ cần khi trang đích đối chiếu IP solver với IP gửi token — phổ biến ở flow đăng nhập/checkout kiểm soát chặt trên các sàn thương mại điện tử hoặc cổng dịch vụ công cần xác thực địa lý. Với reCAPTCHA v2/v3 hay Turnstile thông thường, CaptchaAI vẫn giải tốt mà không cần khai báo proxy/proxytype trong request. Chỉ thêm proxy khi bạn thực sự gặp lỗi đối chiếu IP hoặc cần solver truy cập trang qua đúng vùng địa lý của người dùng thật.
Nguyên nhân gây ra ERROR_PROXY_NOT_AUTHORIZED
| Nguyên nhân | Cách kiểm tra |
|---|---|
| Sai định dạng proxy | Xác minh đúng cấu trúc type:host:port:user:pass |
| Proxy yêu cầu whitelist IP | Kiểm tra xem nhà cung cấp proxy có whitelist theo IP không |
| Thông tin xác thực proxy đã hết hạn | Test kết nối proxy trực tiếp, tách khỏi CaptchaAI |
| Khai sai loại proxy | Xác minh HTTP so với SOCKS4/SOCKS5 |
| Máy chủ proxy ngừng hoạt động | Ping/kết nối thử tới proxy |
| Ký tự đặc biệt trong mật khẩu | URL-encode mật khẩu trước khi gửi |
Bảng khắc phục ERROR_PROXY_NOT_AUTHORIZED theo triệu chứng
| Vấn đề | Nguyên nhân | Cách xử lý |
|---|---|---|
| Lỗi dù thông tin xác thực đúng | Proxy yêu cầu whitelist IP | Whitelist IP của CaptchaAI hoặc chuyển sang proxy chỉ cần username/password |
| Chạy được cục bộ, lỗi khi qua CaptchaAI | IP máy chủ CaptchaAI chưa được whitelist | Dùng xác thực username/password thay vì whitelist theo IP |
| Proxy SOCKS báo lỗi | Khai sai loại proxy | Thử lại với SOCKS5 hoặc SOCKS4 |
| Lỗi xác thực xảy ra không liên tục | Proxy bị giới hạn tần suất request | Chuyển sang proxy dedicated/premium |
Mật khẩu chứa : làm hỏng định dạng |
Ký tự đặc biệt chưa được escape | URL-encode mật khẩu |
Bảng trên gom theo triệu chứng bạn thực sự nhìn thấy trong log — dùng nó để tra nhanh trước khi đọc phần cấu hình chi tiết bên dưới.
Định dạng proxy đúng khi gửi request tới CaptchaAI
CaptchaAI đọc proxy theo cấu trúc cố định sau:
proxytype: HTTP | HTTPS | SOCKS4 | SOCKS5
proxy: host:port:username:password
import requests
# Correct format
data = {
"key": "YOUR_API_KEY",
"method": "userrecaptcha",
"googlekey": "SITE_KEY",
"pageurl": "https://example.com",
"proxytype": "HTTP",
"proxy": "192.168.1.1:8080:myuser:mypass",
"json": 1,
}
resp = requests.post("https://ocr.captchaai.com/in.php", data=data)
Các biến thể định dạng proxy thường gặp
# With authentication
proxy = "192.168.1.1:8080:username:password"
# Without authentication (rare — most captcha proxies need auth)
proxy = "192.168.1.1:8080"
# SOCKS5
proxytype = "SOCKS5"
proxy = "192.168.1.1:1080:user:pass"
Vài lưu ý khi chọn biến thể phù hợp:
- Đa số proxy trả captcha yêu cầu username/password — proxy không xác thực chỉ nên dùng khi bạn kiểm soát toàn bộ dải IP nội bộ.
- SOCKS5 thường ổn định hơn HTTP khi trang đích chặn theo header, nhưng không phải solver nào cũng hỗ trợ SOCKS ở mọi cổng — kiểm tra tài liệu provider trước khi đổi.
- Giữ nguyên
proxytypekhớp với cổng thực tế provider cấp; khaiHTTPcho cổng SOCKS (hoặc ngược lại) là nguyên nhân âm thầm gâyERROR_PROXY_NOT_AUTHORIZEDmà log không nói rõ.
Test proxy trước khi gửi task
Đừng gửi task lên CaptchaAI rồi mới biết proxy hỏng — test cục bộ trước:
import re
import requests
def validate_proxy(proxy_str, proxy_type="HTTP"):
"""Validate proxy format and connectivity."""
# Check format
parts = proxy_str.split(":")
if len(parts) < 2:
raise ValueError(f"Invalid proxy format: {proxy_str}")
host = parts[0]
port = parts[1]
if not port.isdigit():
raise ValueError(f"Invalid port: {port}")
# Check proxy type
valid_types = {"HTTP", "HTTPS", "SOCKS4", "SOCKS5"}
if proxy_type not in valid_types:
raise ValueError(f"Invalid proxy type: {proxy_type}")
return True
def test_proxy(proxy_str, proxy_type="HTTP"):
"""Test if proxy is working."""
parts = proxy_str.split(":")
host = parts[0]
port = parts[1]
if len(parts) == 4:
user, password = parts[2], parts[3]
proxy_url = f"{proxy_type.lower()}://{user}:{password}@{host}:{port}"
else:
proxy_url = f"{proxy_type.lower()}://{host}:{port}"
proxies = {"http": proxy_url, "https": proxy_url}
try:
resp = requests.get(
"https://httpbin.org/ip",
proxies=proxies,
timeout=10,
)
print(f"Proxy working. IP: {resp.json()['origin']}")
return True
except Exception as e:
print(f"Proxy failed: {e}")
return False
# Test before using with CaptchaAI
proxy = "192.168.1.1:8080:user:pass"
if test_proxy(proxy, "HTTP"):
print("Proxy is ready to use")
Nếu test_proxy() fail nhưng proxy chạy tốt trong trình duyệt, gần như chắc chắn là do whitelist IP.
Xử lý mật khẩu proxy có ký tự đặc biệt
Mật khẩu chứa :, @ hoặc ! sẽ phá vỡ cấu trúc host:port:user:pass nếu không được encode:
from urllib.parse import quote
def format_proxy(host, port, username, password):
"""Format proxy string, handling special characters."""
# URL-encode password if it contains special characters
safe_password = quote(password, safe="")
return f"{host}:{port}:{username}:{safe_password}"
# Password with special characters
proxy = format_proxy("192.168.1.1", "8080", "user", "p@ss:word!")
Tự động dò loại proxy (HTTP/SOCKS)
Khi nhà cung cấp không nói rõ giao thức, dò cổng mở là cách nhanh nhất để loại trừ phương án sai:
def detect_proxy_type(host, port):
"""Try to detect which proxy protocol works."""
import socket
for proxy_type in ["HTTP", "SOCKS5", "SOCKS4"]:
try:
# Basic TCP connection test
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(5)
result = sock.connect_ex((host, int(port)))
sock.close()
if result == 0:
return proxy_type # Port is open, try this type
except Exception:
continue
return None
Câu hỏi thường gặp
ERROR_PROXY_NOT_AUTHORIZED có luôn do sai định dạng proxy không?
Không hẳn. Sai định dạng là nguyên nhân phổ biến nhất, nhưng whitelist IP và thông tin xác thực hết hạn gây lỗi y hệt. Luôn test bằng test_proxy() trước khi kết luận thay vì đổi từng tham số theo cảm tính.
Proxy miễn phí có dùng được với CaptchaAI không?
Kỹ thuật thì được, nhưng không nên. Proxy free thường xác thực không ổn định, gây lỗi ERROR_PROXY_NOT_AUTHORIZED không liên tục — rất khó debug và tốn thời gian retry hơn chi phí proxy trả phí.
Đổi pool proxy hàng loạt thì cần lưu ý gì để tránh lỗi này?
Whitelist IP mới trước khi đổi pool, không đổi giữa lúc job đang chạy. Nếu provider dùng whitelist theo IP thay vì username/password, mỗi lần xoay dải IP bạn phải cập nhật whitelist thủ công hoặc chuyển hẳn sang xác thực username/password để không phụ thuộc IP tĩnh.
Làm sao biết proxy đã whitelist đúng IP CaptchaAI?
Chạy test_proxy() từ chính môi trường gửi request. Chạy được ở local nhưng lỗi khi CaptchaAI gọi nghĩa là nhà cung cấp chưa whitelist IP máy chủ CaptchaAI.
Nên chọn HTTP hay SOCKS5 khi giải CAPTCHA?
Dùng HTTP/HTTPS cho phần lớn trang web. Chuyển sang SOCKS5 khi trang đích yêu cầu hoặc cần ẩn danh tốt hơn. SOCKS4 hiếm khi cần thiết.
Hướng dẫn liên quan
Khắc phục sự cố proxy — giải CAPTCHA với CaptchaAI.