Como manipular HTTP com cURL
Objetivo
Aprenda como usar cURL para fazer solicitações HTTP para interagir com conteúdo online.
Distribuições
Todas as distribuições GNU/Linux
Requisitos
Apenas enrole. Está disponível em todos os repositórios de distribuição.
Dificuldade
Fácil
Convenções
#
– requer acesso root via su
ou sudo
.
$
– execute como seu usuário normal
Introdução
cURL é uma multiferramenta de linha de comando para interagir com a web. cURL é capaz de agir como um navegador da web, baixar arquivos, acessar APIs e até mesmo fazer login em contas online. cURL pode ser programado e lida com tudo, desde uma simples interface de linha de comando.
Agarrando uma página
Obter o HTML de uma página da web é uma das coisas mais básicas que o cURL pode fazer. Tente obter nossa página inicial.
$ curl https://linuxconfig.org
cURL despeja todo o HTML da página da web no terminal. Parece confuso, mas é isso que deveria fazer.
Tente outro. O site do Debian é um pouco mais fácil de ler.
$ curl https://www.debian.org/
Cabeçalhos HTTP
Muitas vezes, você não precisa de uma página da web inteira. Todo esse HTML pode ser difícil de ler e tudo que você precisa são informações sobre a conexão. cURL tem o -I
exatamente para isso.
$ curl -I https://linuxconfig.org
Agora, você obtém apenas os cabeçalhos HTTP que fornecem informações sobre sua conexão com o site.
Funciona da mesma forma com o Debian.
$ curl -I https://www.debian.org/
Controlando a saída
Toda essa saída não será muito útil se você não puder salvá-la. Seria difícil executar o cURL sempre que você precisar dele, e se ele mudar? Felizmente, você pode salvar a saída do cURL com o sinalizador -o
.
$ curl -o linuxconfig.html https://linuxconfig.org
Você acabou de salvar o código fonte da página inicial do LinuxConfig em um arquivo chamado linuxconfig.html
.
No entanto, isso é muito mais útil para arquivos multimídia. Tente pegar o logotipo do Google.
$ curl -o google.png https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png
Você também pode usar o sinalizador -O
para dizer ao cURL para usar o nome existente do arquivo.
$ curl -O https://getfedora.org/static/images/fedora_infinity_140x140.png
Solicitações HTTP e login
Com cURL, você pode interagir com páginas da web via HTTP. Na verdade, você pode usar cURL para fazer login em um site. Dê uma olhada neste exemplo do nosso Guia Hydra Pentesting.
curl -v --data 'log=username&pwd=realpassword&wp-submit=Log+In&testcookie=1' --cookie 'wordpress_test_cookie=WP+Cookie+check' http://localhost/wp-login.php
O sinalizador --data
ou -d
passa dados para um formulário usando variáveis de string grandes e os nomes dos campos de formulário associados. Você também pode enviar cookies com cURL.
Tente pesquisar DuckDuckGo para Linux.
$ curl -v -d 'q=linux' https://duckduckgo.com
Os resultados podem ser uma bagunça, mas a pesquisa em si é simples. Caso você esteja se perguntando, o sinalizador -v
adiciona os cabeçalhos à saída normal.
Considerações finais
cURL é incrivelmente poderoso. Você apenas arranhou a superfície, mas deve ter uma boa ideia de como o cURL pode interagir com páginas da web e baixar conteúdo da Internet. cURL pode fornecer alguns insights reais sobre como a web funciona, então definitivamente vale a pena experimentar um pouco mais.