Périmètre sûr : ce guide s'applique exclusivement à vos propres applications — développement, préproduction ou production — ou à des systèmes pour lesquels vous disposez d'une autorisation écrite. Il ne décrit ni l'automatisation de sites tiers, ni la neutralisation de protections anti-bot appartenant à d'autres.
Un proxy SOCKS5 se branche sur une seule variable d'environnement : l'URL socks5h://utilisateur:motdepasse@hote:1080, que votre client HTTP consomme telle quelle. Tout le reste tient dans une décision : quel trafic emprunte la passerelle, et quel trafic ne l'emprunte pas.
Sur vos propres formulaires protégés par un CAPTCHA, la réponse est stable : la navigation vers votre application passe par le proxy, les appels de résolution vers l'API CaptchaAI partent en direct. La suite détaille le paramétrage, la journalisation et les pannes courantes.
Proxy SOCKS5 ou proxy HTTP : ce qui change pour vos tests
SOCKS5 travaille sous la couche applicative : il relaie des flux TCP sans réécrire les requêtes.
| Critère | Proxy HTTP/HTTPS | Proxy SOCKS5 |
|---|---|---|
| Trafic relayé | HTTP et HTTPS | tout flux TCP |
| En-têtes | peut ajouter X-Forwarded-For |
transmis tels quels |
| Résolution DNS | côté client | côté passerelle avec socks5h:// |
| WebSocket | prise en charge partielle | prise en charge complète |
L'intérêt en QA est concret : vous reproduisez le chemin réseau d'un utilisateur réel, résolution DNS comprise, sans que le proxy ne touche à vos en-têtes.
Configurer un proxy SOCKS5 côté client : URL, DNS et secrets
Préférez socks5h:// à socks5://. Le h final délègue la résolution des noms à la passerelle. Sans lui, le runner résout les domaines localement : c'est la première cause d'écart entre un poste de développement et l'intégration continue.
Ne codez jamais les identifiants en dur. L'URL complète vit dans un secret de CI ou un coffre ; le code ne connaît qu'un nom de variable. Un mot de passe contenant @ ou : doit être encodé en URL, sinon la chaîne de connexion se casse en silence.
Fixez un timeout explicite. Une passerelle saturée ne renvoie pas d'erreur : elle laisse la connexion en suspens. Trente secondes sont une borne raisonnable en test.
Exemple Python : la requête vers votre application emprunte la passerelle, rien d'autre.
import os, requests
PROXY = {
'http': os.environ['SOCKS5_URL'],
'https': os.environ['SOCKS5_URL'],
}
r = requests.get(os.environ['QA_BASE_URL'] + '/health', proxies=PROXY, timeout=30)
print(r.status_code)
Où placer les appels de résolution CAPTCHA dans le flux
L'ordre des opérations reste le même quel que soit le langage :
-
Le client HTTP ou le navigateur charge votre page de test via le proxy SOCKS5 et lit le sitekey dans le DOM.
-
Votre script envoie le sitekey et l'URL de la page à l'API CaptchaAI, en direct, puis interroge le résultat jusqu'à obtenir le token.
-
Le token est injecté dans le champ attendu —
g-recaptcha-responsepour reCAPTCHA,cf-turnstile-responsepour Turnstile — et le formulaire est soumis via le proxy, sur la même session qu'à l'étape 1.
Router les appels de résolution par la passerelle allonge le temps de réponse sans rien apporter : réservez-la au trafic dont la provenance compte.
Exemple : une préproduction hébergée en Europe
Une équipe lyonnaise héberge sa préproduction chez OVHcloud et ses runners d'intégration continue dans la région AWS eu-west-3 (Paris). Objectif : vérifier que le parcours d'inscription, protégé par Turnstile, fonctionne pour un utilisateur sortant par une passerelle néerlandaise, ici une instance Scaleway en région nl-ams.
Le runner reçoit SOCKS5_URL par secret, charge la page via la passerelle, envoie le sitekey à CaptchaAI, injecte le token, puis soumet le formulaire. Le budget de latence tient en trois postes : trajet vers la passerelle, temps de résolution, rendu applicatif. Mesurez-les séparément avant d'accuser le proxy.
La facturation CaptchaAI se fait en dollars US, par threads simultanés, avec des résolutions illimitées par thread : une suite nocturne en série tient dans BASIC ($15/mois, 5 threads), une matrice parallélisée justifie STANDARD ($30/mois, 15 threads). Côté RGPD, la passerelle relaie des adresses IP et vos journaux peuvent contenir des données de formulaire : jeux de test fictifs, durée de conservation définie.
Journaliser ce qui sert vraiment au diagnostic
Instrumentez chaque appel CAPTCHA avec quatre valeurs : durée d'obtention du token, code retour HTTP, identifiant de tâche et profondeur de la file d'attente. Ces signaux distinguent une passerelle lente d'une résolution lente, deux pannes indiscernables depuis un test rouge.
Séparez les journaux par environnement et corrélez-les à votre traçage distribué via un identifiant OpenTelemetry : un seul suffit alors à rejouer un scénario complet.
Dépannage : les pannes SOCKS5 les plus fréquentes
| Problème | Cause probable | Correctif |
|---|---|---|
| Connexion refusée | hôte ou port erroné | testez la passerelle avec curl --socks5 |
| Noms résolus localement | URL en socks5:// |
passez en socks5h:// |
| Authentification refusée | caractères spéciaux non encodés | encodez l'URL, relisez le secret CI |
| Résolution en timeout | appels API routés dans la passerelle | sortez l'endpoint du dictionnaire de proxys |
Liste de contrôle avant de lancer la campagne
-
Le périmètre couvre vos applications ou des sources explicitement autorisées.
-
L'URL SOCKS5 et la clé API vivent dans un secret CI, jamais dans le dépôt.
-
Le schéma
socks5h://est utilisé partout, scripts locaux compris. -
Les appels de résolution sortent en direct, hors passerelle.
-
Durées, codes retour et identifiants de tâche sont tracés à chaque exécution.
Questions fréquentes
Faut-il faire passer les appels à l'API CaptchaAI par le proxy SOCKS5 ?
Non, sauf cas particulier. La résolution s'appuie sur le sitekey et l'URL transmis : router ces appels par la passerelle ajoute un saut réseau sans changer le résultat.
socks5:// ou socks5h:// : laquelle des deux choisir ?
socks5h:// presque toujours : le suffixe h confie la résolution DNS à la passerelle, si bien que votre test voit les mêmes réponses qu'elle. Gardez socks5:// pour un nom interne visible du runner seul.
Comment gérer les identifiants du proxy en intégration continue ?
Stockez l'URL complète dans un secret chiffré ou un coffre, puis exposez-la au job comme variable d'environnement. Encodez les caractères spéciaux du mot de passe et masquez la variable dans les logs de build.
Quels types de CAPTCHA puis-je couvrir dans ces tests ?
reCAPTCHA v2 et v3, Cloudflare Turnstile, Cloudflare Challenge, GeeTest v3, les CAPTCHA image/OCR, les grilles d'images et BLS, plus CaptchaFox (bêta), Friendly Captcha (bêta) et Lemin (bêta). hCaptcha et FunCaptcha ne sont pas pris en charge ; GeeTest v4 est à venir.
Ce guide s'applique-t-il à l'automatisation de sites tiers ?
Non. Les exemples portent sur vos applications ou sur des environnements autorisés par écrit. Pour une source externe, vérifiez d'abord les conditions d'utilisation et la base juridique.
Guides connexes
- Démarrage rapide de l'API CaptchaAI
- Tester les CAPTCHA dans des environnements autorisés
- Vérifier l'endpoint de résolution sur vos formulaires
- Intégrer la résolution CAPTCHA à votre CI
- Résoudre reCAPTCHA v2 via l'API
- Résoudre Cloudflare Turnstile via l'API
Un chemin réseau maîtrisé et des journaux exploitables valent mieux qu'une suite de tests que personne ne sait diagnostiquer. – Obtenez votre clé CaptchaAI.