Überwindung von CAPTCHA in Puppeteer-Skripten: Von reCAPTCHA zu Erkennungsdiensten
Lernen Sie effektive Strategien zum Umgehen von CAPTCHAs in Puppeteer-Skripten kennen, einschließlich Stealth-Techniken und Lösungsmethoden für eine bessere Automatisierung.

CAPTCHAs sind dazu gedacht, Bots zu blockieren, wodurch die Automatisierung mit Tools wie Puppenspieler herausfordernd. Dieser Artikel erklärt, wie man CAPTCHA-Probleme umgeht, von Stealth-Techniken bis hin zu Lösungsmethoden. Folgendes lernen Sie:
- Arten von CAPTCHAs: Textbasiert, bildbasiert, reCAPTCHA, hCAPTCHA, und Audio-CAPTCHAs.
- Erkennung vermeiden: Verwenden Sie Puppeteer-Extra-Stealth-Plugins, verwalten Sie Browser-Fingerabdrücke und simulieren Sie menschliches Verhalten (Tippen, Mausbewegungen, Scrollen).
- CAPTCHAs lösen: Integrieren Sie Dienste wie 2Captcha oder verwenden Sie OCR-Tools wie Tesseract für Bild-CAPTCHAs.
- Verbesserung der Erfolgsraten: Rotieren Sie IPs, behandeln Sie Fehler mit Wiederholungsversuchen und optimieren Sie die Ressourcennutzung.
Schneller Vergleich der CAPTCHA-Typen
| CAPTCHA-Typ | Beschreibung | Challenges |
|---|---|---|
| Textbasiert | Verzerrter Text zur Erkennung | Schwer lesbarer komplexer Text |
| Bildbasiert | Objekte/Muster identifizieren | Erfordert visuelle Verarbeitung |
| reCAPTCHA | Googles Risikoanalysesystem | Erkennt botähnliches Verhalten |
| hCAPTCHA | Aufgaben zur Objektidentifizierung | Ähnlich wie reCAPTCHA |
| Audio | Tonbasierte Aufgaben | Komplexe Spracherkennung |
Erfahren Sie, wie Sie mit diesen Methoden die Automatisierung optimieren, gleichzeitig eine Erkennung vermeiden und CAPTCHAs effizient lösen können.
Wie man umgehen kann reCAPTCHA und Puppenspieler und Headless ...
Methoden zur Verhinderung der Bot-Erkennung
Um CAPTCHA-Herausforderungen effektiv zu umgehen, müssen Puppeteer-Skripte das Verhalten echter menschlicher Benutzer nachahmen. Dazu gehören Stealth-Techniken und natürliche Verhaltensmuster.
Einrichten von Puppeteer-extra Stealth
Die Verwendung von puppeteer-extra Mit seinem Stealth-Plugin kann Bot-Erkennung verhindert werden. So richten Sie es ein:
<span class="hljs-keyword">const</span> puppeteer = <span class="hljs-built_in">require</span>(<span class="hljs-string">'puppeteer-extra'</span>)
<span class="hljs-keyword">const</span> <span class="hljs-title class_">StealthPlugin</span> = <span class="hljs-built_in">require</span>(<span class="hljs-string">'puppeteer-extra-plugin-stealth'</span>)
puppeteer.<span class="hljs-title function_">use</span>(<span class="hljs-title class_">StealthPlugin</span>())
Sie können auch bestimmte Ausweichtechniken aktivieren:
puppeteer.<span class="hljs-title function_">use</span>(<span class="hljs-title class_">StealthPlugin</span>({
<span class="hljs-attr">enabledEvasions</span>: <span class="hljs-keyword">new</span> <span class="hljs-title class_">Set</span>([
<span class="hljs-string">"chrome.app"</span>,
<span class="hljs-string">"chrome.csi"</span>,
<span class="hljs-string">"defaultArgs"</span>,
<span class="hljs-string">"navigator.plugins"</span>
])
}))
Das Stealth-Plugin bekämpft gängige Erkennungsmethoden durch:
- Entferne den
navigator.webdriverResorts - Anzeigen für Headless Chrome ausblenden
- Hinzufügen von Chrome-App- und CSI-Objekten
- Browser-Fingerabdrücke anpassen
Browser-Fingerabdruckverwaltung
Browser-Fingerprinting ist ein Schlüsselfaktor bei der Bot-Erkennung. Um ein überzeugendes Browserprofil zu erstellen, konzentrieren Sie sich auf diese Bereiche:
| Konfigurationsbereich | Implementierungsdetails | Zweck |
|---|---|---|
| User Agent | Saiten dynamisch rotieren | Blendet Automatisierungsmarkierungen aus |
| WebGL-Unterstützung | Hardwarebeschleunigung aktivieren | Imitiert ein Standard-Browser-Setup |
| Ansichtsfenstereinstellungen | Verwenden Sie zufällige, realistische Abmessungen | Entspricht gängigen Benutzerkonfigurationen |
| Sprachheader | An das Gebietsschema des Benutzeragenten anpassen | Stellt die Konsistenz im Browserprofil sicher |
Zusätzlich zu statischen Konfigurationen ist die Einbeziehung dynamischer, menschenähnlicher Verhaltensweisen von entscheidender Bedeutung.
Simulation menschlichen Verhaltens
Die Simulation menschlichen Verhaltens trägt dazu bei, das Erkennungsrisiko zu verringern. Hier sind einige effektive Techniken:
- Tippmuster
Führen Sie zufällige Verzögerungen zwischen den Tastenanschlägen ein (z. B. 50 ms bis 200 ms), um die natürliche Tippgeschwindigkeit nachzuahmen und automatisierte Eingabemuster zu vermeiden. - Mausbewegung
Verwenden Sie nichtlineare Mauspfade mit unterschiedlichen Geschwindigkeiten. Kleine, zufällige Abweichungen können menschliche Unvollkommenheiten bei der Cursorsteuerung nachbilden. - Seiteninteraktion
Simulieren Sie realistisches Scrollen mit variablen Geschwindigkeiten und Pausen. Durch zufällige Anpassungen des Ansichtsfensters können Sie Lese- oder Scanverhalten emulieren.
Starten Sie abschließend den Browser mit Argumenten, die die Bot-Erkennung reduzieren:
<span class="hljs-keyword">const</span> browser = <span class="hljs-keyword">await</span> puppeteer.<span class="hljs-title function_">launch</span>({
<span class="hljs-attr">args</span>: [
<span class="hljs-string">'--disable-blink-features=AutomationControlled'</span>,
<span class="hljs-string">'--window-size=1920,1080'</span>
],
<span class="hljs-attr">headless</span>: <span class="hljs-literal">false</span>
})
reCAPTCHA mit Puppeteer lösen
Sobald Stealth-Maßnahmen implementiert sind, ist die effiziente Handhabung von reCAPTCHA für eine zuverlässige Automatisierung unerlässlich. Dies baut auf den zuvor besprochenen Stealth- und Verhaltenssimulationstechniken auf.
Verwenden von CAPTCHA-Lösungsdiensten
Eine Möglichkeit, reCAPTCHA programmgesteuert zu verarbeiten, ist die Integration von CAPTCHA-Lösungsdiensten. Wenn Ihr Skript auf ein reCAPTCHA stößt, sendet es die erforderlichen Parameter an einen Solver-Dienst. Der Dienst verarbeitet das CAPTCHA und gibt die Lösung in der Regel innerhalb von 10–30 Sekunden zurück.
Einrichten 2Captcha API mit Puppeteer
2Captcha ist ein häufig verwendeter Dienst zum Lösen von reCAPTCHAs. So können Sie ihn in Ihr Puppeteer-Setup integrieren:
<span class="hljs-keyword">const</span> puppeteer = <span class="hljs-built_in">require</span>(<span class="hljs-string">'puppeteer-extra'</span>)
<span class="hljs-keyword">const</span> <span class="hljs-title class_">StealthPlugin</span> = <span class="hljs-built_in">require</span>(<span class="hljs-string">'puppeteer-extra-plugin-stealth'</span>)
<span class="hljs-keyword">const</span> path = <span class="hljs-built_in">require</span>(<span class="hljs-string">'path'</span>)
<span class="hljs-comment">// Configure solver extension</span>
<span class="hljs-keyword">const</span> extensionPath = path.<span class="hljs-title function_">join</span>(__dirname, <span class="hljs-string">'./2captcha-solver'</span>)
<span class="hljs-keyword">const</span> apiKey = <span class="hljs-string">'YOUR_2CAPTCHA_API_KEY'</span>
<span class="hljs-comment">// Launch browser with the solver extension</span>
<span class="hljs-keyword">const</span> browser = <span class="hljs-keyword">await</span> puppeteer.<span class="hljs-title function_">launch</span>({
<span class="hljs-attr">args</span>: [
<span class="hljs-string">`--disable-extensions-except=<span class="hljs-subst">${extensionPath}</span>`</span>,
<span class="hljs-string">`--load-extension=<span class="hljs-subst">${extensionPath}</span>`</span>
],
<span class="hljs-attr">headless</span>: <span class="hljs-literal">false</span>
})
Sobald der Browser eingerichtet ist, können Sie den Status des CAPTCHA-Solvers überprüfen:
<span class="hljs-comment">// Wait for solver button and check status</span>
<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">waitForSelector</span>(<span class="hljs-string">'.captcha-solver'</span>)
<span class="hljs-keyword">const</span> solverButton = <span class="hljs-keyword">await</span> page.$(<span class="hljs-string">'.captcha-solver'</span>)
<span class="hljs-keyword">const</span> state = <span class="hljs-keyword">await</span> solverButton.<span class="hljs-title function_">getAttribute</span>(<span class="hljs-string">'data-state'</span>)
<span class="hljs-comment">// Proceed when solved</span>
<span class="hljs-keyword">if</span> (state === <span class="hljs-string">'solved'</span>) {
<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">click</span>(<span class="hljs-string">'#submit-form'</span>)
}
Tipps zur Verbesserung der ReCAPTCHA-Erfolgsraten
Um die Chancen zu verbessern, reCAPTCHAs effektiv zu lösen, befolgen Sie diese Vorgehensweisen:
- Verwenden Sie einen Pool von Residential-Proxys, um IP-Adressen zu rotieren.
- Fügen Sie zwischen den Lösungsversuchen kurze Verzögerungen ein, um das natürliche Benutzerverhalten zu simulieren.
- Schließen Sie die Fehlerbehandlung mit Wiederholungsversuchen mit exponentiellem Backoff ein.
- Behalten Sie den Browserkontext über alle Versuche hinweg bei, um unnötige Neuinitialisierungen zu vermeiden.
So können Sie die Fehlerbehandlung in Ihren CAPTCHA-Lösungsprozess integrieren:
<span class="hljs-keyword">const</span> <span class="hljs-title function_">solveCaptcha</span> = <span class="hljs-keyword">async</span> (<span class="hljs-params">page, maxRetries = <span class="hljs-number">3</span></span>) => {
<span class="hljs-keyword">let</span> attempts = <span class="hljs-number">0</span>
<span class="hljs-keyword">while</span> (attempts < maxRetries) {
<span class="hljs-keyword">try</span> {
<span class="hljs-comment">// Attempt CAPTCHA solution</span>
<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">click</span>(<span class="hljs-string">'.captcha-solver'</span>)
<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">waitForSelector</span>(<span class="hljs-string">'[data-state="solved"]'</span>)
<span class="hljs-keyword">return</span> <span class="hljs-literal">true</span>
} <span class="hljs-keyword">catch</span> (error) {
attempts++
<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">waitForTimeout</span>(<span class="hljs-number">2000</span> * attempts)
}
}
<span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>
}
Eine Fallstudie aus DataScrape-Lösungen unterstreicht die Wirksamkeit dieser Methoden. Im März 2024 erreichte der Einsatz von 2Captcha mit Puppeteer eine 95%ige Reduzierung der manuellen CAPTCHA-Lösungszeit und steigerte die Datenextraktionsraten um 60% bei der Verarbeitung von über 1 Million CAPTCHAs monatlich. [2]..
sbb-itb-23997f1
Bild-CAPTCHA-Erkennungsmethoden
Bild-CAPTCHAs sind darauf ausgelegt, automatisierte Systeme herauszufordern. Mit den richtigen Tools können OCR- und Bildverarbeitungstechniken diese Rätsel jedoch effektiv lösen.
Arten von Bild-CAPTCHAs
- Textbasierte Bilder: Dazu gehören verzerrte Zeichen mit unterschiedlichen Schriftarten und komplexen Hintergründen.
- Objekterkennung: Dabei geht es darum, bestimmte Objekte aus einer Reihe von Optionen zu identifizieren.
- Musterabgleich: Erfordert, dass Benutzer visuelle Muster zuordnen oder identifizieren.
Lassen Sie uns nun in OCR-Methoden eintauchen, die speziell für textbasierte CAPTCHAs entwickelt wurden.
Verwenden von OCR für CAPTCHA-Text
Tesseract OCR ist ein leistungsstarkes Tool zur Texterkennung in Bildern. Nachfolgend finden Sie ein Beispiel für die Integration von Tesseract OCR mit Puppeteer zur Lösung textbasierter CAPTCHAs:
<span class="hljs-keyword">const</span> tesseract = <span class="hljs-built_in">require</span>(<span class="hljs-string">'node-tesseract-ocr'</span>)
<span class="hljs-keyword">const</span> sharp = <span class="hljs-built_in">require</span>(<span class="hljs-string">'sharp'</span>)
<span class="hljs-keyword">async</span> <span class="hljs-keyword">function</span> <span class="hljs-title function_">solveCaptcha</span>(<span class="hljs-params">imageBuffer</span>) {
<span class="hljs-comment">// Preprocess the image to improve OCR performance</span>
<span class="hljs-keyword">const</span> processedImage = <span class="hljs-keyword">await</span> <span class="hljs-title function_">sharp</span>(imageBuffer)
.<span class="hljs-title function_">grayscale</span>()
.<span class="hljs-title function_">threshold</span>(<span class="hljs-number">150</span>)
.<span class="hljs-title function_">toBuffer</span>()
<span class="hljs-keyword">const</span> config = {
<span class="hljs-attr">lang</span>: <span class="hljs-string">"eng"</span>,
<span class="hljs-attr">oem</span>: <span class="hljs-number">1</span>,
<span class="hljs-attr">psm</span>: <span class="hljs-number">7</span>,
}
<span class="hljs-keyword">return</span> <span class="hljs-keyword">await</span> tesseract.<span class="hljs-title function_">recognize</span>(processedImage, config)
}
Die Feinabstimmung der Bildeigenschaften während der Vorverarbeitung spielt eine entscheidende Rolle bei der Steigerung der Erkennungsgenauigkeit.
Verbesserung der Bilderkennungsgenauigkeit
Durch die Verbesserung von Kontrast und Helligkeit können die OCR-Ergebnisse deutlich verbessert werden. Hier ist ein Beispiel für die dynamische Anpassung dieser Einstellungen:
<span class="hljs-keyword">async</span> <span class="hljs-keyword">function</span> <span class="hljs-title function_">enhanceCaptchaRecognition</span>(<span class="hljs-params">page</span>) {
<span class="hljs-keyword">return</span> <span class="hljs-keyword">await</span> page.<span class="hljs-title function_">evaluate</span>(<span class="hljs-function">() =></span> {
<span class="hljs-keyword">const</span> img = <span class="hljs-variable language_">document</span>.<span class="hljs-title function_">querySelector</span>(<span class="hljs-string">'.captcha-image'</span>)
<span class="hljs-keyword">const</span> canvas = <span class="hljs-variable language_">document</span>.<span class="hljs-title function_">createElement</span>(<span class="hljs-string">'canvas'</span>)
<span class="hljs-keyword">const</span> ctx = canvas.<span class="hljs-title function_">getContext</span>(<span class="hljs-string">'2d'</span>)
ctx.<span class="hljs-property">filter</span> = <span class="hljs-string">'contrast(150%) brightness(120%)'</span>
ctx.<span class="hljs-title function_">drawImage</span>(img, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>)
<span class="hljs-keyword">return</span> canvas.<span class="hljs-title function_">toDataURL</span>()
})
}
Beispielsweise erreichte ein Projekt, das auf die taiwanesische Bahnbuchungswebsite abzielte, eine Genauigkeit von 98.84 % für einzelne Ziffern und eine Gesamtgenauigkeit von 91.13 %. [1].Ebenso haben sich Deep-Learning-Methoden für bildbasierte CAPTCHAs als effektiv erwiesen. Ein TensorFlow-basiertes Modell, das ein Convolutional Neural Network nutzt, erreichte eine Erfolgsquote von 90 %. [1].. Durch Experimentieren mit Vorverarbeitungstechniken – wie dem Optimieren von Kontrast, Helligkeit und Schwellenwerten – können die Ergebnisse basierend auf den spezifischen Merkmalen jedes CAPTCHA-Typs weiter verbessert werden.
CAPTCHA-Skriptleistung
Die Erstellung zuverlässiger CAPTCHA-Lösungsskripte erfordert eine effektive Fehlerbehandlung, IP-Rotation und Leistungsoptimierungen. Sobald Sie CAPTCHA-Lösungstechniken eingerichtet haben, liegt der nächste Schritt in der Skripteffizienz.
Fehlerbehebungssysteme
Eine gute Fehlerbehandlung ist der Schlüssel zur Stabilität Ihres Skripts. Hier ist ein Beispiel, das den Vorgang bei einem Fehler wiederholt:
<span class="hljs-keyword">async</span> <span class="hljs-keyword">function</span> <span class="hljs-title function_">handleCaptchaSolution</span>(<span class="hljs-params">page</span>) {
<span class="hljs-keyword">const</span> <span class="hljs-variable constant_">MAX_RETRIES</span> = <span class="hljs-number">3</span>;
<span class="hljs-keyword">let</span> attempts = <span class="hljs-number">0</span>;
<span class="hljs-keyword">while</span> (attempts < <span class="hljs-variable constant_">MAX_RETRIES</span>) {
<span class="hljs-keyword">try</span> {
<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">setDefaultNavigationTimeout</span>(<span class="hljs-number">30000</span>);
<span class="hljs-keyword">const</span> result = <span class="hljs-keyword">await</span> <span class="hljs-title function_">solveCaptcha</span>(page);
<span class="hljs-keyword">return</span> result;
} <span class="hljs-keyword">catch</span> (error) {
<span class="hljs-keyword">if</span> (error <span class="hljs-keyword">instanceof</span> <span class="hljs-title class_">TimeoutError</span>) {
<span class="hljs-variable language_">console</span>.<span class="hljs-title function_">error</span>(<span class="hljs-string">`Attempt <span class="hljs-subst">${attempts + <span class="hljs-number">1</span>}</span>: CAPTCHA timeout`</span>);
} <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (error <span class="hljs-keyword">instanceof</span> <span class="hljs-title class_">NetworkError</span>) {
<span class="hljs-variable language_">console</span>.<span class="hljs-title function_">error</span>(<span class="hljs-string">`Attempt <span class="hljs-subst">${attempts + <span class="hljs-number">1</span>}</span>: Network failure`</span>);
}
attempts++;
<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">waitForTimeout</span>(<span class="hljs-number">2000</span> * attempts);
}
}
<span class="hljs-keyword">throw</span> <span class="hljs-keyword">new</span> <span class="hljs-title class_">Error</span>(<span class="hljs-string">'Maximum retry attempts exceeded'</span>);
}
Dieser Ansatz behandelt Timeouts und Netzwerkprobleme mit inkrementellen Wiederholungsversuchen und stellt sicher, dass Ihr Skript nicht unerwartet abstürzt.
IP- und Browserrotation
Rotierende IP-Adressen und Browser-Fingerabdrücke helfen, eine Erkennung zu vermeiden. So können Sie Puppeteer-Extra-Plugins zu diesem Zweck verwenden:
<span class="hljs-keyword">const</span> puppeteer = <span class="hljs-built_in">require</span>(<span class="hljs-string">'puppeteer-extra'</span>);
<span class="hljs-keyword">const</span> <span class="hljs-title class_">StealthPlugin</span> = <span class="hljs-built_in">require</span>(<span class="hljs-string">'puppeteer-extra-plugin-stealth'</span>);
<span class="hljs-keyword">const</span> <span class="hljs-title class_">AnonymizeUAPlugin</span> = <span class="hljs-built_in">require</span>(<span class="hljs-string">'puppeteer-extra-plugin-anonymize-ua'</span>);
puppeteer.<span class="hljs-title function_">use</span>(<span class="hljs-title class_">StealthPlugin</span>());
puppeteer.<span class="hljs-title function_">use</span>(<span class="hljs-title class_">AnonymizeUAPlugin</span>());
<span class="hljs-keyword">async</span> <span class="hljs-keyword">function</span> <span class="hljs-title function_">rotateIdentity</span>(<span class="hljs-params"></span>) {
<span class="hljs-keyword">const</span> proxy = <span class="hljs-keyword">await</span> <span class="hljs-title function_">getNextProxy</span>(); <span class="hljs-comment">// Your proxy rotation logic</span>
<span class="hljs-keyword">const</span> browser = <span class="hljs-keyword">await</span> puppeteer.<span class="hljs-title function_">launch</span>({
<span class="hljs-attr">args</span>: [<span class="hljs-string">`--proxy-server=<span class="hljs-subst">${proxy.host}</span>:<span class="hljs-subst">${proxy.port}</span>`</span>]
});
<span class="hljs-keyword">return</span> browser;
}
Durch die Rotation von IPs und HTTP-Headern ahmt Ihr Skript das natürliche Browserverhalten nach und verringert so die Wahrscheinlichkeit, markiert zu werden.
Leistungsoptimierung
Steigern Sie die Effizienz und Erfolgsquote Ihres Skripts mit den folgenden Techniken:
- Ressourcenmanagement
Stoppen Sie unnötige Ressourcendownloads wie Bilder, Stylesheets oder Schriftarten:
<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">setRequestInterception</span>(<span class="hljs-literal">true</span>);
page.<span class="hljs-title function_">on</span>(<span class="hljs-string">'request'</span>, <span class="hljs-function">(<span class="hljs-params">request</span>) =></span> {
<span class="hljs-keyword">if</span> ([<span class="hljs-string">'image'</span>, <span class="hljs-string">'stylesheet'</span>, <span class="hljs-string">'font'</span>].<span class="hljs-title function_">includes</span>(request.<span class="hljs-title function_">resourceType</span>())) {
request.<span class="hljs-title function_">abort</span>();
} <span class="hljs-keyword">else</span> {
request.<span class="hljs-title function_">continue</span>();
}
});
- Parallelverarbeitung
Verwenden Sie Puppeteer-Cluster, um mehrere CAPTCHAs gleichzeitig zu lösen:
<span class="hljs-keyword">const</span> { <span class="hljs-title class_">Cluster</span> } = <span class="hljs-built_in">require</span>(<span class="hljs-string">'puppeteer-cluster'</span>);
<span class="hljs-keyword">const</span> cluster = <span class="hljs-keyword">await</span> <span class="hljs-title class_">Cluster</span>.<span class="hljs-title function_">launch</span>({
<span class="hljs-attr">concurrency</span>: <span class="hljs-title class_">Cluster</span>.<span class="hljs-property">CONCURRENCY_CONTEXT</span>,
<span class="hljs-attr">maxConcurrency</span>: <span class="hljs-number">4</span>,
<span class="hljs-attr">monitor</span>: <span class="hljs-literal">true</span>
});
<span class="hljs-keyword">await</span> cluster.<span class="hljs-title function_">task</span>(<span class="hljs-title function_">async</span> ({ page, <span class="hljs-attr">data</span>: url }) => {
<span class="hljs-keyword">await</span> <span class="hljs-title function_">handleCaptchaSolution</span>(page);
});
- Caching-Strategie
Cachen Sie Antworten, um redundante Anfragen zu vermeiden und Verarbeitungszeit zu sparen:
<span class="hljs-keyword">const</span> cache = <span class="hljs-keyword">new</span> <span class="hljs-title class_">Map</span>();
<span class="hljs-keyword">async</span> <span class="hljs-keyword">function</span> <span class="hljs-title function_">getCachedResponse</span>(<span class="hljs-params">url</span>) {
<span class="hljs-keyword">if</span> (cache.<span class="hljs-title function_">has</span>(url)) {
<span class="hljs-keyword">const</span> { timestamp, data } = cache.<span class="hljs-title function_">get</span>(url);
<span class="hljs-keyword">if</span> (<span class="hljs-title class_">Date</span>.<span class="hljs-title function_">now</span>() - timestamp < <span class="hljs-number">3600000</span>) { <span class="hljs-comment">// 1-hour cache</span>
<span class="hljs-keyword">return</span> data;
}
}
<span class="hljs-keyword">const</span> response = <span class="hljs-keyword">await</span> <span class="hljs-title function_">fetchResponse</span>(url);
cache.<span class="hljs-title function_">set</span>(url, { <span class="hljs-attr">timestamp</span>: <span class="hljs-title class_">Date</span>.<span class="hljs-title function_">now</span>(), <span class="hljs-attr">data</span>: response });
<span class="hljs-keyword">return</span> response;
}
Diese Methoden arbeiten zusammen, um die Ressourcennutzung zu reduzieren, die Geschwindigkeit zu verbessern und mehrere Aufgaben effizient zu bewältigen.
Fazit und Implementierungsleitfaden
CAPTCHA-Lösungsübersicht
Der effektive Umgang mit CAPTCHAs erfordert eine mehrschichtige Strategie, die auf Prävention ausgerichtet ist. Durch den Einsatz von Stealth-Techniken, optimierten Headern und rotierenden IPs können Sie die Wahrscheinlichkeit verringern, dass CAPTCHAs überhaupt ausgelöst werden. Prävention ist immer besser als reaktives Lösen.
Latenknoten Browser-Automatisierung
Latenode vereinfacht die CAPTCHA-Verwaltung mit integrierten Funktionen wie Stealth-Modus, Proxy-Rotation und Cookie-Verarbeitung.
Hier ist ein Beispiel, wie Sie es einrichten können:
<span class="hljs-keyword">const</span> workflow = <span class="hljs-keyword">new</span> <span class="hljs-title class_">LatenodeWorkflow</span>({ <span class="hljs-attr">browserOptions</span>: { <span class="hljs-attr">stealth</span>: <span class="hljs-literal">true</span>, <span class="hljs-attr">proxyRotation</span>: <span class="hljs-literal">true</span>, <span class="hljs-attr">cookieManagement</span>: <span class="hljs-literal">true</span> } });
<span class="hljs-keyword">await</span> workflow.<span class="hljs-title function_">initBrowser</span>({ <span class="hljs-attr">captchaHandling</span>: { <span class="hljs-attr">prevention</span>: <span class="hljs-literal">true</span>, <span class="hljs-attr">autoRetry</span>: <span class="hljs-literal">true</span>, <span class="hljs-attr">maxAttempts</span>: <span class="hljs-number">3</span> } });
Nächste Schritte zur Umsetzung
Um Ihren Automatisierungs-Workflow zu verbessern, sollten Sie die folgenden Schritte in Betracht ziehen:
- Aktivieren Sie den Stealth-Modus
Verwenden Sie Puppeteer-Extra-Stealth-Plugins, um die Wahrscheinlichkeit des Auslösens von CAPTCHAs zu verringern. - Einrichten der Fehlerbehebung
Fügen Sie Fehlerbehebungsmechanismen hinzu, um verschiedene CAPTCHA-Typen zu verarbeiten. Nutzen Sie automatische Wiederholungsversuche mit Strategien wie exponentiellem Backoff für einen reibungsloseren Betrieb. - Verbessern Sie die Ressourceneffizienz
Reduzieren Sie die Ausführungszeit von Skripts, indem Sie Ressourcen selektiv laden und Caching verwenden. So erzielen Sie eine bessere Leistung, ohne die Erfolgsraten zu beeinträchtigen.
Ähnliche Artikel
- Funktionsweise der Headless-Browser-Erkennung und Umgehung dieser
- Formularautomatisierung mit Puppeteer: Texteingabe, Formularausfüllen und Benutzersimulation
- Verwalten des Browser-Fingerabdrucks in Puppeteer, um eine Erkennung zu vermeiden
- Unsichtbare Automatisierung: Verwenden von Puppeteer-Extra-Plugin-Stealth zum Umgehen des Bot-Schutzes



