Soumettre un jeton reCAPTCHA avec Python HTTPX
Utilisez solution.token, le proxy avec lequel la résolution a réussi et l’identité du navigateur renvoyée lors de l’envoi à la cible. Conservez les cookies de l’application dans un même client HTTPX ; un jeton valide ne remplace pas ses exigences de session ou de protection CSRF.
Sur cette page
Envoyez le jeton prêt à l’emploi via le proxy ayant permis la résolution
Installez HTTPX avec pip install httpx. L’exemple utilise également le SDK Python officiel ; consultez la configuration du SDK Python s’il n’est pas installé.
L’exemple inclut l’appel de résolution pour montrer d’où vient le résultat. Si vous disposez déjà d’un résultat du SDK à l’état ready, réutilisez-le comme result avec la request d’origine. Ne créez pas une autre tâche uniquement pour envoyer son jeton.
- Définissez
SOLVETHREE_API_KEYsur la clé API de votre espace de travail etSOLVETHREE_PROXYsur l’URL du proxy. Conservez la clé API sur le serveur. - Remplacez
accounts.example.com, l’actionloginet l’URL d’envoi par les valeurs de votre cible. Le nom d’hôte doit disposer d’un profil de site actif dans votre espace de travail ; consultez la configuration du profil de site. - Adaptez les champs du formulaire à la requête réelle de l’application. L’exemple envoie uniquement le champ CAPTCHA, pas un formulaire de connexion complet.
# pip install httpx and the official solvethree SDK wheel.
import os
import httpx
from solvethree import Solvethree, successful_proxy
request = {"site": "accounts.example.com", "action": "login", "proxy": os.environ["SOLVETHREE_PROXY"]}
result = Solvethree(os.environ["SOLVETHREE_API_KEY"]).solve(request, timeout=180)
solution = result["solution"]
proxy = successful_proxy(request, result)
if proxy is None:
raise RuntimeError("No valid successful proxy")
with httpx.Client(proxy=proxy, timeout=30, follow_redirects=False, trust_env=False) as target:
# Use this client's cookie jar for any required application session first.
response = target.post("https://accounts.example.com/login",
data={"g-recaptcha-response": solution["token"]},
headers={"User-Agent": solution["userAgent"], "sec-ch-ua": solution["secChUa"]})
print("Application HTTP status:", response.status_code)
# Check the application's actual response and required CSRF/session fields.successful_proxy(request, result) sélectionne le proxy à réutiliser pour l’envoi. Conservez la vérification qui bloque l’envoi si cette fonction ne renvoie aucun proxy valide. Utilisez le paramètre actuel de HTTPX au singulier, proxy=, et non proxies=. Définir trust_env=False empêche les paramètres de proxy de l’environnement de modifier l’itinéraire explicitement sélectionné.
Conservez ensemble les cookies, l’identité du navigateur et les champs du formulaire
Si l’application exige une requête initiale vers une page pour établir une session ou obtenir une valeur CSRF, effectuez cette requête dans le même client HTTPX avant le POST. Son gestionnaire de cookies conserve les cookies d’une requête à l’autre. Un client distinct ne disposera pas automatiquement de cette session.
Utilisez également les valeurs userAgent et secChUa renvoyées pour ces requêtes préliminaires, et non une identité de navigateur sans rapport. L’exemple les fournit dans le POST sous les en-têtes User-Agent et sec-ch-ua. Conservez ces en-têtes et le proxy ayant permis la résolution lors de l’envoi de la solution à la cible prévue.
data= envoie des données de formulaire. Ici, g-recaptcha-response reçoit solution.token ; il ne doit recevoir ni l’ID de la tâche ni le dictionnaire de solution complet. Adaptez le nom du champ à la requête réelle de la cible et incluez dans ce même envoi les identifiants, champs masqués et valeur CSRF requis.
Examinez les redirections avant de considérer l’envoi comme réussi
follow_redirects=False laisse la première réponse de l’application visible. Si elle contient une redirection, examinez son statut et sa destination avant de suivre explicitement l’étape suivante attendue par l’application avec le même client. Ne renvoyez pas automatiquement le jeton à une autre URL.
Le statut HTTP affiché n’est qu’un point de départ. Vérifiez le corps de la réponse, la destination de la redirection ou l’état résultant de l’application pour déterminer si la cible a accepté la requête. Une réponse 200 ou une redirection peut correspondre aussi bien à une réussite qu’à un parcours d’erreur ; l’état ready de solvethree signifie qu’une solution a été générée, pas que la cible l’a acceptée.
Sources et référence de l’API
Lancez votre première tâche.
Démarrez avec $5 de crédit dans votre espace de travail.