wget -c verificação de certificado do site

2
anisha@linux-dopx:~> wget -c --no-check-certificate --user abc --password xyz https://www.smart-developer.com/lnmshop/download/SmartDeveloperUS/203/SD_02.pdf

--2011-08-29 15:11:53--  https://www.smart-developer.com/lnmshop/download/SmartDeveloperUS/203/SD_02.pdf
Resolving www.smart-developer.com... 80.237.227.161
Connecting to www.smart-developer.com|80.237.227.161|:443... connected.
WARNING: cannot verify www.smart-developer.com's certificate, issued by '/C=US/O=Thawte, Inc./OU=Domain Validated SSL/CN=Thawte DV SSL CA':
  Unable to locally verify the issuer's authority.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: 'SD_02.pdf'
    [   <=>                                                                   ] 19,286      10.4K/s   in 1.8s    
2011-08-29 15:12:00 (10.4 KB/s) - 'SD_02.pdf' saved [19286]

O livro baixado está em KB (tamanho real 20 MB), e mostra erro na abertura também, onde em baixar diretamente pelo Firefox, Eu não tenho problemas.

EDIT 1: Parece que o shell não pode tolerar @ no nome de usuário!

Veja também as veiculações de cotações.

Role para a direita.

anisha@linux-dopx:~> wget -c https://[email protected]:[email protected]/lnmshop/download/SmartDeveloperUS/203/SD_02.pdf
https://[email protected]:[email protected]/lnmshop/download/SmartDeveloperUS/203/SD_02.pdf: Bad port number.

anisha@linux-dopx:~> wget -c https://'[email protected]':[email protected]/lnmshop/download/SmartDeveloperUS/203/SD_02.pdf
https://[email protected]:[email protected]/lnmshop/download/SmartDeveloperUS/203/SD_02.pdf: Bad port number.

anisha@linux-dopx:~> wget -c https://'[email protected]:abc'@www.smart-developer.com/lnmshop/download/SmartDeveloperUS/203/SD_02.pdf
https://[email protected]:[email protected]/lnmshop/download/SmartDeveloperUS/203/SD_02.pdf: Bad port number.

anisha@linux-dopx:~> wget -c https://x.y.z:[email protected]/lnmshop/download/SmartDeveloperUS/203/SD_02.pdf
--2011-08-29 16:01:38--  https://x.y.z:*password*@www.smart-developer.com/lnmshop/download/SmartDeveloperUS/203/SD_02.pdf
Resolving www.smart-developer.com... 80.237.227.161
Connecting to www.smart-developer.com|80.237.227.161|:443... connected.
ERROR: cannot verify www.smart-developer.com's certificate, issued by '/C=US/O=Thawte, Inc./OU=Domain Validated SSL/CN=Thawte DV SSL CA':
  Unable to locally verify the issuer's authority.
To connect to www.smart-developer.com insecurely, use '--no-check-certificate'.
Unable to establish SSL connection.
anisha@linux-dopx:~/Desktop>
    
por Aquarius_Girl 29.08.2011 / 11:56

1 resposta

1

Tipos de autenticação

O HTTP suporta autenticação nativa e é isso que você usou. A autenticação HTTP nativa é raramente usada, no entanto. O HTTP também permite que os dados do formulário sejam enviados para um servidor; A maioria dos sites, incluindo o que você está tentando usar, usa essa autenticação baseada em formulários em vez da autenticação HTTP porque é mais fácil de usar e personalizável.

Como funciona a autenticação de formulários

Quando um cliente HTTP solicita um recurso de um servidor HTTP, muitos dados são enviados no cabeçalho HTTP. A parte importante para a autenticação baseada em formulário são os cookies. Um cookie é apenas um nome para um conjunto de pares chave = valor. Vários cookies podem ser enviados em uma solicitação HTTP.

Quando uma solicitação de um recurso restrito é recebida, o servidor procurará um token de autenticação específico no cookie da sessão. Se não existir, significa que o cliente não efetuou login, portanto, ele retorna um formulário de login em vez do recurso solicitado. Se o token existir e for válido, significa que o cliente efetuou login, portanto, o servidor retorna o recurso que foi solicitado.

Então, como conseguimos esse token de autenticação especial e como o enviamos? Nós o recebemos enviando o formulário de login com dados válidos. Depois que o servidor autentica o cliente, ele envia de volta um cookie no cabeçalho HTTP. Precisamos salvar esse cookie e passá-lo com todas as solicitações futuras.

O tachas de latão

Coleta de informações

Veja a fonte da página de login. Você já fez o download usando wget, apenas abra isso em um editor de texto. Procure <form...> na origem. Em geral, pode haver vários, e você pode ter que descobrir qual deles é para enviar os dados de login. No que você está trabalhando agora, há apenas um formulário. Em seguida, procure todas as tags <input...> . Estes têm dados que serão enviados como parte dos dados do formulário. De particular interesse é a parte name=... . Esta é a parte chave do par chave = valor, e o que quer que você preencha é a parte valor .

A página com a qual você está trabalhando tem os seguintes campos Login , Password , AdminSiteaccessURI , LoginButton e RedirectURI . O </form> é o final do formulário - você não precisa procurar mais. Precisamos enviar todas essas chaves com os valores apropriados. Alguns dos valores são preenchidos por você - o que inclui Login e Password , outros, você pode pegar o valor que já está presente no campo. Se você observar o RedirectURI , verá que o atributo value= do servidor preencheu o URI do recurso real que você estava solicitando em primeiro lugar.

Existe mais uma informação importante: onde e como submetemos os dados? Isso pode ser encontrado na tag <form...> . Terá um método e uma ação. A ação não tem o URL completo; tem um URL relativo à base, mas você precisará do URL completo, então adicione a base ao URL relativo. A ação é o URL para enviar e a ação informa se é uma solicitação POST ou GET. A página com a qual você está trabalhando precisa dos dados enviados pelo método POST.

Enviando os dados de login

Agora que sabemos o que vamos enviar, precisamos fazer isso. Podemos usar wget para isso. Se você olhar para a página man, você encontrará uma opção --post-data=string ; mostra como formatá-lo: key1=value1&key2=value2... . É simplesmente key = value para cada par, concatenado por um & . Esta não é a única opção que precisamos.

Lembre-se do token de autenticação? O servidor irá enviá-lo de volta como parte da resposta, e precisamos salvá-lo. Olhando através da página man novamente para "cookie", você verá algumas opções importantes. --save-cookies file e --keep-session-cookies .

Construa sua linha de comando com essas opções e execute-a, tendo em mente que o URL para o qual você está enviando não é o recurso que você estava tentando obter originalmente - você precisa enviar para o URL apontado pelo <form action=...> atributo. Você deve acabar com seus cookies de sessão em um arquivo e, possivelmente (se o wget seguir com sucesso os redirecionamentos HTTP), o arquivo PDF como a saída. Se não tiver recebido o arquivo PDF, você enviará outra solicitação (desta vez sem --post-data ), mas, desta vez, inclua os cookies salvos antes de usar o '--load-cookies file'.

Isso deve ser feito!

    
por 29.08.2011 / 15:24

Tags