Ein reCAPTCHA-Token mit Python HTTPX übermitteln
Verwenden Sie beim POST an die Zielseite solution.token, den beim Lösen erfolgreichen Proxy und die zurückgegebene Browseridentität. Behalten Sie die Cookies der Anwendung in einem einzigen HTTPX-Client; ein gültiges Token ersetzt weder die Sitzungs- noch die CSRF-Anforderungen der Anwendung.
Auf dieser Seite
Fertiges Token über den erfolgreichen Proxy senden
Installieren Sie HTTPX mit pip install httpx. Das Beispiel verwendet außerdem das offizielle Python-SDK; falls es noch nicht installiert ist, siehe Einrichtung des Python-SDKs.
Das Beispiel enthält den Lösungsaufruf, um zu zeigen, woher das Ergebnis stammt. Wenn Sie bereits ein SDK-Ergebnis mit dem Status ready haben, verwenden Sie es als result zusammen mit der ursprünglichen request weiter. Erstellen Sie keine weitere Aufgabe, nur um deren Token zu übermitteln.
- Setzen Sie
SOLVETHREE_API_KEYauf Ihren Workspace-API-Schlüssel undSOLVETHREE_PROXYauf die Proxy-URL. Bewahren Sie den API-Schlüssel auf dem Server auf. - Ersetzen Sie
accounts.example.com, die Aktionloginund die Übermittlungs-URL durch die Werte Ihrer vorgesehenen Zielseite. Für den Hostnamen muss ein aktives Websiteprofil in Ihrem Workspace vorhanden sein; siehe Einrichtung eines Websiteprofils. - Passen Sie die Formularfelder an die tatsächliche Anfrage der Anwendung an. Das Beispiel sendet nur das CAPTCHA-Feld, kein vollständiges Anmeldeformular.
# 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) wählt den Proxy aus, der für die Übermittlung weiterverwendet wird. Behalten Sie die Prüfung bei, die die Übermittlung stoppt, wenn kein gültiger Proxy zurückgegeben wird. Verwenden Sie den aktuellen HTTPX-Parameter im Singular proxy=, nicht proxies=. Die Einstellung trust_env=False verhindert, dass Proxy-Einstellungen aus der Umgebung die explizit gewählte Route ändern.
Cookies, Browseridentität und Formularfelder zusammenhalten
Wenn die Anwendung eine anfängliche Seitenanfrage benötigt, um eine Sitzung aufzubauen oder einen CSRF-Wert abzurufen, führen Sie diese Anfrage vor dem POST im selben HTTPX-Client aus. Dessen Cookie-Speicher behält Cookies über mehrere Anfragen hinweg bei. Ein separater Client verfügt nicht automatisch über diese Sitzung.
Verwenden Sie auch für diese vorbereitenden Anfragen die zurückgegebenen Werte userAgent und secChUa, keine andere Browseridentität. Das Beispiel übergibt sie beim POST als User-Agent und sec-ch-ua. Behalten Sie diese Header und den erfolgreichen Proxy bei, wenn Sie die Lösung an die vorgesehene Zielseite übermitteln.
data= sendet Formulardaten. Hier erhält g-recaptcha-response den Wert von solution.token; es darf weder die Aufgaben-ID noch das gesamte Lösungs-Dictionary erhalten. Stimmen Sie den Feldnamen auf die tatsächliche Anfrage der Zielseite ab und übermitteln Sie alle erforderlichen Zugangsdaten, versteckten Felder und den CSRF-Wert in derselben Anfrage.
Weiterleitungen prüfen, bevor Sie die Übermittlung als erfolgreich betrachten
Mit follow_redirects=False bleibt die erste Antwort der Anwendung sichtbar. Falls sie weiterleitet, prüfen Sie Status und Ziel, bevor Sie den erwarteten nächsten Schritt der Anwendung mit demselben Client explizit ausführen. Senden Sie das Token nicht automatisch erneut an eine andere URL.
Der ausgegebene HTTP-Status ist nur ein Ausgangspunkt. Prüfen Sie den Antwortinhalt, das Weiterleitungsziel oder den resultierenden Anwendungszustand, um festzustellen, ob die Zielseite die Anfrage akzeptiert hat. Eine 200-Antwort oder eine Weiterleitung kann sowohl Erfolg als auch einen Fehlerablauf darstellen; der solvethree-Status ready bedeutet, dass eine Lösung erzeugt wurde, nicht dass die Zielseite sie akzeptiert hat.
Quellen und API-Referenz
Führe deinen ersten Task aus.
Starte mit $5 Workspace-Guthaben.