Dieser Beitrag bezieht sich auf Google ReCaptcha v2 (nicht die neueste Version)
Vor kurzem hat Google ein vereinfachtes "Captcha" -Verifizierungssystem eingeführt ( video ), mit dem Benutzer das "Captcha" durch einfaches Anklicken weitergeben können.
Aber wie kann es einen Bot von einer Person nur durch einen Klick unterscheiden?
Gemäß diese Antwort (unter der Annahme einer ähnlichen Implementierung) generiert "recaptcha" zunächst einen verborgenen Schlüssel und hängt ihn an ein verborgenes Eingabeelement an. Außerdem wird ein Kontrollkästchen (kein tatsächliches Kontrollkästchen) träge gerendert. input
Ein div
) mit demselben Schlüssel, der beim Klicken eine asynchrone Anforderung (XHR) an die Google-Back-End-Server sendet, um ihn als gültigen Bestätigungsschlüssel zu kennzeichnen (dh einen Schlüssel, der beim Absenden des Formulars validiert werden muss).
Aber warum können Bots diesen Klick nicht automatisieren (zumindest browserbasierte Bots)?
Wie könnte das funktionieren?
Dies ist eine Spekulation, basiert jedoch auf dem Hinweis von Google auf die von ihnen verwendete "Risikoanalyse-Engine" ( http://googleonlinesecurity.blogspot.com/2014/12/are-you-robot-introducing-no-captcha.html) )
Ich nehme an, es sieht danach aus, wie Sie sich vor dem Klicken verhalten haben, wie sich Ihr Cursor auf dem Weg zur Prüfung (organischer Pfad/Beschleunigung) bewegt hat, welcher Teil des Kontrollkästchens angeklickt wurde (zufällige Orte oder jedes Mal mittellos), Browser Fingerabdruck, Google-Cookies und -Inhalte, Klick-Standortverlauf, der mit Ihrem Fingerabdruck oder Konto verknüpft ist, sofern ein solcher erkannt wird usw.
Es ist ziemlich schwierig, "organisches" Verhalten so vorzutäuschen, dass es eine kontinuierlich lernende Mustererkennungs-Engine zum Narren hält. In Fällen, in denen es nicht sicher ist, werden Sie trotzdem aufgefordert, einen tatsächlichen CAPTCHA-String zuzuordnen.
Ein neues Papier wurde mit mehreren Tests gegen reCAPTCHA veröffentlicht:
Einige Höhepunkte:
Google hat die Cookie-Sicherheitsanfälligkeit bereits behoben und schränkt möglicherweise einige Verhaltensweisen basierend auf IPs ein.
Ein weiteres interessantes Ergebnis ist, dass Google ein VM in JavaScript ausführt, das einen Großteil des reCAPTCHA-Codes und -Verhaltens verschleiert. Dieser VM ist als Botguard bekannt und wird zum Schutz anderer Dienste neben reCAPTCHA verwendet:
https://github.com/neuroradiology/InsideReCaptcha
UPDATE 2017
Auf der WOOT 2017 wurde ein kürzlich veröffentlichtes Papier (ab August) veröffentlicht, das eine Genauigkeit von 85% bei der Lösung der noCAPTCHA reCAPTCHA Audio-Herausforderungen erzielt:
http://uncaptcha.cs.umd.edu/papers/uncaptcha_woot17.pdf
UPDATE 2018
Google führt reCAPTCHA v3 ein, das aussieht wie eine "Human Score Prediction Engine", die pro Website kalibriert wird. Es kann auf verschiedenen Seiten einer Website installiert werden (funktioniert wie ein Google Analytics-Skript), um reCAPTCHA und dem Websitebesitzer zu helfen, das Verhalten von Menschen gegenüber Bots zu verstehen, bevor ein reCAPTCHA erstellt wird.
Meine Bots laufen gut gegen ReCaptcha.
Hier meine Lösung.
Lassen Sie Ihren Bot die folgenden Schritte ausführen:
Schreiben Sie zuerst eine Human Mouse Move-Funktion, um Ihre Maus wie einen B-Spline zu bewegen (fragen Sie mich nach dem Quellcode). Dies ist der wichtigste Punkt.
Verwenden Sie für bessere Ergebnisse auch ein VPN wie https://www.purevpn.com
Führen Sie für jedes Recpatcha die folgenden Schritte aus:
Wenn Sie VPN verwenden, wechseln Sie zuerst die IP-Adresse
Löschen Sie alle Browser-Cookies
Löschen Sie den gesamten Browser-Cache
Legen Sie einen dieser Useragents nach Zufallsprinzip fest:
ein. Mozilla/5.0 (kompatibel; MSIE 9.0; Windows NT 6.1; Trident/5.0)
b. Mozilla/5.0 (Windows NT 6.1; WOW64; rv: 44.0) Gecko/20100101 Firefox/44.0
5 Bewegen Sie Ihre Maus mit der Human Mouse Move-Funktion von einem RandomPoint in das Ich bin nicht jedes Mal ein Roboterbild mit einem anderen 10x10 RandomRange
Dann klicke immer mit zufälliger Verzögerung dazwischen
WM_LBUTTONDOWN
und
WM_LBUTTONUP
Screenshot von Image Captcha machen
Screenshot senden an
oder
und sie lösen lassen.
Nachdem Sie die Klick-Cooridinate vom Captcha-Löser erhalten haben, können Sie die Bilder mit der Human Mouse Move-Funktion verschieben und mit Click Recaptcha Images erneut erfassen
Bewegen Sie sich mit der Human Mouse Move-Funktion und klicken Sie auf die Recaptcha Verify-Schaltfläche
In 75% aller Versuche wird Recaptcha gelöst
Chears Google
Tom
Darf ich meine Vermutung vorstellen, da dies keine offene Technologie ist.
Google sagt, es gehe darum, Informationen vor, während und nach dem Kämmen zu sammeln, um Menschen von Robotern zu unterscheiden. Aber ich bin mehr an diesem letzten Klick auf das Kontrollkästchen interessiert.
Angenommen, die POST -Daten (gelöstes CAPTCHA) haben ein Feld namens Fingerprint, eine Zeichenfolge, die aus dem Benutzerverhalten berechnet wird. Ich denke, es könnte ein Feld für diesen Kontrollkästchenort geben. Ich vermute, dieses Kontrollkästchen befindet sich in einem Koordinatensystem, das zufällig vom Google-Back-End generiert und mit dem öffentlichen Schlüssel meiner Website verschlüsselt wurde. Ein Roboter kann also einen Standort für dieses Feld "erraten/berechnen". Wenn der Websitebesitzer jedoch die GET-Abfrage mit einem privaten Schlüssel vornimmt, um die Benutzeridentität zu überprüfen, entschlüsselt Google das Koordinatensystem und sagt, ob der Benutzer auf den richtigen Ort klickt. In diesem zufälligen Koordinatensystem, das nur Google und den Eigentümern von Websites gehört, gibt es also nur einen möglichen Standort mit der rechten Maustaste (bei einigen Offsets handelt es sich um ein Quadrat).