Inhaltsverzeichnis:
- Schritt 1: Materialien sammeln
- Schritt 2: Finden Sie die Header, die zum Erstellen einer Sitzung erforderlich sind
- Schritt 3: Bereiten Sie den Code vor
- Schritt 4: Senden Sie die richtigen Signale
- Schritt 5: Mechanisierte Cookies
- Schritt 6: Schlüssel zum Herzen
Video: Spidern einer Ajax-Website mit einem asynchronen Anmeldeformular - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:22
Das Problem: Spidering-Tools erlauben keine AJAX-Login-Authentifizierung.
Dieses anweisbare zeigt Ihnen, wie Sie sich über ein AJAX-Formular mit Python und einem Modul namens Mechanize anmelden. Spider sind Web-Automatisierungsprogramme, die immer beliebter werden, um Daten online zu sammeln. Sie kriechen im Internet herum und sammeln wertvolle Materialien, um die mächtigsten Internetunternehmen zu befeuern. Andere kriechen herum und sammeln bestimmte Datensätze, um die Entscheidungsfindung zu verbessern oder abzuleiten, was gerade "in" ist, oder die günstigsten Reiserouten zu finden. Spider (Webcrawler, Webbots oder Screen Scraper) eignen sich hervorragend, um HTML-Goop in einen Anschein von intelligenten Daten zu verwandeln, aber wir haben ein Problem mit AJAX-fähigen Webseiten mit JavaScript- und Cookie-aktivierten Sitzungen, die nicht mit dem normalen navigierbar sind Satz von Spidering-Tools. In diesem anweisbaren werden wir auf unsere eigene Mitgliedsseite bei pubmatic.com zugreifen. Diese Schritte zeigen Ihnen eine Methode, die Sie befolgen müssen, aber Ihre Seite wird anders sein. Spaß haben!
Schritt 1: Materialien sammeln
Sie müssen damit beginnen, Ihre Programmierressourcen zu ergänzen. Sie benötigen die folgenden Programme. Verwenden Sie ihre Anleitungen, um diese zu installieren…Firebug installierenEs ist ein Firefox-AddonInstallieren Sie PythonGehe zu: python.orgGehe zu: python.orgInstallieren Sie das Mechanize-ModulGet MechanizeGet MechanizeAndere nützliche Spidering-Tools:BeautifulSoup
Schritt 2: Finden Sie die Header, die zum Erstellen einer Sitzung erforderlich sind
Eine gut gemachte Spinne greift auf eine Webseite zu, als wäre es ein Browser, der von einem Menschen gesteuert wird, der Hinweise auf seinen wahren Ursprung versteckt. Ein Teil der Interaktion zwischen Browsern und Servern erfolgt über GET- und POST-Anfragen, die Sie in den Headern finden (diese Informationen werden selten in einem Browser angezeigt, sind aber sehr wichtig). Sie können einige dieser Informationen anzeigen, indem Sie Strg I (in Firefox) drücken, um das Seiteninfo-Fenster zu öffnen. Um sich als sanftmütiger Browser zu tarnen, müssen Sie sich mit den gleichen Zugangsdaten identifizieren. Wenn Sie sich mit deaktiviertem Javascript in Ihrem Browser bei pubmatic anmelden wollten, würden Sie nicht weit kommen, da die Weiterleitungen über Javascript erfolgen. Wenn man bedenkt, dass die meisten Spider-Browser keine Javascript-Interpreter haben, müssen wir uns über einen alternativen Router anmelden. Beginnen wir damit, die Header-Informationen abzurufen, die vom Browser gesendet werden, wenn Sie auf Senden klicken. Wenn dies eine normale Browser-Anmeldung wäre, würden Sie Mechanize verwenden, um das Formular auszufüllen und auf Senden zu klicken. Normale Login-Formulare sind in einem …-Tag gekapselt und Mechanize könnte dieses problemlos absenden und die nächste Seite abfragen. Da wir kein ausgefülltes Formular-Tag haben, wird die Absendefunktion über Javascript abgewickelt. Lassen Sie uns die Funktion "submitForm" von pubmatic überprüfen. Öffnen Sie dazu zunächst die Webseite in Firefox und aktivieren Sie Firebug, indem Sie auf das Glühwürmchen in der unteren rechten Ecke klicken. Klicken Sie dann auf die Registerkarte Skript, kopieren Sie den gesamten angezeigten Code und fügen Sie ihn in Ihre bevorzugte Textbearbeitungssoftware ein. Sie können dann den gesamten Code mit Ausnahme der Funktion submitForm löschen. Es beginnt mit der Funktion "submitForm(theform) {" und allem dazwischen und den Funktionen, die die geschweifte Klammer "}" schließen. Bei der sehr primitiven Analyse dieser Funktion stellen wir fest, dass eine Authentifizierung stattfindet, die eine Variable namens xmldoc zurückbringt, die als xml geparst wird. Dies ist eine Schlüsselfunktion von AJAX. Es hat den Server abgefragt und ein XML-Dokument zurückgebracht, das einen Informationsbaum enthält. Der Knoten session_id enthält die session_id, wenn die Authentifizierung erfolgreich war. Sie können dies anhand dieses Codes erkennen: "if (session_id != null) { //login success". Jetzt möchten wir verhindern, dass dieses Javascript uns irgendwohin führt, damit wir sehen können, was während der Authentifizierung an den Server gesendet wird. Dazu kommentieren wir alle Fensterumleitungen, die so aussehen: "window.location=…". Um dies auszukommentieren, fügen Sie doppelte Schrägstriche wie folgt hinzu: "//window.location…" Dies verhindert, dass der Code ausgeführt wird. Sie können die Javascript-Datei unten herunterladen, in der diese Änderungen bereits vorgenommen wurden. Kopieren Sie dieses bearbeitete Javascript und fügen Sie es in das Konsolenfenster rechts ein und klicken Sie auf Ausführen. Dies überschreibt die bereits in der Seite vorhandene Javascript-Funktion mit unserer neuen Version. Wenn Sie nun Ihre Anmeldeinformationen ausfüllen und auf Senden klicken, sollten die POST- und GET-Header-Informationen die Konsole ausfüllen, aber Sie werden nirgendwo hingehen. Die POST-Informationen sind die Informationen, die von den AJAX-Funktionen an den Server gesendet werden Kopieren Sie diese Informationen so wie möglich und fügen Sie sie in den Notizblock ein.
Schritt 3: Bereiten Sie den Code vor
Bevor wir die neuen Header hinzufügen, die wir gefunden haben, erstellen wir einen Schablonen-Anmelde-Python-Code für Mechanize. Wir tun dies aus zwei Gründen: Erstens haben wir eine Komponente, die funktioniert, um neue Dinge hinzuzufügen, und zweitens, damit Sie sehen, wie Sie sich normalerweise bei einer nicht AJAX-y-Webseite anmelden würden folgenden. Wenn Sie fertig sind, speichern Sie es als youfilename.py irgendwo, wo Sie es finden können.#!/usr/bin/python# -*- Coding: utf-8 -*-#Starten Sie mit Ihren Modulimporten:von Mechanize Import Browser #Create your Browser-Instanz über den Funktionsaufruf Browser();br = Browser()#Setzen Sie den Browser so, dass er die Anfragen von spiders.txt ignoriert#Machen Sie dies vorsichtig, wenn die Webseite keine Spider mag, könnten sie verärgert sein, Sie dort zu findenbr.set_handle_robots(False) #Öffnen Sie die Seite, auf der Sie sich anmelden möchten tobr.open("https://pubmatic.com/04_betasignin.jsp")#Da ich den Formularnamen kenne, kann ich das Formular einfach mit dem Namenbr.select_form auswählen ("login")#Mit den Namen der Formularelemente gebe ich die Namen der Formularelemente einbr['email'] = "[email protected]"br['password'] = "Asquid22"#br.submit () sendet das Formular aus und ruft die resultierende Seite ab, Sie erstellen eine neue Browserinstanz#Antwort unten enthält die resultierende SeiteAntwort = br.submit()#Dies druckt den Text der empfangenen Webseite#print response.read()
Schritt 4: Senden Sie die richtigen Signale
Mechanize hat eine einfache Funktion zum Hinzufügen von Headern zum Header-POST. Dies ermöglicht es uns, in demselben Browser zu erscheinen, den Sie beim ersten Zugriff auf die Seite verwendet haben. Öffnen Sie die Datei mit den Headern, die Sie mit Firebug gefunden haben, und bearbeiten Sie diese Textdatei entsprechend. Ersetzen Sie alles in den Anführungszeichen durch das richtige Element aus der Kopfzeilenliste:USER_AGENT = "Mozilla/5.0 (X11; U; Linux i686; tr-TR; rv:1.8.1.9) Gecko/20071102 Pardus/2007 Firefox/2.0.0.9" HOST = "pubmatic.com"ACCEPT = "text/xml, application/xml, application/xhtml+xml, text/html;q=0.9, text/plain;q=0.8, image/png, */*;q= 0.5"ACCEPT_LANGUAGE = "en-us, de;q=0.5"ACCEPT_ENCODING = "gzip, deflate"ACCEPT_CHARSET = "ISO-8859-1, utf-8;q=0.7, *;q=0.7"KEEP_ALIVE = "300" CONNECTION = "keep-alive"CONTENT_TYPE = "application/x-www-form-urlencoded"REFERER = "https://pubmatic.com/04_betasignin.jsp"CONTENT_LENGTH = "60"COOKIE = "utma=103266945.1970108054.1210113004.1212104087.1212791201.20; KADUSERCOOKIE=EA2C3249-E822-456E-847A-1FF0D4085A85; utmz=103266945.1210113004.1.1.utmccn=(direkt)|utmcsr=(direkt)|utmcmd=(keiner); JSESSIONID=60F194BE2A5A5AG3C3861893; no-cache"CACHE_CONTROL ="no-cache"Dies erstellt eine Reihe von Variablen, die Sie dann verwenden können, um uns an den Header anzuhängen Geben Sie diesen Code ein:br.add_header = [("Host", HOST)]br.add_headers = [("User-agent", USER_AGENT)]br.add_headers = [("Accept", ACCEPT)]br.add_header = [("Accept-Language", ACCEPT_LANGUAGE)]br.add_headers = [("Accept-Encoding", ACCEPT_ENCODING)]br.add_headers = [("Accept-Charset", ACCEPT_CHARSET)]br.add_header = [("Keep-Alive ", KEEP_ALIVE)]br.add_headers = [("Connection", CONNECTION)]br.add_header = [("Content-Type", CONTENT_TYPE)]br.add_header = [("Referer", REFERER)]br.add_header = [("Content-Length", CONTENT_LENGTH)]br.add_headers = [("Cookie", COOKIE)]br.add_headers = [("Pragma", PRAGMA)]br.add_headers = [("Cache-Control", CACHE_CONTROL)]Wenn wir nun die Funktion zum Öffnen der Seite aufrufen, werden auch die Header an den Server gesendet. br.open("https://pubmatic.com/04_betasignin.jsp")
Schritt 5: Mechanisierte Cookies
Dieser Schritt ist darauf zurückzuführen, dass Mechanize die Verarbeitung von Cookies automatisiert, aber es ist wichtig zu wissen, was passiert:
Wenn das Formular gesendet wird, haben Sie die richtigen Kopfzeilen, als ob Sie es mit der Javascript-Funktion gesendet hätten. Der Server authentifiziert dann diese Informationen und generiert eine Sitzungs-ID und speichert sie in einem Cookie, wenn Benutzername und Passwort korrekt sind. Die gute Nachricht ist, dass Mechanize Cookies automatisch isst und wieder ausstößt, sodass Sie sich keine Gedanken über das Senden und Empfangen des Cookies machen müssen. Sobald Sie also eine funktionierende Sitzungs-ID erstellt haben, können Sie den Bereich nur für Mitglieder der Website aufrufen.
Schritt 6: Schlüssel zum Herzen
Nachdem wir eine Sitzungs-ID erhalten und Mechanize in seinen Cookies gespeichert haben, können wir dem Javascript folgen, um zu sehen, wohin wir gehen müssen. Schauen Sie in das "if (session_id != null) { //login erfolgreich", um zu sehen, wo Sie bei Erfolg fortfahren können. Blick auf den Fensterverlagerungscode: "if (adurlbase.search(/pubmatic.com/) != -1) { window.location="https://pubmatic.com/05_homeloggedin.jsp" + "?v=" + Math.zufällig () * 10000;" Wir sehen, dass wir zu einer Website gehen müssen, die sich unter https://pubmatic.com/05_homeloggedin.jsp?v=some random number befindet. Erstellen wir also einfach eine gefälschte Zufallszahl zur Eingabe und erstellen Sie eine neue Browserinstanz, um die frisch geöffnete Seite zu lesen:response2 = br.open("https://pubmatic.com/05_homeloggedin.jsp?v=2703")Und das sollte sei es. Ihr Code ist jetzt vollständig. Durch die Verwendung der richtigen Header und des mechanisierten Cookie-Handlers können wir jetzt auf das Innere von pubmatic zugreifen. Öffnen Sie das Terminal, laden Sie das unten stehende Python-Paket und melden Sie sich an. Geben Sie dazu python2.5 und dann den Dateipfad zur.py-Datei ein.
Empfohlen:
Heimwerken -- Einen Spinnenroboter herstellen, der mit einem Smartphone mit Arduino Uno gesteuert werden kann – wikiHow
Heimwerken || Wie man einen Spider-Roboter herstellt, der mit einem Smartphone mit Arduino Uno gesteuert werden kann: Während man einen Spider-Roboter baut, kann man so viele Dinge über Robotik lernen. Wie die Herstellung von Robotern ist sowohl unterhaltsam als auch herausfordernd. In diesem Video zeigen wir Ihnen, wie Sie einen Spider-Roboter bauen, den wir mit unserem Smartphone (Androi
Exportieren einer SVG-Datei in Fusion 360: 5 Schritte (mit Bildern)
Exportieren einer SVG-Datei in Fusion 360: Ein Freund hat kürzlich einen neuen Laserschneider gekauft und mich gefragt, wie man mit Fusion 360 SVG-Dateien exportiert. Ich schlug vor, stattdessen einfach DXF-Dateien zu exportieren, aber es stellte sich heraus, dass die von ihm gekaufte Lasermarke nur SVG-Dateien akzeptiert. Das war das gleiche Problem wie ich
So reparieren Sie einen Wechselrichter mit LCD-Hintergrundbeleuchtung. Mit einem Fujiplus FP-988D. für 0 $.: 9 Schritte
So reparieren Sie einen Wechselrichter mit LCD-Hintergrundbeleuchtung. Mit einem Fujiplus FP-988D. für $ 0.: In diesem anweisbaren werde ich Sie durch die Reparatur eines toten LCD-Hintergrundlicht-Wechselrichters mit den Teilen führen, die Sie haben. Sie können feststellen, ob Sie ein totes Gegenlicht haben, indem Sie zuerst andere Möglichkeiten ausschließen. Monitor auf mehreren Computern überprüfen. Stellen Sie sicher, dass
So kommunizieren Sie mit einem Alien-Artefakt oder . . .: 4 Schritte (mit Bildern)
Wie man mit einem außerirdischen Artefakt kommuniziert oder…: *** Enge Begegnungen der seltsam-minzigen Art. *** Dieses Instructable zeigt Ihnen, wie Sie eine Altoids-Version des Mutterschiffs "Close Encounters" bauen und damit interagieren. Dies kann ein wichtiges Training für den Tag sein, an dem das Bright White Be
So installieren Sie Fedora auf einem SheevaPlug und booten von einer SD-Karte.: 13 Schritte
So installieren Sie Fedora auf einem SheevaPlug und booten von einer SD-Karte.: Ich habe einen Beitrag zum SheevaPlug bei Slashdot und dann in Popular Mechanics gesehen. Es schien ein interessantes Gerät zu sein es läuft @ 2,5w, keine Lüfter, Solid State und kein Monitor erforderlich. Seit Jahren trage ich einen alten CRT-Monitor mit mir herum