Heim  >  Artikel  >  Backend-Entwicklung  >  So führen Sie Anti-Crawling in Python durch

So führen Sie Anti-Crawling in Python durch

(*-*)浩
(*-*)浩Original
2019-07-01 14:10:112951Durchsuche

Ein Webcrawler ist ein Programm, das automatisch Webseiten aus dem World Wide Web für Suchmaschinen herunterlädt und ein wichtiger Bestandteil von Suchmaschinen ist. Wenn Webcrawler jedoch missbraucht werden, erscheinen zu viele homogene Dinge im Internet und die Originalität kann nicht geschützt werden. Infolgedessen begannen viele Websites, gegen Webcrawler zu kämpfen und versuchten mit allen Mitteln, ihre Inhalte zu schützen.

So führen Sie Anti-Crawling in Python durch

1: User-Agent +Referer-Erkennung (empfohlenes Lernen: Python-Video-Tutorial)

Benutzer -Agent ist ein Feld im HTTP-Protokoll. Seine Funktion besteht darin, einige Informationen über das Terminal zu beschreiben, das die HTTP-Anfrage ausgibt.

Ermöglicht dem Server, das vom Kunden verwendete Betriebssystem und seine Version, den CPU-Typ, den Browser und die Version, die Browser-Rendering-Engine, die Browsersprache, das Browser-Plug-in usw. zu identifizieren.

Der Server kann dieses Feld verwenden, um zu wissen, wer die Website besucht. Blockieren Sie Benutzer, die keine normalen Browser sind.

Lösung:

Verdecken Sie den User-Agent des Browsers, da der User-Agent jedes Browsers unterschiedlich ist und alle Benutzer einen Browser verwenden können. Die gesamte UA-Erkennung kann gelöst werden, indem der User-Agent des Browsers bei jeder Anfrage konditioniert wird.

Referer ist Teil des Headers. Wenn der Browser eine Anfrage an den Webserver sendet, bringt er normalerweise den Referrer mit und teilt dem Server mit, welche Von welcher Seite aus habe ich verlinkt? Einige Bildwebsites erkennen beispielsweise Ihren Referrerwert, wenn Sie ein Bild anfordern. Wenn der Referrer nicht übereinstimmt, werden keine normalen Bilder zurückgegeben.

Lösung:

Übertragen Sie in der Anfrage zur Erkennung des Referrs den passenden Referrerwert.

Zwei: js-Verschleierung und Rendering

Die sogenannte JavaScript-Verschleierung ist im Grunde:

1. Entfernen Sie einige Dinge die eigentlich nicht als Funktion bezeichnet werden.

2. Kombinieren Sie verstreute Variablendeklarationen.

3. Vereinfachung logischer Funktionen.

4. Vereinfachung von Variablennamen. Es hängt von den Vor- und Nachteilen verschiedener Komprimierungstools ab. Zu den gängigen Tools gehören UglifyJS, JScrambler und andere Tools.

JS-Rendering ist eigentlich eine Modifikation der HTML-Seite. Beispielsweise geben einige Webseiten selbst keine Daten zurück. Die Daten werden nach dem Laden von js zu HTML hinzugefügt. Wenn diese Situation auftritt, müssen wir wissen, dass der Crawler keine JavaScript-Vorgänge ausführt. Es muss also auf andere Weise damit umgegangen werden.

Lösung:

1. Finden Sie den Schlüsselcode, indem Sie den Quellcode der Website lesen und ihn in Python implementieren.

2. Suchen Sie den Schlüsselcode, indem Sie den js-Quellcode der Website lesen, und verwenden Sie PyV8, execjs und andere Bibliotheken, um den js-Code direkt auszuführen.

3. Simulieren Sie die Browserumgebung direkt über die Selenium-Bibliothek

3: IP-Grenzfrequenz

WEB-Systeme sind über das mit dem WEB-Container verbunden http-Protokoll Ja, jede Anfrage generiert mindestens eine TCP-Verbindung zwischen dem Client und dem Server.

Für den Server können Sie die von einer IP-Adresse innerhalb der Zeiteinheit initiierten Anfragen deutlich sehen.

Wenn die Anzahl der Anfragen einen bestimmten Wert überschreitet, kann es sich um eine abnormale Benutzeranfrage handeln.

Lösung:

1. Entwerfen Sie Ihren eigenen IP-Proxy-Pool und übertragen Sie bei jeder Anfrage eine andere Proxy-Adresse.

2. ADSL Dynamic Dialing verfügt über eine einzigartige Funktion. Jedes Mal, wenn Sie eine Nummer wählen, erhalten Sie eine neue IP. Das heißt, seine IP ist nicht festgelegt.

Viertens: Verifizierungscode

Der Verifizierungscode (CAPTCHA) ist „Completely Automated PublicTuring test to tell Computers and HumansApart“ (vollautomatischer Turing-Test zur Unterscheidung von Computern und Menschen). ) ) ist ein öffentliches, vollautomatisches Programm, das unterscheidet, ob der Benutzer ein Computer oder ein Mensch ist.

Es kann Folgendes verhindern: böswilliges Knacken von Passwörtern, Ticketbetrug, Forenflutung und verhindert effektiv, dass ein Hacker ein bestimmtes Programm verwendet, um einen bestimmten registrierten Benutzer mit Brute-Force daran zu hindern, kontinuierliche Anmeldeversuche durchzuführen.

Diese Frage kann von einem Computer generiert und beurteilt werden, aber nur ein Mensch kann sie beantworten. Da Computer keine CAPTCHA-Fragen beantworten können, kann der Benutzer, der die Fragen beantwortet, als Mensch betrachtet werden.

Lösung:

1. Manuelle Identifizierung des Bestätigungscodes

2. Pytesseract-Identifizierung des einfachen Bestätigungscodes

3 Codierungsplattform

4. Maschinelles Lernen

Weitere technische Artikel zum Thema Python finden Sie in der Spalte Python-Tutorial, um mehr darüber zu erfahren!

Das obige ist der detaillierte Inhalt vonSo führen Sie Anti-Crawling in Python durch. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn