Wie kann ich ein Befehlszeilentool wie Wget verwenden, um sich an einer OpenID-Site anzumelden?

1435
terdon

Insbesondere möchte ich bestimmte Seiten aus meinem Benutzerprofil auf den verschiedenen Stack Exchange-Sites herunterladen können. Ich möchte dies jedoch automatisch (über einen cronJob) von der Befehlszeile und in einem analysierbaren Format tun. Ich ziehe es vor, Linux dafür zu verwenden, aber ich könnte bei Bedarf auf einen Mac- oder Windows-Computer zugreifen.

Idealerweise würde ich gerne ein Tool wie Wget oder cURL verwenden, um die Seiten abzurufen. Ich weiß zwar nicht, wie ich an dem Log vorbei komme. Ich habe Vorschläge gesehen, die besagen, dass Sie sich über Firefox anmelden können, den entsprechenden Cookie exportieren und ihn über seine --load-cookiesOption in Wget importieren können . Zum Beispiel hier und hier . Dies funktioniert zwar, wenn ich mich gerade angemeldet habe, aber nach einer Weile nicht. Ich vermute, weil das ID-Token aktualisiert werden muss.

Nach dem Einloggen in SU und dem Exportieren meiner Cookies kann ich folgendes tun:

wget --load-cookies cookies.txt \ https://superuser.com/users/151431/terdon?tab=responses 

Nach einigen Minuten bekomme ich eine 404-Fehlermeldung:

wget -O ~/stack/$(date +%s) --load-cookies ~/cookies.txt \ https://superuser.com/users/151431/terdon?tab=responses  --2013-08-06 04:04:14-- https://superuser.com/users/151431/terdon?tab=responses Resolving superuser.com (superuser.com)... 198.252.206.16 Connecting to superuser.com (superuser.com)|198.252.206.16|:80... connected. HTTP request sent, awaiting response... 404 Not Found 2013-08-06 04:04:15 ERROR 404: Not Found. 

Wie kann ich mich also automatisch über eine Befehlszeile bei einer OpenID-fähigen Website anmelden?


PS. Ich denke, dass dies hier besser geeignet ist als in Webanwendungen, da meine Frage eigentlich den Befehlszeilenaspekt betrifft und nicht die tatsächlichen Details der betreffenden Webseite. Ich würde vermuten, dass jede Lösung auf alle OpenID- Sites anwendbar ist .

9
Haben Sie in der SE-API (https://api.stackexchange.com) nachgefragt, ob sie die Informationen enthält, nach denen Sie suchen? Dies ist der offizielle Weg, um programmgesteuert auf die Daten zuzugreifen, und OAuth wird zur Authentifizierung verwendet. heavyd vor 11 Jahren 3
@ heavyd yeah, ich hatte irgendwie gehofft, dass ich dafür nicht in die API einsteigen müsste. Wenn das der einzige Weg ist, denke ich, muss ich das tun. Aus einem flüchtigen Blick erscheint es nicht (https://api.stackexchange.com/docs/authentication), als ob ich den Anmeldeprozess über die API automatisieren kann. Wissen Sie, ob ich mich auf eine Weise authentifizieren kann, die keine aktive Eingabe von mir erfordert? Wenn ich die Dokumente richtig verstanden habe, um Daten zu erhalten, für die eine Authentifizierung erforderlich ist, muss ich mich manuell anmelden. terdon vor 11 Jahren 0
Ich habe die SE-API zwar nicht verwendet, aber bei anderen OAuth-Implementierungen habe ich Sie einmal verwendet und Sie erhalten ein Token, das unbegrenzt gut ist. heavyd vor 11 Jahren 0

2 Antworten auf die Frage

1
Maarten

Sie können nicht, weil Cookies von Zeit zu Zeit aktualisiert werden. Dies ist aus Sicherheitsgründen der einzige Weg, auf dem Sie dies tun können, ist der Weg, den Sie bereits getan haben. zumindest aus meinem Verständnis.

Ich habe gerade gesehen, dass dies eine wirklich alte Frage ist ... Hoppla. Maarten vor 8 Jahren 0
-3
Jeff N

(Re-) Lesen Sie die Manpage für wgetund sehen Sie sich die Beschreibungen für --userund an --password.

Es wird nicht empfohlen, ein Kennwort als Befehlszeilenargument zu übergeben, da jeder, der ausgeführt wird, pses sehen kann. Die beste Vorgehensweise ist, rohe Passwörter nirgendwo zu speichern, aber die nächste beste ist, sie in eine Datei zu packen, die nur der Besitzer lesen kann.

Die von Ihnen erwähnten Flags beziehen sich auf die HTTP-basierte Authentifizierung (Basic, Digest usw.). SE verwendet keine davon zur Authentifizierung. Sie verlassen sich bei der Authentifizierung auf einen Drittanbieter [OpenID] (http://en.wikipedia.org/wiki/OpenID). heavyd vor 11 Jahren 3