CaptchaAI prend en charge la transmission de votre propre proxy à l'API de résolution - cela permet à CaptchaAI de résoudre le CAPTCHA à partir de l'adresse IP de votre proxy, garantissant que le jeton correspond à l'adresse IP qui a chargé la page. Voici comment configurer chaque méthode d'authentification.
Quand transmettre une procuration à CaptchaAI
| Scénario | Passer le proxy ? | Pourquoi |
|---|---|---|
| Norme reCAPTCHA v2 | Généralement pas nécessaire | Le jeton fonctionne à partir de n'importe quelle adresse IP |
| reCAPTCHA v3 | Facultatif | Le score peut dépendre de l'adresse IP |
| Cloudflare Turnstile | Recommandé | Le jeton est lié à l'IP |
| Cloudflare Challenge | Obligatoire | Défi lié à la propriété intellectuelle |
| Sessions liées à IP | Obligatoire | Jeton validé par rapport à l'adresse IP d'origine |
Méthodes d'authentification
1. Nom d'utilisateur/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. Nom d'utilisateur/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. Liste blanche IP (pas d'authentification)
Certains fournisseurs de proxy s'authentifient par liste blanche IP plutôt que par informations d'identification :
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")
Important : Pour les proxys sur liste blanche IP, vous devez également mettre sur liste blanche les adresses IP des serveurs de CaptchaAI, car les serveurs de CaptchaAI se connecteront à votre proxy.
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 ...
Exemples 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
}
);
Référence du format des paramètres proxy
| type de proxy | format de procuration | Exemple |
|---|---|---|
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 |
| Liste blanche IP | host:port |
proxy.com:8080 |
Formats spécifiques au fournisseur
# 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"
Dépannage
| Problème | Parce que | Corriger |
|---|---|---|
ERROR_PROXY_NOT_AUTHORIZED |
Informations d'identification erronées ou adresse IP non inscrite sur la liste blanche | Vérifier les informations d'identification du proxy ; liste blanche des IP CaptchaAI |
ERROR_PROXY_CONNECTION_FAILED |
Proxy inaccessible depuis CaptchaAI | Vérifier que le proxy est accessible à partir d'adresses IP externes |
| Jeton rejeté par la cible | L'adresse IP du proxy ne correspond pas à l'adresse IP de chargement de la page | Utilisez la même session collante pour les deux |
| Résolution lente avec proxy | Le proxy ajoute de la latence | Acceptez ou utilisez un proxy plus rapide |
ERROR_BAD_PARAMETERS |
Mauvais format de proxy | Utiliser le format host:port:user:pass |
FAQ
Dois-je toujours passer une procuration ?
Non. La plupart des implémentations de reCAPTCHA v2 ne lient pas les jetons aux adresses IP. Transmettez un proxy uniquement pour les défis liés à l'IP (Cloudflare, certains flux OAuth).
Le passage d'un proxy ralentit-il la résolution ?
Légèrement - CaptchaAI doit être acheminé via votre proxy. Ajoutez 2 à 5 secondes aux temps de résolution typiques.
Puis-je utiliser des proxys rotatifs avec le paramètre proxy de CaptchaAI ?
Utilisez des sessions collantes. Si vous transmettez un proxy rotatif, CaptchaAI peut résoudre à partir d'une adresse IP différente de celle qui a chargé la page.
Que se passe-t-il si mon proxy échoue ?
CaptchaAI renvoie ERROR_PROXY_CONNECTION_FAILED. Implémentez une logique de nouvelle tentative avec un proxy de secours.
Guides connexes
- Proxy SOCKS5 + CaptchaAI
- La qualité du proxy affecte le taux de résolution
- Données lumineuses + CaptchaAI
Transmettez votre proxy à CaptchaAI pour la résolution de CAPTCHA correspondant à l'IP –récupérez votre clé API.