Como eu uso o wget / curl para fazer o download de um site em que estou logado?

35

Algumas partes da wikipedia aparecem de forma diferente quando você está logado. Eu gostaria de wget páginas do usuário para que eles aparecessem como se eu estivesse logado.

Existe uma maneira de eu poder usar páginas de usuários como esta

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

esta é a página de login:

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

8 respostas

40

A maneira mais fácil: faça o login com seu navegador e forneça os cookies para wget

Método mais fácil: em geral, você precisa fornecer wget ou curl com os cookies (logados) de um site específico para que eles possam buscar as páginas como se você estivesse logado .

Se você estiver usando o Firefox, é fácil fazer isso por meio dos Exportar cookies add-on. Instale o complemento e:

  1. Vá para Ferramentas ... Exportar cookies e salve o arquivo cookies.txt (você pode alterar o nome do arquivo / destino).
  2. Abra um terminal e use wget com a opção --load-cookies=FILENAME , por exemplo

    wget --load-cookies=cookies.txt http://en.wikipedia.org/wiki/User:A
    
    • Para curl , é curl --cookie cookies.txt ...

(Tentarei atualizar esta resposta para usuários do Chrome / Chromium)

Da maneira mais difícil: use curl (de preferência) ou wget para gerenciar toda a sessão

  • Um tutorial detalhado está além do escopo desta resposta, mas você usa o curl com o --cookie-jar ou wget com as opções --save-cookies --keep-session-cookies , junto com o método HTTP / S PUT para efetuar login em um site, salvar os cookies de login e usá-los para simular um navegador.
  • Escusado será dizer que isso requer passar pelo código-fonte HTML da página de login (obter nomes de campos de entrada, etc.) e muitas vezes é difícil trabalhar em sites que usam qualquer coisa além da autenticação simples de login / senha.
  • Dica: se você seguir esse caminho, geralmente é muito mais simples lidar com a versão móvel de um site (se disponível), pelo menos para a etapa de autenticação.
por ish 10.07.2012 / 03:46
3

Com cURL é realmente fácil de lidar com cookies em ambos os sentidos.

curl www.target-url.com -c cookie.txt , em seguida, salvará um arquivo chamado cookie.txt. Mas você precisa fazer o login, então precisa usar --data com argumentos como: curl -X --data "var1=1&var2=2" www.target-url.com/login.php -c cookie.txt . Depois de obter loggued cookie você pode enviá-lo com: curl www.target-url.com/?user-page.php -b cookie.txt

Basta usar -c (--cookie) ou -b (--cookie-jar) para salvar e enviar.

Nota1: Usar o cURL CLI é muito mais fácil que o PHP e talvez mais rápido;)

Para salvar o conteúdo final, você pode facilmente adicionar > filename.html ao seu comando cURL e, em seguida, salvar o código html completo.

Nota2 sobre "full": Você não pode renderizar javascript com cURL, apenas obtenha o código-fonte.

    
por erm3nda 18.05.2014 / 21:10
2

A postagem no blog Wget with Firefox Cookies mostra como acessar os dados sqlite arquivo no qual o Firefox armazena seus cookies. Dessa forma, não é necessário exportar manualmente os cookies para uso com o wget. Um comentário sugere que ele não funciona com cookies de sessão, mas funcionou bem para os sites com os quais tentei.

    
por Falko Menge 20.10.2016 / 12:08
1

Você já tentou isso?

wget --user=username --password=password http://en.wikipedia.org/wiki/User:A
    
por Corey Whitaker 10.07.2012 / 01:52
1

Tente algo como:

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

Veja também este link:

Como baixar esta página com o wget?

    
por kenorb 20.02.2013 / 19:34
1

Para logins mais complicados, você também deve considerar usar um script Python e algum módulo que imite um navegador, como o link em vez de curl ou wget .

Desta forma, os cookies de sessão são tratados automaticamente, você pode seguir os links e preencher formulários de login, e assim "script"-se através do processo de login, como se usando o seu navegador web.

    
por StW 03.04.2013 / 10:44
1

Para aqueles que ainda estão interessados nessas perguntas, há uma extensão muito útil do Chrome chamada CurlWGet que permite gerar uma solicitação wget / curl com medidas de autenticação, etc., com um clique. Para instalar esta extensão, siga os passos abaixo:

  1. Instale a extensão na Chrome Webstore .
  2. Ir para a página da web que você gostaria de baixar.
  3. Iniciar o download.
  4. A extensão gerará um link para você.

Aproveite!

    
por jehon 05.01.2017 / 13:39
1

dê uma olhada no cliget para o Firefox.

Quando você estiver prestes a fazer o download, na caixa de diálogo de download final, você terá a opção de copiar o download como linha de comando curl para a área de transferência.

    
por weberjn 28.05.2017 / 21:47

Tags