Curl

curl

O curl (Client URL) é uma ferramenta de linha de comando poderosa usada para transferir dados entre servidores e clientes, compatível com uma ampla variedade de protocolos de rede, como HTTP, HTTPS, FTP, FTPS, SCP, SFTP, TFTP, TELNET, LDAP, entre outros. Ele permite que os usuários interajam com servidores web e APIs RESTful, e é uma ferramenta essencial para desenvolvedores e administradores de sistemas devido à sua versatilidade e facilidade de uso.

Principais Funções do curl

  • Requisições HTTP/HTTPS: O curl pode enviar requisições HTTP e HTTPS, o que permite acessar conteúdo web, baixar arquivos e interagir com APIs REST.

  • Transferência de Arquivos: Suporta transferência de arquivos com protocolos como FTP e SCP.

  • Autenticação: Suporta autenticação básica, OAuth, JWT, e autenticação de cookies, útil para acessar dados protegidos.

  • Manipulação de Cookies: Pode ler e gravar cookies, permitindo manter sessões em sites que exigem login.

  • Redirecionamentos: Segue automaticamente redirecionamentos HTTP com a opção -L, essencial ao acessar URLs que redirecionam para outras páginas.

  • Headers Personalizados: Permite adicionar, modificar ou excluir cabeçalhos HTTP, o que é útil ao realizar testes de APIs.

  • Codificação e Compressão: Suporta dados codificados e comprimidos, economizando largura de banda.

  • Upload de Arquivos: Suporta upload de arquivos via POST e PUT, útil em formulários e APIs.

  • Automação: Como ferramenta de linha de comando, o curl é amplamente utilizado em scripts para automação de tarefas.

Estruturação de Requisições

O curl também permite que você manipule a estrutura de uma requisição HTTP. Aqui estão algumas opções importantes:

  • Método HTTP Customizado (-X): Permite definir métodos HTTP como GET, POST, PUT, DELETE, etc., o que possibilita o teste completo de APIs.

  • Codificação de Dados URL (--data-urlencode): Garante que caracteres especiais em parâmetros sejam codificados, evitando erros ao enviar dados complexos.

  • Upload de Arquivos com -F: Permite enviar arquivos com multipart/form-data, necessário em muitos formulários e APIs.

Segurança com curl

  • HTTPS e Certificados: Por padrão, curl verifica certificados SSL/TLS ao acessar HTTPS. Se você precisar ignorar a verificação de certificado (não recomendado para produção), pode usar -k ou --insecure.

  • Autenticação de Dois Fatores: Em alguns casos, curl é usado em processos automatizados com autenticação de dois fatores (2FA) ou tokens de acesso, exigindo que você envie um token junto com a requisição.

  • Cookies e Sessões: Manter a sessão de um usuário é essencial ao interagir com APIs que exigem login. curl permite ler cookies (-b ) e gravá-los (-c ), mantendo a sessão ativa.

Tabela de Comandos do curl

Comando
Descrição

-s

Esconde o progresso

-v

Ativa o modo verbose (detalhado)

--trace-ascii <file>

Salva o log completo em um arquivo em formato ASCII

-w "format"

Formatação personalizada das informações de saída

-O

Salva o output com o nome original do arquivo

-o <file>

Salva o output em um arquivo específico

-m <seconds>

Define o tempo máximo (timeout) em segundos

-d "string"

Envia dados no corpo da requisição HTTP POST

-d @file

Envia o conteúdo de um arquivo como corpo da requisição POST

--data-urlencode "[name]=val"

Codifica e envia dados na requisição POST

-F name=value

Faz upload de dados usando multipart/form-data

-F name=@file

Faz upload de um arquivo usando multipart/form-data

-T <file>

Faz upload de um arquivo em uma requisição HTTP PUT

-I

Envia uma requisição HEAD (apenas cabeçalhos)

-i

Inclui cabeçalhos da resposta no output

-X "METHOD"

Define um método HTTP customizado

-b <file>

Lê cookies de um arquivo (cookiejar)

-c <file>

Salva cookies em um arquivo (cookiejar)

-b "c=1; d=2"

Envia cookies específicos na requisição

-A "string"

Define o agente de usuário (User-Agent)

-x <host:port>

Configura um proxy

-H "name: value"

Adiciona um cabeçalho personalizado na requisição

-H "name:"

Remove um cabeçalho específico

--resolve <host:port:addr>

Mapeia um host e porta para um endereço IP específico

--compressed

Solicita dados compactados (reduz o tamanho)

-k

Ignora verificação de certificado SSL (inseguro)

-u user:passwd

Define autenticação básica com usuário e senha

-L

Segue redirecionamentos HTTP

-Z

Executa requisições em paralelo

--libcurl <file>

Gera código em C para a requisição feita com curl

--help

Lista todas as opções disponíveis

Exemplos

  • Autenticação com curl: curl -u username:password http://example.com

  • Autenticação com token Bearer (para APIs RESTful): curl -H "Authorization: Bearer " http://example.com/api/resource

  • Requisição Paralela com curl: curl -Z http://example.com/page1 http://example.com/page2

Atualizado