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
curl
-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