API-Referenz
Limit gleichzeitiger Aufgaben und automatische Pausierung
Diese Seite wurde maschinell aus der chinesischen Version übersetzt und kann Fehler enthalten. Maßgeblich ist die chinesische Version.
Damit die Erkennung für alle Nutzer schnell bleibt, gibt es bei YesCaptcha drei Schutzregeln: ein Limit für die Anzahl der Aufgaben, die ein Konto gleichzeitig in Bearbeitung hat (Limit gleichzeitiger Aufgaben), eine kurze Pausierung eines clientKey, der in kurzer Zeit zu viele Fehler erzeugt (automatische Pausierung), und einen Cache für bereits als ungültig erkannte Parameter, der für einige Zeit direkt den ursprünglichen Fehler zurückgibt. In allen drei Fällen erfolgt kein Punkteabzug.
Limit gleichzeitiger Aufgaben
Abschnitt betitelt „Limit gleichzeitiger Aufgaben“Wir begrenzen pro Konto und pro Aufgabentyp die Anzahl der Aufgaben, die gleichzeitig in Bearbeitung sind. Begrenzt wird die Gleichzeitigkeit, nicht die Anzahl der Anfragen pro Minute.
- Eine Aufgabe gilt ab dem Aufruf von
createTaskbis zur Rückkehr dieses Aufrufs als „in Bearbeitung“. Typen der Bilderkennung liefern das Ergebnis direkt increateTask, daher gilt: Gleichzeitigkeit ≈ pro Sekunde gesendete Aufgaben × Dauer pro Aufgabe. Beispiel: Bei 0.5 Sekunden pro Aufgabe und 40 Aufgaben pro Sekunde liegt die Gleichzeitigkeit bei etwa 20. - Anfragen desselben Kontos werden zusammengerechnet; jeder Aufgabentyp wird getrennt gezählt.
- Anfragen über dem Limit liefern sofort
ERROR_THREADS_MAXIMUM. Das Feldlimitin der Antwort enthält Ihr aktuelles Limit. Es erfolgt kein Punkteabzug, und die Anfragen zählen nicht für die automatische Pausierung. - Wenn die Erkennungsserver überlastet sind, wird das Limit für diesen Aufgabentyp bei dem Konto, das die meiste Erkennungszeit beansprucht, vorübergehend halbiert und nach 10 Minuten automatisch wiederhergestellt. Das bremst nur, das Konto wird nicht pausiert.
- Wenn Sie ein höheres Limit benötigen, wenden Sie sich an den Support. Sobald die Standardlimits der einzelnen Typen feststehen, werden sie auf dieser Seite und im Änderungsprotokoll des Dienstes veröffentlicht.
{ "errorId": 1, "errorCode": "ERROR_THREADS_MAXIMUM", "errorDescription": "This account already has 30 tasks of this type in progress, which is the limit. Lower the concurrency and wait for pending requests to return before sending more; rejected requests are not charged and do not lead to a block.", "limit": 30}(Die Zahlen im Beispiel dienen nur der Veranschaulichung.)
Empfohlene Vorgehensweise
Abschnitt betitelt „Empfohlene Vorgehensweise“- Begrenzen Sie im Programm die Anzahl der Anfragen, die gleichzeitig auf ein Ergebnis warten, zum Beispiel mit einem Semaphor (Semaphore) oder einem Thread-Pool fester Größe, statt nur die Anzahl pro Sekunde zu steuern.
- Warten Sie nach
ERROR_THREADS_MAXIMUM, bis bereits gesendete Anfragen zurückgekehrt sind, bevor Sie neue senden, oder versuchen Sie es nach 1 bis 2 Sekunden erneut. Wiederholen Sie nicht sofort in einer Schleife. - Senden Sie Stapelaufgaben gleichmäßig verteilt und nicht Tausende oder Zehntausende auf einmal.
Beispiel in Python (asyncio):
import asyncioimport os
import aiohttp
CLIENT_KEY = os.environ["YESCAPTCHA_CLIENT_KEY"]LIMIT = 15 # below your concurrency limitsem = asyncio.Semaphore(LIMIT)
async def solve(session, task): async with sem: # at most LIMIT requests in progress at a time result = {} for attempt in range(5): async with session.post( "https://api.yescaptcha.com/createTask", json={"clientKey": CLIENT_KEY, "task": task}, ) as resp: result = await resp.json() if result.get("errorCode") != "ERROR_THREADS_MAXIMUM": return result await asyncio.sleep(1 + attempt) # over the limit: wait and retry return resultAutomatische Pausierung
Abschnitt betitelt „Automatische Pausierung“Erzeugt derselbe clientKey in kurzer Zeit viele fehlerhafte Anfragen, wird das Erstellen von Aufgaben automatisch pausiert:
| Auslöser | Dauer der Pausierung |
|---|---|
| Innerhalb derselben Kalenderminute 100 der unten aufgeführten Fehler | 5 Minuten |
ERROR_IMAGE_TYPE_NOT_SUPPORTED tritt 1 Mal auf |
30 Minuten |
| Innerhalb derselben Kalenderminute 1000 Treffer im „Cache für ungültige Parameter“ | 5 Minuten |
Fehler, die zur Pausierung zählen:
ERROR_REQUEST_FORMATSERROR_TASK_ABSENTERROR_TASK_NOT_SUPPORTEDERROR_KEY_DOES_NOT_EXISTERROR_KEY_EXPIREDERROR_TASKID_INVALIDERROR_SETTLEMENT_FAILEDERROR_HIGH_DEMAND_DOMAINERROR_ZERO_CAPTCHA_FILESIZEERROR_TOO_BIG_CAPTCHA_FILESIZEERROR_IMAGE_TYPE_NOT_SUPPORTEDERROR_ILLEGAL_IMAGE
ERROR_THREADS_MAXIMUM, das durch das Limit gleichzeitiger Aufgaben des Kontos zurückgegeben wird (mit dem Feld limit), zählt nicht mit; der gleichnamige Fehler bei überlasteter Erkennung (ohne limit) zählt mit. Nicht mit zählen unter anderem fehlgeschlagene Erkennungen (ERROR_CAPTCHA_UNSOLVABLE), unzureichendes Guthaben (ERROR_ZERO_BALANCE), fehlende Felder (ERROR_REQUIRED_FIELDS) und nicht unterstützte Fragen (ERROR_UNKNOWN_QUESTION).
Während der Pausierung gilt:
- Betroffen sind nur
createTaskundgetBalance; sie liefernERROR_IP_BLOCKED_5MIN.getTaskResultist nicht betroffen: Vor der Pausierung erstellte Aufgaben können weiterhin abgefragt werden. - Die Antwort enthält
retryAfter(verbleibende Sekunden),blockReason(der Fehlercode, der die Pausierung ausgelöst hat) undblockDetail(Typ, URL und sitekey dieser Anfragen). Korrigieren Sie Ihr Programm anhand dieser Angaben. - Weitere Anfragen verlängern die Pausierung nicht. Sie endet automatisch, Sie müssen den Support nicht kontaktieren.
- Im Dashboard auf yescaptcha.com sehen Sie die Pausierungen der letzten 24 Stunden.
{ "errorId": 1, "errorCode": "ERROR_IP_BLOCKED_5MIN", "errorDescription": "...", "retryAfter": 182, "blockReason": "ERROR_TASK_NOT_SUPPORTED"}Cache für ungültige Parameter
Abschnitt betitelt „Cache für ungültige Parameter“Manche Fehler hängen von den Anfrageparametern ab; ein erneutes Senden mit denselben Parametern ändert das Ergebnis nicht:
ERROR_RECAPTCHA_INVALID_SITEKEYERROR_RECAPTCHA_INVALID_DOMAINERROR_INVALID_KEY_TYPEERROR_DOMAIN_NOT_ALLOWED
Diese Fehler zählen nicht für die automatische Pausierung, sondern werden seitenweit zwischengespeichert: nach der ersten Feststellung für 2 Minuten, bei erneuter Bestätigung innerhalb von 1 Stunde für 10 Minuten. Während der Cache-Dauer liefern gleiche Anfragen (gleicher Aufgabentyp und gleicher websiteKey oder gleiche Website-Domain) direkt den ursprünglichen Fehler, ohne Punkteabzug; die Antwort enthält "cached": true, retryAfter (verbleibende Sekunden im Cache) und badRequest (der betroffene Parameter). Nach Korrektur des websiteKey oder einem Wechsel des Aufgabentyps wirkt sich das sofort aus.
Unterschied zwischen Limit gleichzeitiger Aufgaben und automatischer Pausierung
Abschnitt betitelt „Unterschied zwischen Limit gleichzeitiger Aufgaben und automatischer Pausierung“| Limit gleichzeitiger Aufgaben | Automatische Pausierung | |
|---|---|---|
| Ursache | Zu viele Aufgaben gleichzeitig in Bearbeitung | Zu viele fehlerhafte Anfragen in kurzer Zeit |
| Verhalten | Nur die überzähligen Anfragen werden abgelehnt, ERROR_THREADS_MAXIMUM |
Dieser clientKey kann keine Aufgaben mehr erstellen, ERROR_IP_BLOCKED_5MIN |
| Wiederherstellung | Sobald Anfragen abgeschlossen sind, können neue gesendet werden; ein halbiertes Limit kehrt nach 10 Minuten zurück | Endet automatisch |
| Punkteabzug | Nein | Nein |