Нужен ли прокси, чтобы решить CAPTCHA через CaptchaAI? Нет — API решает задачу и без него. Но если цель проверяет IP-адрес токена (Cloudflare Turnstile, Cloudflare Challenge, сессия с привязкой к IP), решение с чужого адреса она не примет. Параметр proxy как раз для этого: CaptchaAI решает с того же IP, с которого загружалась страница. Ниже — все способы аутентификации прокси и формат параметров для каждого.
Когда прокси действительно нужен
Решение зависит не от типа CAPTCHA как такового, а от того, сверяет ли цель IP-адрес токена с IP, с которого загружалась страница:
- Обычная reCAPTCHA v2 — прокси обычно не нужен, токен работает с любого IP.
- reCAPTCHA v3 — прокси по желанию: оценка (score) иногда зависит от IP, но жёсткой привязки нет.
- Cloudflare Turnstile — прокси рекомендуется: токен привязан к IP.
- Cloudflare Challenge — прокси обязателен: проверка жёстко завязана на IP-адрес.
- Сессии с привязкой к IP — прокси обязателен: токен сверяется с исходным адресом.
Если сомневаетесь — передавайте прокси. Лишний параметр proxy не мешает решению там, где он не нужен, а вот его отсутствие там, где он обязателен, почти всегда заканчивается отклонённым токеном.
Способы аутентификации прокси
Параметр proxy один и тот же для всех методов — меняется только proxytype и, в третьем случае, формат строки. CaptchaAI поддерживает четыре варианта аутентификации: логин/пароль по HTTP, логин/пароль по SOCKS5, авторизацию по белому списку IP без учётных данных и HTTPS-прокси через CONNECT. Выбор зависит от того, что предоставляет ваш провайдер прокси, а не от типа CAPTCHA, которую вы решаете.
1. Логин и пароль по HTTP
Самый распространённый вариант. Передайте строку host:port:user:pass в параметре proxy и укажите proxytype: 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. Логин и пароль по SOCKS5
Для SOCKS5 формат строки прокси не меняется — меняется только proxytype:
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. Белый список IP-адресов (без логина и пароля)
Часть провайдеров прокси авторизует не по логину и паролю, а по белому списку IP-адресов:
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")
Важно: добавьте в белый список и IP-адреса серверов CaptchaAI — иначе запрос отклонит сам провайдер, а не CaptchaAI, и разбираться придётся не с той стороны.
4. HTTPS-прокси (CONNECT)
Настраивается так же, меняется только proxytype:
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
Та же логика — отправка, опрос res.php, разбор status:
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
}
);
Форматы конкретных провайдеров
Формат строки один — различается только хост и логин провайдера:
# 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"
Типичный кейс: команда парсит данные по ЕС и держит воркеры в европейском дата-центре — под нужную геолокацию берёт резидентный прокси с привязкой к региону. Тогда параметр proxy обязателен: без него решение может прийти с адреса из другой страны, и цель отклонит токен, хотя запрос к API прошёл успешно. Если при этом собираются персональные данные, для аудитории из РФ уместно свериться со 152-ФЗ «О персональных данных» — это дисциплина сбора данных, а не свойство CaptchaAI.
Формат параметра proxy по типам
Сводка форматов строки для всех proxytype, которые принимает API:
| Тип прокси | Формат строки | Пример |
|---|---|---|
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 |
| Белый список IP | host:port |
proxy.com:8080 |
Типичные ошибки и их устранение
ERROR_PROXY_NOT_AUTHORIZED— неверные логин/пароль или IP не в белом списке. Проверьте учётные данные прокси и добавьте IP CaptchaAI в белый список.ERROR_PROXY_CONNECTION_FAILED— CaptchaAI не может достучаться до прокси. Убедитесь, что прокси доступен с внешних IP-адресов, а не только из вашей сети.- Токен отклонён целевым сайтом — IP прокси не совпадает с IP, с которого загружалась страница. Используйте один и тот же липкий (sticky) сеанс для обоих запросов.
- Решение выполняется медленнее обычного — прокси добавляет задержку в маршрут между CaptchaAI и целью. Смиритесь с задержкой или возьмите более быстрый прокси.
ERROR_BAD_PARAMETERS— неверный формат строки прокси. Используйте форматhost:port:user:pass, без лишних пробелов и протокола в начале строки.
Частые вопросы
Как понять, что конкретному сценарию нужен прокси?
Смотрите не на тип CAPTCHA, а на то, проверяет ли цель источник токена. reCAPTCHA v2 почти всегда работает без прокси; Cloudflare Turnstile, Cloudflare Challenge и сессии с привязкой к IP — требуют его практически всегда.
Подойдёт ли бесплатный прокси, или нужен платный?
Технически подойдёт любой прокси, принимающий подключения из внешней сети, но бесплатные и публичные прокси обычно нестабильны и часто уже перегружены — это увеличивает долю ERROR_PROXY_CONNECTION_FAILED и медленных решений. Для продакшена лучше взять выделенный прокси у провайдера уровня Bright Data, Smartproxy или Oxylabs.
Как оформить строку прокси для Bright Data, Smartproxy или Oxylabs?
Формат один — host:port:user:pass, различается только хост и логин провайдера. Примеры выше.
Что делать при ERROR_PROXY_CONNECTION_FAILED?
Серверы CaptchaAI не смогли достучаться до прокси. Проверьте доступность с внешних IP и белый список.
Нужна ли липкая (sticky) сессия при работе с резидентными прокси?
Да, если цель проверяет IP. Ротируемый прокси может отдать CaptchaAI и странице разные узлы — токен решится не с того IP, и цель его отклонит. Большинство провайдеров резидентных прокси включают липкую сессию отдельным параметром или суффиксом в логине — уточните формат у своего провайдера.
Похожие материалы
- Настройка SOCKS5-прокси для CaptchaAI
- Почему браузерная автоматизация падает, а прямой вызов API работает
- Интеграция Bright Data с CaptchaAI
Настройте прокси в первом же запросе — получите API-ключ CaptchaAI.