Como posso usar uma ferramenta de linha de comando como o Wget para efetuar login em um site do OpenID?

9

Especificamente, gostaria de poder baixar algumas páginas do meu perfil de usuário nos vários sites do Stack Exchange. Gostaria, no entanto, de fazer isso automaticamente (usando um cron job), na linha de comando e em um formato analisável. Eu prefiro muito mais usar o Linux para isso, mas eu poderia ter acesso a uma máquina Mac ou Windows, se necessário.

Idealmente, gostaria de usar uma ferramenta como Wget ou cURL para buscar as páginas. Eu não sei como passar o log in embora. Eu tenho visto sugestões que mencionam que você pode logar via Firefox, exportar o cookie relevante e importá-lo para o Wget através de sua opção --load-cookies . Por exemplo, aqui e aqui . Embora isso funcione se eu tiver acabado de entrar, isso não acontece depois de um tempo. Eu acho que porque o token de ID tem que ser atualizado.

Então, logo após entrar no SU e exportar meus cookies, posso fazer:

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

Depois de alguns minutos, recebo um erro 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.

Então, como posso logar automaticamente em um site com OpenID ativado a partir da linha de comando?

PS. Eu acho que isso é mais adequado aqui do que em aplicações web, uma vez que a minha pergunta é realmente sobre o aspecto da linha de comando e não os detalhes reais da página web em questão. Eu acho que qualquer solução será aplicável a todos os sites OpenID .

    
por terdon 06.08.2013 / 04:11

2 respostas

1

Você não pode, porque os cookies são atualizados de vez em quando. Isso é para fins de segurança, a única maneira de fazer isso é como você já fez. pelo menos, do meu entendimento.

    
por 08.03.2016 / 11:58
-3

(Re-) Leia a man page para wget e veja as descrições dos --user e --password flags.

Observe que passar uma senha como um argumento de linha de comando não é recomendado, já que qualquer pessoa que executa ps pode vê-la. A melhor prática é não salvar as senhas não processadas em nenhum lugar, mas a próxima melhor é colocá-las em um arquivo que somente o proprietário possa ler.

    
por 06.08.2013 / 06:32