ERROR_CAPTCHA_UNSOLVABLE beheben und sicher erneut versuchen

Kurze Antwort: ERROR_CAPTCHA_UNSOLVABLE bedeutet, dass der Solver Ihre Aufgabe angenommen, sie versucht und keine Antwort zustande gebracht hat. Ihr Schlüssel ist in Ordnung, Ihre Einrichtung ist in Ordnung, und dieser eine Versuch ist gescheitert. Die dokumentierte Lösung besteht darin, eine neue Aufgabe einzureichen und es erneut zu versuchen – nicht dieselbe Captcha-ID erneut abzufragen. Dieser Leitfaden erklärt, warum erneutes Abfragen nie funktioniert, was den Fehlschlag je Captcha-Typ tatsächlich verursacht, und zeigt eine Retry-Schleife, die sich nicht endlos dreht.
Was der Fehler bedeutet und woher er kommt
Anders als ein Schlüssel- oder Parameterfehler tritt dieser nicht beim Einreichen auf. Ihr Aufruf von /in.php war erfolgreich und hat eine ID zurückgegeben. Der Fehlschlag zeigt sich erst später, wenn Sie /res.php nach dem Ergebnis abfragen.
# Submit: this part worked, you got an ID back curl "http://127.0.0.1:8080/in.php?key=YOUR_API_KEY&method=userrecaptcha&googlekey=YOUR_SITEKEY&pageurl=https://example.com/page-with-recaptcha" OK|2122988149 # Poll: the attempt finished, and it finished badly curl "http://127.0.0.1:8080/res.php?key=YOUR_API_KEY&action=get&id=2122988149" ERROR_CAPTCHA_UNSOLVABLE
Die Reihenfolge sagt Ihnen also etwas Nützliches: Alles bis einschließlich des Einreichens war korrekt. Das Problem liegt in dem, was Sie eingereicht haben, nicht darin, wie Sie es eingereicht haben.
Warum ein erneuter Versuch mit derselben ID nie hilft
Zwei Gründe, und beide sind struktureller Natur.
Erstens ist der Versuch vorbei. Das Ergebnis für diese ID ist endgültig, und erneutes Abfragen startet keinen zweiten Versuch. Zweitens sind Ergebnisse nur einmal lesbar. Sobald Sie ein Ergebnis von /res.phpgelesen haben, hat diese ID Ihnen nichts mehr zu geben.
Wenn Ihre Fehlerbehandlung nach einem Fehlschlag weiter dieselbe ID abfragt, dreht sie sich, bis Ihr Timeout greift, und meldet dann einen Timeout – womit Sie am falschen Ende zu debuggen beginnen. Erneut versuchen heißt, erneut /in.php aufzurufen und eine neue ID zu bekommen. Das ist das Gegenteil von CAPCHA_NOT_READY, wo der richtige Schritt darin besteht, weiter die vorhandene ID abzufragen.
Was ihn tatsächlich verursacht, nach Captcha-Typ
Bild-Captchas: meist liegt es an der Eingabe
Bei Bildern kommt eine wirklich unlösbare Eingabe am häufigsten vor, denn die Pixel bestimmen Sie. Prüfen Sie die Datei, bevor Sie den Solver verantwortlich machen.
- Größenbeschränkungen. Über 600 kB oder über 1000 px in einer Dimension liefert
ERROR_TOO_BIG_CAPTCHA_FILESIZEstatt dieses Fehlers – Bilder nahe an diesen Grenzen sind aber häufig Screenshots einer ganzen Seite. - Sie haben den falschen Bereich zugeschnitten. Ein Zuschnitt, der die Beschriftung, den Rahmen oder das halbe nächste Feld enthält, ist ein deutlich schwierigeres Bild als das Captcha allein.
- Sie haben den Platzhalter gespeichert. Die Bild-URL separat abzurufen liefert oft ein frisches, anderes Captcha, ein abgelaufenes oder ein 1×1-Pixel. Greifen Sie die Bytes ab, die der Browser bereits hat.
- Format. Ein beschädigtes oder unerwartetes Format ergibt
ERROR_INVALID_IMAGE, und ein fehlerhafter Data-URI ergibtERROR_INVALID_BASE64.
Speichern Sie genau die Bytes, die Sie senden, auf die Festplatte und öffnen Sie sie. Die Hälfte aller Bildfehler sieht man in zwei Sekunden. Die Seite Bild-Captcha-Löser listet die akzeptierten Eingabeformen auf: ein Dateipfad, eine entfernte URL oder ein data:image/png;base64, URI.
reCAPTCHA: veralteter Sitekey oder falsche Seiten-URL
Ein Sitekey, der aus zwischengespeichertem Seitenquelltext gelesen oder aus einer Staging-Umgebung kopiert wurde, wird sauber eingereicht und scheitert dann. Dasselbe gilt für eine pageurl , die nicht zu der Seite passt, auf der das Widget tatsächlich sitzt – einschließlich eines fehlenden Schemas oder einer Weiterleitung, der Sie nicht gefolgt sind.
Enterprise ist der andere häufige Fall. Wenn die Website reCAPTCHA Enterprise einsetzt und Sie ohne das Flag enterprise einreichen, wird die Aufgabe gegen die falsche Konfiguration gelöst. Dasselbe gilt für v3: Übergeben Sie versionund übergeben Sie den echten action Wert der Website statt des Standardwerts verify.
In CapSkip gibt es keine Option für einen Mindest-Score. Wenn Sie also Code von einem anderen Dienst portieren, entfernen Sie jeden Parameter min_score oder minScore . Er ist keine Ursache dieses Fehlers, wird aber auch nicht das tun, was Sie erwarten.
Turnstile: Challenge-Seiten brauchen mehr als einen Sitekey
Ein Turnstile-Widget benötigt einen Sitekey und eine URL. Eine vollständige Challenge-Seite benötigt zusätzlich data (den cData-Wert) und pagedata (chlPageData), beide in genau diesem Moment von der Seite gelesen. Reichen Sie eine Challenge-Seite ein, als wäre sie ein Widget, erhalten Sie eine Aufgabe, die der Solver nicht erfüllen kann. Beide Werte sind kurzlebig, holen Sie sie also unmittelbar vor dem Einreichen.
GeeTest: eine abgelaufene Challenge ist meist die Antwort
The gt Der Wert ist pro Website konstant. Der Wert challenge ist einmalig und läuft nach etwa einer Minute ab. Wenn Sie eine Challenge holen, etwas anderes erledigen und dann einreichen, kann sie bereits tot sein. Holen Sie sie unmittelbar vor dem Lösen. Details finden Sie auf der Seite GeeTest-Löser .
Eine Retry-Schleife, die tatsächlich neu versucht
Reichen Sie erneut ein, begrenzen Sie die Versuche und warten Sie dazwischen. Drei Versuche sind eine sinnvolle Obergrenze: Scheitert ein Ziel an drei frischen Einreichungen, ist die Eingabe falsch, und eine vierte behebt das nicht.
# pip install capskip
import time
from capskip import CapSkip, ApiException
solver = CapSkip(host="127.0.0.1", port=8080)
def solve_with_retry(sitekey, url, attempts=3):
for n in range(attempts):
try:
# A fresh call means a fresh task, which is the fix.
return solver.recaptcha(sitekey=sitekey, url=url)
except ApiException as e:
if "UNSOLVABLE" not in str(e) or n == attempts - 1:
raise
time.sleep(2 ** n) # 1s, then 2s
token = solve_with_retry("YOUR_SITEKEY", "https://example.com/page-with-recaptcha")
print(token["code"][:40])Beachten Sie, was sie nicht tut: Sie wiederholt ValidationExceptionnicht, weil falsche Parameter jedes Mal identisch scheitern, und sie wiederholt NetworkExceptionnicht, weil das bedeutet, dass die App nicht erreichbar ist und gleich auch alle anderen Ziele scheitern werden.
Dieselbe Form in Node.js:
// npm install capskip
const { CapSkip } = require('capskip');
const solver = new CapSkip({ host: '127.0.0.1', port: 8080 });
async function solveWithRetry(sitekey, url, attempts = 3) {
for (let n = 0; n < attempts; n++) {
try {
return await solver.recaptcha(sitekey, url);
} catch (e) {
const last = n === attempts - 1;
if (last || !String(e).includes('UNSOLVABLE')) throw e;
await new Promise(r => setTimeout(r, 1000 * 2 ** n));
}
}
}So sorgen Sie dafür, dass es seltener vorkommt
- Lesen Sie den Sitekey aus dem lebenden DOM, nicht aus einer Konstante in Ihrem Code. Websites rotieren sie.
- Senden Sie die URL, auf der Sie tatsächlich sind, nach Weiterleitungen und mit Schema.
- Kurzlebige Werte zuletzt holen. GeeTest-Challenges und Turnstile-cData werden in unter einer Minute schal.
- Schneiden Sie Bilder eng zu und senden Sie die Bytes, die die Seite bereits geladen hat.
- Protokollieren Sie bei jedem Fehlschlag die Captcha-ID. Damit wird ein Muster sichtbar: ein einzelnes schlechtes Ziel gegenüber einem allgemeinen Problem.
- Testen Sie zuerst gegen eine bekannt funktionierende Seite. Scheitert auch eine Seite, die sonst funktioniert, liegt das Problem an Ihrer Umgebung und nicht am Ziel.
Benachbarte Fehlercodes
Diese hier werden am ehesten mit einer unlösbaren Aufgabe verwechselt. Sie bedeuten Unterschiedliches und verlangen unterschiedliche Maßnahmen.
| Code | Bedeutet | Was zu tun ist |
|---|---|---|
CAPCHA_NOT_READY | Wird noch bearbeitet | Fragen Sie weiter dieselbe ID ab |
ERROR_INVALID_IMAGE | Format ist falsch oder die Daten sind beschädigt | Bild neu speichern und die Bytes prüfen |
ERROR_TOO_BIG_CAPTCHA_FILESIZE | Über 600 kB oder über 1000 px | Auf das Captcha selbst zuschneiden |
ERROR_INVALID_BASE64 | Die Base64-Nutzlast lässt sich nicht dekodieren | Data-URI-Präfix entfernen oder das Padding korrigieren |
ERROR_UPLOAD | Es sind keine Bilddaten angekommen | Feldnamen und Request-Body prüfen |
ERROR_GOOGLEKEY | Der Sitekey wurde rundheraus abgelehnt | Lesen Sie ihn erneut von der lebenden Seite |
ERROR_PAGEURL | Die Seiten-URL fehlt oder ist fehlerhaft | Senden Sie die vollständige URL samt Schema |
Jeden Code, den die API zurückgeben kann, samt seiner genauen Bedeutung, finden Sie auf der Seite API-Dokumentation.
Häufig gestellte Fragen
Kostet mich eine fehlgeschlagene Lösung etwas?
Nein. Es gibt keine Gebühr pro Lösung und kein Guthaben, denn die Arbeit passiert auf Ihrem eigenen Rechner. Ein erneuter Versuch kostet Sie Zeit und CPU, sonst nichts – deshalb ist eine Schleife mit drei Versuchen hier vertretbar.
Kann ich das Ergebnis nach dem ersten Lesen erneut abrufen?
Nein. Ergebnisse sind einmal lesbar. Speichern Sie das Token in dem Moment, in dem Sie es erhalten, und betrachten Sie ein zweites Lesen derselben ID als Fehler in Ihrem Code statt als Möglichkeit zur Wiederherstellung.
Würde ein Proxy ein unlösbares Bild-Captcha beheben?
Kann er nicht. Proxys gelten nur für reCAPTCHA, Turnstile und GeeTest, nicht für das Lösen von Bildern. Eine Bildaufgabe wird ausschließlich nach den gesendeten Pixeln beurteilt – korrigieren Sie also stattdessen den Zuschnitt.
Jede Aufgabe auf einer Website scheitert. Ist das immer noch dieser Fehler?
Meist ist es eine einzige falsche Konstante, die überall angewendet wird: ein veralteter Sitekey, ein fehlendes enterprise Flag oder eine Challenge-Seite, die als Widget eingereicht wird. Korrigieren Sie das Ziel einmal, und der ganze Satz läuft durch.
Zusammenfassung
Betrachten Sie error_captcha_unsolvable als Urteil über die Aufgabe, die Sie eingereicht haben. Fragen Sie die alte ID nicht weiter ab. Reichen Sie eine frische ein, begrenzen Sie die Versuche auf drei und stecken Sie die Debugging-Zeit in die Eingaben: den Sitekey, die Seiten-URL, den Zuschnitt und alles Kurzlebige, das Sie zu früh geholt haben.
Das Angenehme an einem lokalen lokaler Captcha-Löser ist, dass dies ein billiger Fehlschlag ist. Es verbrennt kein Guthaben, verbraucht kein Rate-Limit, und Sie können dieselbe Aufgabe so oft reproduzieren, wie es dauert, herauszufinden, welcher Wert falsch war.
