Usando o Comando CURL
O comando curl
é um comando versátil que está disponível na maioria dos sistemas Linux e como o próprio nome do comando sugere é uma abreviação de “Cliente URL“. Ele é utilizado para a verificação de conectividade, transferência de dados, permitindo também o teste de diversas APIs Web.
Ele fornece diversos recursos interessantes como suporte a proxy, autenticação de usuário, upload de FTP, HTTP POST, cookies, resumo de transferência.
O curl
suporta diversos protocolos entre eles: HTTP, HTTPS, FILE, FTP, FTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET e TFTP.
Básico Comando CURL
A sintaxe básica do comando se assemelha com isto
curl [OPTIONS] [URL]
O uso mais simples é exibir o conteúdo de uma página, vejamos como:
curl umdominio.com.br/pagina.php
Se nenhum protocolo for informado pela url o protocolo http é assumido. O comando por padrão exibe o conteúdo da página no terminal.
Fazendo download
Podemos realizar o download da página ou arquivo utilizando as seguintes opções:
-O
: Salva a página/arquivo no diretório corrente com o mesmo nome que tinha no endereço-o
: Salva a página/arquivo com o nome/caminho especificado logo após o comando.
#irá salvar no mesmo diretório o arquivo com o nome pagina.php
curl -O http://umdominio.com.br/pagina.php
# irá salvar no diretório atual o arquivo com nome arquivo_download.zip
curl -o arquivo_download.zip http://umdominio.com.br/files.zip
O curl também permite reiniciar um download interrompido utilizando a opção -C
. Esta opção recebe um valor após ela que será o a quantidade de bytes pulado do download, para facilitar pode ser utilizado o -C -
para ele automaticamente encontrar onde e como resumir a transferência do ponto correto.
curl -C - -O http://umdominio.com.br/files.zip
Lembrando também que o comando permite informar diversos arquivos em sequencia para serem baixados.
curl -O http://umdominio.com.br/pagina1.html -O http://umdominio.com.br/foto01.jpg -O http://umdominio.com.br/foto02.jpg
Sendo que se os arquivos a serem baixados tiverem algum padrão de sequencia, podemos fazer de forma mais fácil, fornecendo um intervalo de valores( com [] ) ou uma lista(com {} ).
#realiza o download dos arquivos file01.txt, file02.txt, file02.txt ... file09.txt
curl -O http://umdominio.com.br/file0[1-9].txt
#realiza o download dos arquivos file01a.txt, file01b.txt, file01c.txt ... file01f.txt
curl -O http://umdominio.com.br/file01[a-f].txt
#realiza o download dos arquivo imagem-p.png, imagem-m.png, imagem-g.png
curl -O "http://umdominio.com.br/imagem-{p,m,g}.png"
Podemos combinar vários intervalos e listas para formar um padrão de url. No exemplo os arquivos serão salvos com o mesmo nome do servidor, para definir outro nome podemos utilizar a opção -o
que vimos anteriormente e utilizar o # seguido de um numero(iniciando em 1) para substituir pelo valor corrente do intervalo ou lista. Por exemplo:
curl -o "#1_file_#2.txt" http://{sub1,sub2}.umdominio.com.br/file0[1-2].txt
O comando acima irá baixar os arquivos com os nomes sub1_file_1.txt, sub1_file_2.txt, sub2_file_1.txt, sub2_file_2.txt.
Requisição POST com curl
Por padrão o curl
realiza uma requisição http do tipo GET, e para realizar uma requisição POST utilizamos um podemos informar uma opção –X POST
, ou simplesmente passar dados que serão enviados junto ao corpo da requisição. Para isto utilizamos o parâmetro -d
curl -X POST -d "nome=rodrigo&sobrenome=aramburu" https://www.botecodigital.dev.br/exemplos/requisicao.php
Informamos após a opção -d
os valores que serão enviados via POST, como se fossem enviados via formulário, no exemplo enviamos um valor com a chave “nome” e valor “rodrigo” e outro valor com a chave “sobrenome” com o valor “aramburu”.
Enviando Headers com CURL
Podemos também enviar um ou mais headers(cabeçalhos) para uma requisição, para isto utilizamos o parâmetro -H
curl -H "Content-type: application/json" -H "Accept: application/json" https://www.botecodigital.dev.br/exemplos/requisicao.php
Enviando Cookies com CURL
Podemos enviar um cookie para uma url através do parâmetro --cookie
passando logo em seguida os valores no formato chave=valor.
curl --cookie "meu-cookie=1234" https://www.botecodigital.dev.br/exemplos/requisicao.php
Para armazenarmos um cookie enviado pelo servidor podemos utilizar a opção --cookie-jar
seguido do nome de um arquivo onde serão gravados os valores dos cookies enviados pelo servidor.
curl --cookie-jar site-cookies.txt https://www.botecodigital.dev.br/exemplos/requisicao.php
E para enviar os cookies armazenados no arquivo utilizamos opção --cookie
passando o nome do arquivo.
curl --cookie site-cookies.txt https://www.botecodigital.dev.br/exemplos/requisicao.php
Utilizando Proxy
Caso você esta utilizando o comando atrás de um proxy podemos informá-lo através da opção -x
curl -x 119.252.168.218:7676 https://www.botecodigital.dev.br/exemplos/requisicao.php
Caso o proxy precise de usuário e senha podemos fornecer através da opção - U
passado os dados no formato user:password
Bom era isso, espero que ajude. T++.