Khắc Phục Sự Cố

ERROR_PROXY_NOT_AUTHORIZED: Sửa lỗi xác thực proxy

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 proxytype khớp với cổng thực tế provider cấp; khai HTTP cho cổng SOCKS (hoặc ngược lại) là nguyên nhân âm thầm gây ERROR_PROXY_NOT_AUTHORIZED mà 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.

Os comentários estão desativados para este artigo.