Gerador de Comando curl
Crie um comando curl real e funcional a partir de um método HTTP, URL, cabeçalhos, corpo e opções de autenticação — com o escape correto da shell aplicado automaticamente — e copie-o com um clique.
238 visualizações
Uma Breve História do curl
O curl foi criado em 1998 pelo desenvolvedor sueco Daniel Stenberg, que escreveu a sua primeira versão para obter automaticamente taxas de câmbio para um bot de IRC num canal de chat sueco — uma necessidade pequena e pessoal, não um grande plano para construir infraestrutura. As pessoas continuaram a pedir mais protocolos e mais opções, e essa pequena ferramenta transformou-se numa ferramenta de linha de comando de uso geral para transferir dados via HTTP, HTTPS, FTP e, com o tempo, dezenas de outros protocolos. Stenberg permaneceu como mantenedor principal do curl praticamente durante toda a sua existência; hoje o curl vem pré-instalado por padrão no macOS, em praticamente todas as distribuições Linux e — desde 2018 — no Windows 10 e versões posteriores, estimando-se que seja executado em milhares de milhões de dispositivos em todo o mundo, de routers e automóveis a consolas de jogos e em quase todos os pipelines de integração contínua que comunicam com uma API. O que começou como a solução para um problema pessoal muito específico é hoje, sem exagero, o cliente HTTP de linha de comando mais amplamente utilizado que existe, e uma das peças de software open-source de que a internet mais depende silenciosamente.
Como Interpretar as Flags Que Esta Ferramenta Gera
Por padrão, o curl não segue redirecionamentos HTTP. Se um servidor responder com um código de estado 301 ou 302 e um cabeçalho Location a apontar para outro lugar, o curl simples mostra essa resposta de redirecionamento — ou um corpo vazio — e para; não segue automaticamente o novo URL da forma silenciosa como um navegador o faz. Isto confunde um número enorme de utilizadores que usam o curl pela primeira vez: um URL que funciona perfeitamente num navegador devolve uma resposta confusa, vazia ou incorreta no curl, aparentemente sem motivo, simplesmente porque o navegador seguiu um redirecionamento que o curl não seguiu. A solução é a flag -L (--location), que diz ao curl para seguir a cadeia de redirecionamentos até ao destino final. É uma necessidade tão comum que muitos engenheiros usam -L por padrão sempre que não estão deliberadamente a testar o comportamento de redirecionamento em si.
Assim que um comando inclui cabeçalhos ou conteúdo no corpo com espaços, aspas ou caracteres especiais da shell ($, &, ;, crases), a forma como se coloca entre aspas deixa de ser cosmética — passa a ser a diferença entre um pedido que funciona e um que a shell corrompe antes mesmo de o curl o receber. Um cabeçalho como Authorization: Bearer abc 123 escrito sem aspas é dividido pela shell no espaço, pelo que o curl recebe Authorization: e Bearer como dois argumentos separados e quebrados, em vez de um só. Colocar todo o valor entre aspas simples diz à shell para tratar tudo o que está dentro literalmente, incluindo espaços — mas as aspas simples não podem conter um carácter de aspa simples literal, uma vez que é precisamente esse carácter que fecha a aspa. O escape padrão para esse caso é fechar a aspa, inserir uma aspa simples precedida de barra invertida e reabrir a aspa: '\''. Esta ferramenta aplica esse escape automaticamente a cada valor que insere, pelo que cabeçalhos, conteúdo do corpo e credenciais de autenticação com espaços, aspas ou outros caracteres especiais produzem sempre um comando que funciona corretamente — sem que precise de decorar as regras de escape.
Perguntas Frequentes
Por que preciso da flag -L em alguns comandos curl?
O curl não segue redirecionamentos HTTP por padrão. Se o servidor que está a chamar responder com um código de estado 301 ou 302 e um cabeçalho Location, o curl simples mostra essa resposta de redirecionamento em vez do conteúdo final e para por aí. Os navegadores seguem redirecionamentos silenciosamente, por isso um URL que "funciona no navegador" pode devolver uma resposta vazia ou inesperada no curl. Adicionar -L (--location) diz ao curl para seguir automaticamente a cadeia de redirecionamentos até chegar ao destino final.
Por que o meu comando curl falha quando um cabeçalho tem um espaço?
É a shell — não o curl — que divide uma linha de comando em argumentos separados, e faz essa divisão nos espaços não protegidos por aspas, por padrão. Um valor de cabeçalho como Bearer abc123 escrito sem aspas transforma-se em duas palavras separadas que a shell entrega ao curl como se fossem dois argumentos diferentes, quebrando o cabeçalho. Colocar o valor entre aspas simples diz à shell "trata tudo o que está aqui dentro como uma única peça literal, espaços incluídos", que é exatamente o que esta ferramenta faz automaticamente para cada campo que preenche.
Qual é a diferença entre o modo JSON e o modo Raw para o corpo do pedido?
O modo JSON adiciona automaticamente um cabeçalho Content-Type: application/json junto com o corpo, dizendo ao servidor para interpretar o conteúdo como JSON — a maioria das APIs modernas exige que este cabeçalho esteja presente, caso contrário rejeitam ou interpretam mal o pedido. O modo Raw envia exatamente o texto que escreveu, sem assumir nenhum tipo de conteúdo, sendo a escolha correta para dados codificados como formulário, texto simples, XML ou qualquer corpo em que queira definir manualmente o seu próprio cabeçalho Content-Type na secção de cabeçalhos.
A autenticação Bearer token é o mesmo que a autenticação Basic?
Não, funcionam de forma diferente. A autenticação Bearer envia um cabeçalho Authorization: Bearer <token> com um token de acesso opaco, normalmente emitido por um fluxo OAuth ou por um sistema de chaves de API — o servidor procura o token em vez de o descodificar. A autenticação Basic envia Authorization: Basic <base64(utilizador:palavra-passe)>, que é simplesmente o seu nome de utilizador e palavra-passe unidos e codificados em base64 — codificação não é encriptação, pelo que a autenticação Basic só deve ser usada sobre HTTPS, nunca sobre HTTP simples, ou as credenciais são efetivamente enviadas em texto claro.
Quem criou o curl, e ainda é mantido ativamente?
O curl foi criado em 1998 por Daniel Stenberg, originalmente para obter taxas de câmbio para um bot de IRC. Stenberg permaneceu como mantenedor principal praticamente durante toda a história do curl e continua a desenvolvê-lo ativamente hoje. Longe de ser um projeto pessoal, o curl é hoje uma das peças de software mais amplamente distribuídas do mundo — incluído em sistemas operativos, dispositivos embutidos e inúmeras aplicações — e a sua segurança e correção são tratadas com a seriedade correspondente por uma grande comunidade de contribuidores.
Ferramentas Semelhantes
Reportar um Problema
Gerador de Comando curl
Comentários
Ainda não há comentários — seja o primeiro a escrever um!