A maneira mais direta de obter uma resposta HTTPS bruta e sem análise

39

Qual seria a maneira mais direta de fazer uma solicitação GET para um URL por HTTPS e obter a resposta bruta e não analisada?

Isso poderia ser alcançado com o curl? Se sim, quais opções você precisaria usar?

Bolota
fonte

Respostas:

51

Se você deseja usar curl, isso deve funcionar:

curl -D - https://www.google.com/

Observe, no entanto, que essa não é exatamente a resposta bruta. Por exemplo, a codificação de transferência em pedaços não será visível na resposta. Usando --rawresolve isso, também o modo detalhado ( -v) também é útil e -imostra os cabeçalhos antes do corpo da resposta:

curl -iv --raw https://www.google.com/

Se você deseja usar um pager como menos no resultado, também é necessário desativar a barra de progresso ( -s):

curl -ivs --raw https://www.google.com/ | less

Dependendo do que você deseja fazer, isso pode ou não ser um problema.

O que você recebe são todos os cabeçalhos de resposta HTTP e o documento no URL solicitado.

Mika Fischer
fonte
13

Aqui está uma maneira simples que vem à mente

echo 'GET / HTTP/1.1
Host: google.com

' | openssl s_client -quiet -connect google.com:443 2>/dev/null
Patrick
fonte
observe que alguns servidores (por exemplo, github.com) funcionam apenas comHTTP/1.0
Steven Penny
4

Não é curl, mas deve estar disponível em quase todos os Unices:

wget -S --spider https://encrypted.site

Se as mensagens de status o incomodarem:

wget -S --spider https://encrypted.site 2>&1 | awk '/^  /'

Se você deseja finais de linha CRLF:

wget -S --spider https://encrypted.site 2>&1 | awk '/^  / { sub(/$/,"\r"); print }'
Chris Down
fonte
Você sabe se isso preservaria os \r\ncaracteres na resposta?
Acorn
@ Acorn - Antes de tudo, nem todos os servidores da web responderão \r\ncomo um final de linha. Não acredito que isso seja preservado em nenhum caso, mas se isso for importante para você, adicionarei uma maneira de obter esse resultado na resposta.
19412 Chris Down
1
$ GET -e https://www.google.com

No Debian / Ubuntu, as distros pertencem ao pacote lwp-request.

funollet
fonte