CaptchaAI поддерживает передачу вашего собственного прокси-сервера в решающий API — это позволяет CaptchaAI решать CAPTCHA с IP-адреса вашего прокси-сервера, не является универсальным обещанием, что токен соответствует IP-адресу, с которого загрузилась страница. Вот как настроить каждый метод аутентификации.
Когда передавать прокси CaptchaAI
| Сценарий | Пропустить прокси? | Почему |
|---|---|---|
| Стандартный reCAPTCHA v2 | Обычно не требуется | Токен работает с любого IP |
| reCAPTCHA v3 | Необязательный | Оценка может зависеть от IP |
| Cloudflare Turnstile | Рекомендуется | Токен привязан к IP |
| страница Cloudflare-защиты в staging | Необходимый | Задача, связанная с интеллектуальной собственностью |
| Сеансы с привязкой к IP | Необходимый | Токен проверен по исходному IP-адресу |
Методы аутентификации
1. Имя пользователя/Password (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. Имя пользователя/Password (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. Белый список 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-адресов вы также должны внести в белый список IP-адреса серверов CaptchaAI, поскольку серверы CaptchaAI будут подключаться к вашему прокси-серверу.
4. 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
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
}
);
Справочник по формату параметров прокси
| тип прокси | формат прокси | Пример |
|---|---|---|
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 |
Форматы, специфичные для поставщика
# 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"
Поиск неисправностей
| Проблема | Причина | Исправить |
|---|---|---|
ERROR_PROXY_NOT_AUTHORIZED |
Неправильные учетные данные или IP-адрес не внесен в белый список. | Проверьте учетные данные прокси-сервера; белый список IP-адресов CaptchaAI |
ERROR_PROXY_CONNECTION_FAILED |
Прокси недоступен от CaptchaAI | Проверить прокси-сервер доступен с внешних IP-адресов |
| Токен отклонен целью | IP-адрес прокси-сервера не соответствует IP-адресу загрузки страницы | Используйте один и тот же липкий сеанс для обоих |
| Медленное решение с прокси | Прокси увеличивает задержку | Примите или используйте более быстрый прокси |
ERROR_BAD_PARAMETERS |
Неправильный формат прокси | Используйте формат host:port:user:pass. |
Часто задаваемые вопросы
Всегда ли мне нужно передавать прокси?
Нет. Большинство реализаций reCAPTCHA v2 не привязывают токены к IP-адресам. Передавайте прокси-сервер только для задач, связанных с IP (Cloudflare, некоторые потоки OAuth).
Замедляет ли прохождение прокси решение?
Немного – CaptchaAI необходимо маршрутизировать через ваш прокси. Добавьте 2–5 секунд к обычному времени решения.
Могу ли я использовать ротацию прокси с параметром прокси CaptchaAI?
Используйте прикрепленные сеансы. Если вы передадите ротационный прокси, CaptchaAI может решить проблему с IP-адреса, отличного от того, с которого загрузилась страница.
Что произойдет, если мой прокси выйдет из строя?
CaptchaAI возвращает ERROR_PROXY_CONNECTION_FAILED. Реализуйте логику повтора с помощью резервного прокси.
Связанные руководства
- SOCKS5 Прокси + CaptchaAI
- Качество прокси влияет на скорость решения
- Яркие данные + CaptchaAI
Передайте свой прокси-сервер CaptchaAI для решения CAPTCHA по IP-адресу —получите свой ключ API.