Python-Requests - Verwendung navigieren Website Server IP
Möchte ich für das Crawlen einer Website, jedoch cloudflare wurde immer in den Weg. Ich war in der Lage, die Server-IP, so cloudflare mich nicht gestört.
Wie kann ich nutzen, in dem Anfragen-Bibliothek?
Zum Beispiel, ich möchte um direkt dorthin zu gelangen
www.example.com/foo.php
, aber in den Anfragen wird es auflösen der IP auf das cloudflare-Netzwerk, anstatt die, die ich will, es zu benutzen. Wie kann ich es verwenden, die ich will es zu benutzen?
Wäre ich schickte eine Anfrage, damit die echte IP mit dem host festgelegt, wie die www.example.com, das wird sich aber geben Sie mir nur die Startseite. Wie kann ich andere links auf der Website?
InformationsquelleAutor user3893623 | 2015-05-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie einen benutzerdefinierten header -
host
mit Wertexample.com
so etwas wie:sollte den trick tun. Wenn Sie überprüfen möchten, und geben Sie dann den folgenden Befehl (setzt Voraus, dass netcat):
nc -l -p 80
und führen Sie dann den oben genannten Befehl. Es wird eine Ausgabe in der netcat-Fenster:Funktioniert nur für http. Wenn Sie das tun, mit https, erhalten Sie eine Fehlermeldung, dass der hostname nicht mit dem Zertifikat.
Sie können deaktivieren Sie die SSL-Zertifikat-überprüfung in Anfragen, dass sollte Ihnen ermöglichen, haben Zugriff auf den server, aber öffnen Sie Sie bis man-in-the-middle-Angriffen: stackoverflow.com/questions/15445981/...
Sieht aus wie jemand hat ein Dienstprogramm, das es erlaubt Anfragen geben Sie einen Hostheader für SSL-verbindungen: toolbelt.readthedocs.io/de/latest/...
InformationsquelleAutor Tymoteusz Paul
Würden Sie sagen
requests
zu fake dieHost
header, und ersetzen Sie den Hostnamen in der URL mit der IP-Adresse:Den URL 'patchen' kann getan werden, mit der
urlparse
Bibliothek:Demo gegen Stack Overflow:
In diesem Fall blickte ich die ip-Adresse dynamisch.
wenn Sie eine einfache reproduzierbare Fall kann ich schauen, ob das behoben werden kann.
Sicher, hier ein Beispiel: pastebin.com/2WQFWQit
sieht aus wie ein bug; ein anderes low-level-Pfad durch die HTTP-Bibliothek genommen wird, und es ist nicht gesagt, überspringen Sie die host-header.
eingereicht issue #4392.
InformationsquelleAutor Martijn Pieters