Come posso usare uno strumento da riga di comando come Wget per accedere a un sito OpenID?


10

In particolare, vorrei poter scaricare alcune pagine dal mio profilo utente sui vari siti di Stack Exchange. Vorrei, tuttavia, farlo automaticamente (usando un cronlavoro), dalla riga di comando e in un formato analizzabile. Preferisco di gran lunga usare Linux per questo, ma potrei accedere a un computer Mac o Windows se necessario.

Idealmente, vorrei utilizzare uno strumento come Wget o cURL per recuperare le pagine. Tuttavia, non so come superare il login. Ho visto suggerimenti che menzionano che è possibile accedere tramite Firefox, esportare i cookie pertinenti e importarli in Wget attraverso la sua --load-cookiesopzione. Ad esempio qui e qui . Anche se funziona se ho appena effettuato l'accesso, dopo un po 'non funziona. Suppongo che il token ID debba essere aggiornato.

Quindi, subito dopo aver effettuato l'accesso a SU ed esportato i miei cookie, posso fare:

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

Dopo alcuni minuti, però, ricevo un errore 404:

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.

Quindi, come posso accedere automaticamente a un sito Web abilitato per OpenID dalla riga di comando?


PS. Penso che questo sia più adatto qui che nelle applicazioni Web poiché la mia domanda riguarda davvero l'aspetto della riga di comando e non i dettagli effettivi della pagina Web in questione. Immagino che qualsiasi soluzione sarà applicabile a tutti i siti OpenID .


3
Hai esaminato l'API SE ( api.stackexchange.com ) per vedere se fornisce le informazioni che stai cercando? Questo è il modo ufficiale per ottenere l'accesso programmatico ai dati e utilizza OAuth per l'autenticazione.
pesante

@heavyd sì, speravo quasi di non dover approfondire l'API per questo. Se questo è l'unico modo per cui dovrei immaginarlo. Da una rapida occhiata, non sembra che io possa automatizzare il processo di accesso attraverso l'API. Sai se posso eseguire l'autenticazione in un modo che non richiede alcun input attivo da parte mia? Se capisco correttamente i documenti per ottenere dati che richiedono l'autenticazione, dovrò accedere manualmente.
terdon

In realtà non ho usato l'API SE, ma in altre implementazioni OAuth ho usato il tuo login una volta e ti viene dato un token che è buono a tempo indeterminato.
pesante

Risposte:


1

Non puoi, perché i cookie si aggiornano ogni tanto. Questo è per motivi di sicurezza, l'unico modo per farlo è quello che hai già fatto. almeno, dalla mia comprensione.


Ho appena visto che questa è una domanda davvero vecchia ... Oops.
Maarten,

-3

(Ri-) Leggi la pagina man per wgete guarda le descrizioni per i flag --usere --password.

Si noti che non è consigliabile passare una password come argomento della riga di comando, poiché chiunque lo esegua pspuò vederla. La migliore pratica è di non salvare le password non elaborate da nessuna parte, ma la migliore è metterle in un file che solo il proprietario può leggere.


3
I flag che menzioni riguardano l'autenticazione basata su HTTP (base, digest, ecc.). SE non utilizza nessuno di questi per l'autenticazione. Si affidano a un provider OpenID di terze parti per l'autenticazione.
pesante
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.