Frage Wie verwende ich wget / curl zum Herunterladen von einer Website, bei der ich angemeldet bin?


Einige Teile von Wikipedia erscheinen anders, wenn Sie eingeloggt sind. Ich möchte Benutzerseiten so anzeigen, dass sie so aussehen, als wäre ich eingeloggt.

Gibt es eine Möglichkeit, User-Seiten wie diese zu wetten?

http://en.wikipedia.org/wiki/User:A

Dies ist die Anmeldeseite:

http://en.wikipedia.org/w/index.php?title=Special:UserLogin&returnto=Login&campaign=ACP3

37
2017-07-09 23:50


Ursprung


Siehe auch diesen Artikel: [Wie man diese Webseite mit wget herunterlädt?] [1] [1]: superuser.com/questions/214846/ ... - kenorb


Antworten:


Der einfache Weg: Loggen Sie sich mit Ihrem Browser ein und geben Sie die Cookies an wget

Einfachste Methode: Im Allgemeinen müssen Sie bereitstellen wget oder locken mit den (eingeloggten) Cookies von einer bestimmten Website, damit sie Seiten abrufen können als ob du eingeloggt wärst.

Wenn Sie Firefox verwenden, ist es einfach über die Cookies exportieren Erweiterung. Installieren Sie das Add-On und:

  1. Gehe zu Werkzeuge ... Cookies exportierenund rette die cookies.txt Datei (Sie können den Dateinamen / das Ziel ändern).
  2. Öffnen Sie ein Terminal und verwenden Sie wget mit dem --load-cookies=FILENAME Option, z.B.

    wget --load-cookies=cookies.txt http://en.wikipedia.org/wiki/User:A
    
    • Zum locken, es ist curl --cookie cookies.txt ...

(Ich werde versuchen, diese Antwort für Chrome- / Chromium-Nutzer zu aktualisieren)

Der harte Weg: Verwenden locken (vorzugsweise) oder wget um die gesamte Sitzung zu verwalten

  • Ein detailliertes How-To geht über den Rahmen dieser Antwort hinaus, aber Sie verwenden es locken mit dem --cookie-jar oder wget mit dem --save-cookies --keep-session-cookiesOptionen, zusammen mit der HTTP / S PUT-Methode, um sich bei einer Site anzumelden, speichern Sie die Login-Cookies und verwenden Sie sie dann, um einen Browser zu simulieren.
  • Unnötig zu sagen, dass dies die HTML-Quelle für die Anmeldeseite durchläuft (Eingabefeldnamen usw.), und es ist oft schwierig, für Websites zu arbeiten, die alles andere als einfache Login / Passwort-Authentifizierung verwenden.
  • Spitze: Wenn Sie diesen Weg gehen, ist es oft viel einfacher, mit dem umzugehen Handy, Mobiltelefon Version einer Website (falls verfügbar), zumindest für den Authentifizierungsschritt.

42
2017-07-10 01:46



Netter Tipp. Der Code für die mobile Website ist oft viel sauberer. - CousinCocaine
Wie sieht eine solche cookies.txt aus? - Frederick Nord
Dieses Add-on "Cookies exportieren" hat für jede einzelne Site, auf die ich in Firefox zugegriffen habe, eine Cookie-Datei mit den Cookies erstellt. Wenn Sie dieser Antwort folgen, werden Sie alle Ihre Cookies auf jeder Seite präsentieren, die Sie treffen. Ich halte dies für einen Sicherheitsfehler in dieser Antwort. Sie können dieses Problem problemlos umgehen, indem Sie Folgendes verwenden: grep mydomain cookies.txt > mydomain-cookies.txt - erik.weathers
Für Chrom: chrome.google.com/webstore/detail/cookiestxt/... - Timo
Sie können verwenden Cookie-Manager Add-on in Firefox, um nur ausgewählte Cookies zu exportieren. - Hans Ginzel


Mit cURL ist die Handhabung von Cookies in beiden Richtungen sehr einfach.

curl www.target-url.com -c cookie.txt Dann wird eine Datei namens cookie.txt gespeichert. Aber Sie müssen sich anmelden, also müssen Sie --data mit Argumenten wie: curl -X --data "var1=1&var2=2" www.target-url.com/login.php -c cookie.txt. Sobald Sie Loggued-Cookie erhalten, können Sie es senden mit: curl www.target-url.com/?user-page.php -b cookie.txt

Benutze -c (--cookie) oder -b (--cookie-jar) um zu speichern und zu senden.

Hinweis1: Mit cURL CLI ist viel einfacher als PHP und vielleicht schneller;)

Um den endgültigen Inhalt zu speichern, kannst du ihn einfach hinzufügen > filename.html zu Ihrem cURL-Befehl dann vollständigen HTML-Code speichern.

Anmerkung 2 über "full": Yo kann Javascript mit cURL nicht rendern, nur den Quellcode holen.


3
2018-05-18 19:10



-X Parameter steht für "do posten", aber verwenden --data=xxx  -X ist implizit, also können Sie es sicher entfernen. - erm3nda
-b ist read cookie - Timo


Der Blogbeitrag Wget mit Firefox Cookies zeigt, wie Sie auf die SQLite-Datei zugreifen, in der Firefox seine Cookies speichert. Auf diese Weise müssen die Cookies für die Verwendung mit wget nicht manuell exportiert werden. Ein Kommentar deutet darauf hin, dass es nicht mit Session-Cookies funktioniert, aber es funktionierte für die Seiten, mit denen ich es ausprobiert habe.


2
2017-10-20 10:08





Hast du das versucht?

wget --user=username --password=password http://en.wikipedia.org/wiki/User:A

1
2017-07-09 23:52



ja - das hat leider nicht funktioniert = ( - user784637
Hinweis: Diese Syntax funktioniert nur für die grundlegende HTTP-Authentifizierung (in der Ihr Browser ein spezielles Dialogfeld für den Benutzernamen / das Kennwort öffnet), nicht für die webseitenbasierte Authentifizierung. - ish
Das grundlegende HTTP-Authentifizierungs-URL-Format lautet admin: admin@www.url.com, aber wie @izx sagt, ist einfaches HTTP eine Browser-Funktion, keine PHP-Programmierung oder Code. Wenn Sie eines Tages auf eine htaccess-geschützte URL zugreifen müssen, können Sie diesen Modus verwenden; - erm3nda
Ich habe keinen Downvote gemacht, aber das ist kein guter Weg, um sich zu authentifizieren: Wenn Sie versehentlich solche Skripte veröffentlichen, können Leute Ihr Passwort verwenden. - Willem Van Onsem
Was ist mit den Downvotes? Kann keine Antwort sein, aber immer noch eine Antwort. - Overcode


Versuchen Sie etwas wie:

wget --keep-session-cookies --save-cookies cookies.txt --post-data 'user=goyamy&passwrd=mypassword' http://forum.ubuntu-it.org/

Siehe auch diesen Link:

Wie lade ich diese Webseite mit wget herunter?


1
2018-02-20 18:34



Genau wie jede Ausgabe. Benutzen > filename.html um die Ausgabe am aktuellen Verzeichnis zu speichern oder einen vollständigen Dateipfad zu erstellen. Dies gilt sowohl für Linux- als auch für Windows-Systeme. - erm3nda
Also, ich sehe, dass wget viele Funktionen wie cURL oder umgekehrt hat. Es kann POST machen, also kann es sich auf Webseiten anmelden. Interessant. - erm3nda


Für komplexere webbasierte Logins sollten Sie auch ein Python-Skript und ein Modul, das einen Browser imitiert, verwenden http://www.search.sourceforge.net/mechanize/Anstatt von curl oder wget.

Auf diese Weise werden Session-Cookies automatisch verarbeitet, Sie können Links folgen und Anmeldeformulare ausfüllen und sich so durch den Login-Prozess wie mit Ihrem Web-Browser "scriptieren".


1
2018-04-03 08:44



Ja, Mechanisieren kann wirklich nett sein. Auch (und ursprünglich) in Perl erhältlich, wenn das mehr deine Tasse Tee ist. - andol


Für diejenigen, die immer noch an diesen Fragen interessiert sind, gibt es eine sehr nützliche Chrome-Erweiterung namens CurlWGet Damit können Sie ein generieren wget / curl Anfrage mit Authentifizierungsmaßnahmen, etc. mit einem Klick. Führen Sie die folgenden Schritte aus, um diese Erweiterung zu installieren:

  1. Installieren Sie die Erweiterung von der Chrome-Webstore.
  2. Gehen Sie auf die Webseite, die Sie herunterladen möchten.
  3. Starten Sie den Download.
  4. Die Erweiterung wird einen Link für Sie generieren.

Genießen!


1
2018-01-05 12:39





schau es dir an Klient für Firefox.

Wenn Sie im Download-Dialog sind, haben Sie die Möglichkeit, den Download als curl-Kommandozeile in die Zwischenablage zu kopieren.


1
2018-05-28 19:47