[PYTHON] Crawlen und Scraping einer Site mit Mitmproxy

Dieser Artikel ist der 19. Tag von Crawler / Web Scraping Adventskalender 2016.

Zunächst einmal ist mitmproxy weder ein Scraping-Tool noch ein Crawling-Tool **, aber es ist der Zweck dieses Artikels, es zum Scraping zu verwenden. ..

Die ultimative Waffe namens mtimproxy

Wie der Name schon sagt, ist mtimproxy ** Proxy **, was eine Abkürzung für Man-in-the-Middle-Proxy zu sein scheint. OSS von Python.

In einem Diagramm sieht es so aus. Ist es sozusagen ein Bild eines Proxys, der sich selbst als Vermittler angreift?

image

Ich habe es selbst geschrieben und war ein wenig überrascht, weil es eine bedeutungslose Figur war, aber mit Mitmproxy,

Dies bedeutet, dass Sie ** alle von Ihnen besuchten Websites automatisch mit einem Python-Skript ** verarbeiten können.

Wenn Sie eine Antwort in Python verarbeiten können, können Sie sie speichern, sodass sie als eine Art Crawling-Tool ** verwendet werden kann.

Natürlich ist Mitmproxy nur ein Proxy-Tool, sodass Sie mit keiner Strategie automatisch crawlen können. Diesmal besteht die Strategie darin, dass ** Menschen als Spinnen (Bots) ** agieren und die Browsing-Ergebnisse speichern und kratzen **.

Spezifischer Anwendungsfall

Lassen Sie mich erklären, warum das Schaben mit Mitmproxy am stärksten ist.

Gibt es beispielsweise die folgenden Anwendungsfälle?

Im Gegenteil, ich halte Folgendes nicht für geeignet.

Installieren Sie mitmproxy

Die Installation ist einfach. Wenn Sie bei der Installation nicht weiterkommen, verwenden Sie die offizielle Docker-Version.

pip install mitmproxy

Mitmproxy verfügt über zwei Tools. Mitmproxy und Mitmdump. Ersteres ist eine CUI und ein interaktives Tool. Letzteres hat keine Wechselwirkung und eignet sich gut zum Schaben von Anwendungen.

Die Startmethode ist einfach. Geben Sie einfach "mitmdump" in die Shell ein. Standardmäßig wird es an Port "8080" gestartet, sodass Sie "127.0.0.1: 8080" als Proxy angeben können (in Chrome Proxy Switchy Sharp. Die Erweiterung / webstore / detail / proxy-switchysharp / dpplabbmogkhghncfbfdeeokoefdjegm? Hl = ja) ist einfach zu bedienen.

Wenn die Proxy-Einstellungen erfolgreich sind, öffnen Sie die entsprechende Site. Wenn alles gut geht, sollte der von mtimdump empfangene Inhalt folgendermaßen aussehen:

image

Kratzmethode mit Mitmproxy

Hier erfahren Sie, wie Sie ein Python-Skript mit Mitmproxy ausführen.

mitmdump -s path_to_script.py

Das auszuführende Skript kann beispielsweise wie folgt aussehen. Im folgenden Beispiel wird der Inhaltstyp auf "text / html" eingegrenzt und gespeichert.

def response(flow):
    content_type = flow.response.headers.get('Content-Type', '')
    path = flow.request.url.replace('/', '_').replace(':', '_')
    if content_type.startswith('text/html'):
        with open(path, 'w') as f:
            f.write(flow.response.text)

Natürlich denke ich, dass Sie Elemente entsprechend mit lxml usw. extrahieren sollten.

Andere Beispiele, die die Funktionen von Mitmproxy abdecken, sind auf GitHub.

Zusammenfassung

Ich habe die Crawling-Technik mit Mitmproxy eingeführt. Menschen sind die Besten!

Ich habe die Erklärung weggelassen, aber sie unterstützt auch SSL-Sites (bitte googeln Sie für Details).

Hinweis

Diese Methode ist sozusagen eine Methode wie ein Zwischenangriff. Wenn Sie versuchen, jemanden ohne Ihre Zustimmung anzugreifen, ist dies ein gutes Verbrechen. Tun Sie es also bitte nicht. Lassen Sie uns bis zum letzten Mal die von Ihnen durchsuchte Site speichern und analysieren. Verwenden Sie keine privaten APIs mehr, die in unseren Nutzungsbedingungen verboten sind.

Recommended Posts

Crawlen und Scraping einer Site mit Mitmproxy
Webcrawlen, Web-Scraping, Zeichenerfassung und Speichern von Bildern mit Python
Ich habe versucht, den Pferderennplatz Teil 2 zu kriechen und abzukratzen
Scraping mit Node, Ruby und Python
Scraping mit Python, Selen und Chromedriver
Kratzen mit Python und schöner Suppe
Pferderennseite Web Scraping mit Python
Scraping von einer authentifizierten Site mit Python
Üben des Web-Scrapings mit Python und Selen
Einfaches Web-Scraping mit Python und Ruby
Schaben mit Selen
Kratzen Sie das Essen mit Python und geben Sie es an CSV aus
Schaben mit Selen ~ 2 ~
Scraping mit Python
Schaben Sie den Holojour ab und zeigen Sie ihn in der CLI an
Scraping mit Python
Schaben mit Selen
Crawlen mit Python und Twitter API 1-Einfache Suchfunktion
Erfolgreiches Schaben mit Selen
Versuchen Sie es mit Python.
Scraping mit Python + PhantomJS
Schaben mit kratzender Schale
Schaben mit Selen [Python]
Scraping mit Python + PyQuery
Kratzen mit schöner Suppe
Mit und ohne WSGI
Scraping von RSS mit Python
Site-Überwachung und Alarmbenachrichtigung mit AWS Lambda + Python + Slack