Umgehung von Captcha in Python
Integrieren Sie ein Python-Paket, um Captcha automatisch auf jeder Website zu lösen.
Python-Paket zur einfachen Integration mit der API, um den reCAPTCHA zu umgehen, hCaptcha, Arkose captcha, Geetest und beliebige andere Captchas zu lösen
Auf GitHub sind examples zur Umgehung von Captcha mit Python und Selenium veröffentlicht. Das Repository enthält gebrauchsfertige Skripte zur Automatisierung von Captcha-Lösungsprozessen, die eine einfache Integration in bestehende Projekte ermöglichen.
SchnellstartInstallation
Das Skriptpaket kann mit dem Paketinstallationsprogramm oder manuell installiert werden
Pip
Zur automatischen Installation eines Bibliothekspakets müssen Sie die Standardlösung für Python-Pakete verwenden - Pip. Laden Sie es von dem Link herunter und installieren Sie es gemäß den Anweisungen. Nach der Installation der Anwendung, verwenden Sie den Befehl:
pip3 install 2captcha-python
Wir laden Sie ein, unser Repositorium GitHub zu erkunden, in dem Sie Bibliotheken und Module für eine einfache Integration mit unserer API finden können.
Konfiguration
Beschreibung aller notwendigen Parameter zur Konfiguration des installierten Pakets
Eine Instanz der Klasse TwoCaptcha
kann wie folgt erstellt werden:
from twocaptcha import TwoCaptcha
solver = TwoCaptcha('YOUR_API_KEY')
Sie haben auch die Möglichkeit, einige der Optionen für die erstellte Instanz anzupassen:
config = {
'server': '2captcha.com',
'apiKey': 'YOUR_API_KEY',
'softId': 123,
'callback': 'https://your.site/result-receiver',
'defaultTimeout': 120,
'recaptchaTimeout': 600,
'pollingInterval': 10,
}
solver = TwoCaptcha(**config)
Optionen für die TwoCaptcha-Instanz
Option | Standardwert | Beschreibung |
---|---|---|
Server | '2captcha.com' | API-Server. Sie können ihn auf `rucaptcha.com` setzen, wenn Ihr Konto dort registriert ist. |
softId | - | Ihre Software-ID, die Sie nach der Veröffentlichung im 2Captcha Softwarekatalog erhalten |
callback | - | Die URL Ihres Web-Servers, der das Captcha-Erkennungsergebnis empfängt. Die URL sollte zuerst in den Pingback-Einstellungen Ihres Kontos registriert werden. |
defaultTimeout | 120 | Abfragezeitlimit in Sekunden für alle Captcha-Typen außer reCAPTCHA. Definiert, wie lange das Modul versucht, die Antwort vom res.php API-Endpunkt zu erhalten. |
recaptchaTimeout | 600 | Abfragezeitlimit in Sekunden für alle Captcha-Typen. Definiert, wie lange das Modul versucht, die Antwort vom res.php API-Endpunkt zu erhalten. |
pollingInterval | 10 | Intervall in Sekunden zwischen Anfragen an den res.php API-Endpunkt, Werte unter 5 Sekunden werden nicht empfohlen |
WICHTIG: SobaldCallback
für die InstanzTwoCaptcha
definiert ist, geben alle Methoden nur die Captcha-ID zurück und fragen NICHT die API ab, um das Ergebnis zu erhalten. Das Ergebnis wird an die Callback-URL gesendet. Um die Antwort manuell zu erhalten, verwenden Sie die getResult-Methode
Captcha lösen
Wenn Sie ein bildbasiertes Captcha einreichen, können Sie zusätzliche Optionen angeben, um 2Captcha Mitarbeitern zu helfen, es richtig zu lösen
Captcha-Optionen
Option | Standardwert | Beschreibung |
---|---|---|
numeric | 0 | Legt fest, ob Captcha numerische oder andere Symbole enthält Weitere Informationen in den API-Dokumenten |
minLength | 0 | Minimale Länge der Antwort |
maxLength | 0 | maximale Länge der Antwort |
phrase | 0 | definiert, ob die Antwort mehrere Wörter enthält oder nicht |
caseSensitive | 0 | definiert, ob bei der Antwort Groß- und Kleinschreibung zu beachten ist |
calc | 0 | definiert die Berechnung von Captcha |
lang | - | definiert die Captcha-Sprache, siehe die Liste der unterstützten Sprachen |
hintImg | - | ein Bild mit Hinweis, das den Mitarbeitern mit dem Captcha angezeigt wird |
hintText | - | Hinweis oder Aufgabentext, der den Mitarbeitern mit dem Captcha angezeigt wird |
- Normal Captcha
- Text Captcha
- reCAPTCHA v2
- reCAPTCHA v3
- FunCaptcha
- GeeTest
- hCaptcha
- KeyCaptcha
- Capy
- Grid
- Canvas
- ClickCaptcha
- Rotate
Um ein normales Captcha (verzerrter Text auf dem Bild) zu umgehen, verwenden Sie die folgende Methode. Diese Methode kann auch verwendet werden, um einen beliebigen Text auf dem Bild zu erkennen.
result = solver.normal('path/to/captcha.jpg', param1=..., ...)
Diese Methode kann verwendet werden, um ein Captcha zu umgehen, das die Beantwortung einer Frage im Klartext verlangt.
result = solver.text('If tomorrow is Saturday, what day is today?', param1=..., ...)
Verwenden Sie diese Methode, um reCAPTCHA V2 zu lösen und ein Token zur Umgehung des Schutzes zu erhalten.
result = solver.recaptcha(sitekey='6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-',
url='https://mysite.com/page/with/recaptcha',
param1=..., ...)
Diese Methode stellt den reCAPTCHA V3-Löser bereit und gibt ein Token zurück.
result = solver.recaptcha(sitekey='6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-',
url='https://mysite.com/page/with/recaptcha',
version='v3',
param1=..., ...)
FunCaptcha (Arkoselabs) Lösungsmethode. Gibt ein Token zurück.
Methode zum Lösen des GeeTest-Puzzle-Captcha. Gibt eine Reihe von Token als JSON zurück.
Verwenden Sie diese Methode, um die hCaptcha-Herausforderung zu lösen. Gibt ein Token zur Umgehung von Captcha zurück.
result = solver.hcaptcha(sitekey='10000000-ffff-ffff-ffff-000000000001',
url='https://www.site.com/page/',
param1=..., ...)
Token-basierte Methode zur Lösung von KeyCaptcha.
Token-basierte Methode zur Umgehung des Capy Puzzle-Captcha.
Die Grid-Methode wird ursprünglich als Old reCAPTCHA V2 Methode bezeichnet. Die Methode kann verwendet werden, um jede Art von Captcha zu umgehen, bei der Sie ein Gitter auf ein Bild anwenden können und bestimmte Gitterfelder anklicken müssen. Gibt die Anzahl der Felder zurück.
result = solver.grid('path/to/captcha.jpg', param1=..., ...)
Die Methode Canvas kann verwendet werden, wenn Sie eine Linie um ein Objekt auf einem Bild zeichnen müssen. Gibt einen Satz von Punktkoordinaten zurück, um ein Polygon zu zeichnen.
Die ClickCaptcha-Methode gibt die Koordinaten von Punkten auf dem Captcha-Bild zurück. Kann verwendet werden, wenn Sie auf bestimmte Punkte des Bildes klicken müssen.
Diese Methode kann verwendet werden, um ein Captcha zu lösen, bei dem ein Objekt gedreht werden muss. Meistens verwendet, um FunCaptcha zu umgehen. Gibt den Rotationswinkel zurück.
result = solver.rotate('path/to/captcha.jpg', param1=..., ...)
Sonstige Methoden
Zusätzliche gültige Methoden, die bei der Arbeit an den Hauptskripten verwendet werden
send / getResult
Diese Methoden können für die manuelle Captcha-Eingabe und die Abfrage von Antworten verwendet werden.
import time
. . . . .
id = solver.send(file='path/to/captcha.jpg')
time.sleep(20)
code = solver.get_result(id)
balance
Verwenden Sie diese Methode, um das Guthaben Ihres Kontos abzurufen.
balance = solver.balance()
report
Verwenden Sie diese Methode, um positive oder negative Captcha-Antworten zu melden.
solver.report(id, True) # captcha solved correctly
solver.report(id, False) # captcha solved incorrectly
Fehlerbehandlung
Mögliche Varianten von Standardfehlern, die der Dienst bei der Bearbeitung von Anfragen zurückgibt
Im Falle eines Fehlers wirft der Captcha Solver eine Ausnahme. Es ist wichtig, diese Fälle richtig zu behandeln. Wir empfehlen, except
zu verwenden, um Ausnahmen zu behandeln.
Try:
result = solver.text('If tomorrow is Saturday, what day is today?')
Except ValidationException as e:
# invalid parameters passed
print(e)
Except NetworkException as e:
# network error occurred
print(e)
Except ApiException as e:
# api respond with error
print(e)
Except TimeoutException as e:
# captcha is not solved so far
print(e)
Proxys
Sie können Ihren Proxy als zusätzliches Argument für die Methoden: recaptcha, funcaptcha und geetest übergeben. Der Proxy wird an die API weitergeleitet, um das Captcha zu lösen.
proxy={
'type': 'HTTPS',
'uri': 'login:password@IP_address:PORT'
}
async-Aufrufe
Sie können auch async-Aufrufe mit asyncio machen, zum Beispiel:
import asyncio
import concurrent.futures
from twocaptcha import TwoCaptcha
captcha_result = await captchaSolver(image)
async def captchaSolver(image):
loop = asyncio.get_running_loop()
with concurrent.future.ThreadPoolExecutor() as pool:
result = await loop.run_in_executor(pool, lambda: TwoCaptcha(API_KEY).normal(image))
return result