logo
GeekFormat

Gerador de código cURL

Entrada do cURL

Cole um comando cURL para analisar automaticamente a URL, o método, os cabeçalhos e o corpo da requisição.

Requisição analisada

https://api.example.com/items1 cabeçalho(s)Corpo: 15 caracterescurlToCode.flag.followRedirects

Código gerado

curlToCode.target.fetch

Cole o comando curl e obtenha código de requisição HTTP executável em 11 linguagens em segundos.

Sugestões Relacionadas

Casos de uso

  • Após clicar com o botão direito em uma requisição no painel Network do Chrome DevTools e selecionar «Copy as cURL», cole nesta ferramenta para converter diretamente para o código da linguagem usada no seu projeto, 10 vezes mais rápido que escrever a requisição manualmente
  • Ao depurar APIs de terceiros quando a documentação fornece exemplos curl, converta rapidamente para código Python requests/Java OkHttp/C# HttpClient para integrar ao seu projeto
  • Ao depurar interfaces de ambiente de produção, copie comandos curl de ferramentas de captura (Charles/mitmproxy/Wireshark) e converta para código de teste unitário para verificar diretamente
  • Ao escrever documentação de API, alterne rapidamente entre exemplos de múltiplas linguagens, fornecendo exemplos de código prontos para executar para leitores de diferentes stacks tecnológicos
  • Ao solucionar problemas de requisições em produção, use curl para reproduzir o problema e depois converta para código para enviar a colegas ou criar um Issue, facilitando que outros reproduzam diretamente
  • Em desenvolvimento multilíngue (por exemplo, mudar de um projeto Python para Go), converta rapidamente requisições curl existentes para código de cliente HTTP da nova linguagem, economizando tempo de consulta à documentação
  • Em scripts Shell converta comandos curl para PowerShell Invoke-RestMethod para colegas de operações Windows, ou vice-versa
  • Aprenda o protocolo HTTP: comparando o código que implementa a mesma requisição em diferentes linguagens, entenda as diferenças de API das bibliotecas cliente HTTP
  • Converta rapidamente curl -X POST -d 'json' para código com Content-Type correto e serialização JSON, evitando erros de concatenação de strings manualmente
  • Quando precisar chamar APIs em scripts CI/CD, converta comandos curl depurados localmente para código da linguagem de script correspondente para integrar ao pipeline

Recursos

  • 11 linguagens/bibliotecas alvo: cobre frontend (JS fetch/Axios), Node.js (node-fetch), Python (requests/httpx), Go (net/http), PHP (cURL), Java (OkHttp), C# (HttpClient), PowerShell (Invoke-RestMethod), linha de comando (wget), todos os stacks tecnológicos principais
  • Análise inteligente de comandos curl: reconhece automaticamente URL, método HTTP, cabeçalhos, corpo, suporta aspas simples/duplas, escape com barra invertida, comandos multilinha (barra invertida no final da linha)
  • Suporte completo para parâmetros curl comuns: -X/--request método, -H/--header cabeçalho, -d/--data/-F formulário/corpo JSON, -u/--user autenticação Basic, -A/--user-agent UA, -b/--cookie Cookie, -e/--referer Referer, -L/--location seguir redirecionamentos, --compressed descompressão automática, -k/--insecure ignorar verificação de certificado, -I/--head requisição HEAD
  • Reconhecimento inteligente de corpo JSON: detecta Content-Type application/json e serializa automaticamente com JSON.parse/JSON.stringify/requests(json=)/json=, gerando código que usa objetos diretamente em vez de strings, mais idiomático
  • Conversão automática de autenticação Basic: ao detectar -u user:pass gera automaticamente o cabeçalho Authorization: Basic <base64>, usando mecanismos nativos de autenticação em cada linguagem (Python auth=, OkHttp credentials, C# credentials, etc.)
  • Selos de indicadores de segurança: detecta automaticamente parâmetros como --compressed/-L/-k/-u, exibindo-os com selos visíveis nos resultados da análise
  • Troca manual de método HTTP: após analisar automaticamente o método curl, permite trocar manualmente o método no menu suspenso (GET/POST/PUT, etc. 7 tipos), vendo o código correspondente instantaneamente
  • Escape de strings seguro: ao gerar código para cada linguagem usa literais de string nativos (aspas triplas/barra invertida no Python, acentos graves no Go, @"" no C#, aspas simples no PHP, aspas duplas escapadas no Java), evitando erros de sintaxe
  • Avisos de erro de análise: quando um comando curl inválido é inserido (falta URL, não começa com curl, POST sem body, etc.) mostra um aviso laranja indicando o problema específico
  • 3 exemplos com um clique: fornece 3 exemplos típicos: GET+autenticação Token, POST+JSON, autenticação Basic+seguir redirecionamentos, para ver rapidamente a capacidade da ferramenta
  • Limpar entrada com um clique: o botão Clear redefine rapidamente, sem resíduos ao colar novos comandos
  • Processamento 100% local: os comandos curl e o conteúdo das requisições são analisados e convertidos completamente no navegador, não são enviados para nenhum servidor, tokens/senhas sensíveis não vazam
  • Copiar código com um clique: após gerar o código clique no botão Copy para copiar para a área de transferência, cole diretamente no seu projeto e execute
  • Adaptação de modo inseguro HTTPS: o parâmetro -k/--insecure gera a configuração correspondente de ignorar verificação de certificado TLS em Node/Go/Python/PHP/C#/PowerShell (wget usa --no-check-certificate, C# mostra aviso ServicePointManager, Node define NODE_TLS_REJECT_UNAUTHORIZED)

Como Usar

  1. Obtenha o comando curl: no painel Network do DevTools do navegador clique com o botão direito na requisição → Copy → Copy as cURL (bash); ou exporte cURL de ferramentas de captura como Postman/Charles/mitmproxy; ou escreva o comando curl manualmente
  2. Cole na caixa de entrada: cole o comando curl na área de entrada superior, suporta comandos de uma ou várias linhas (com barra invertida de continuação), removendo automaticamente as quebras de linha
  3. Clique em botões de exemplo para referência: se não estiver familiarizado com o formato pode clicar em «Exemplo 1/2/3» para carregar comandos curl predefinidos e ver o efeito
  4. Veja resultados da análise: a área de resultados mostrará URL, número de cabeçalhos, caracteres do corpo, e selos de compressão/redirecionamento/ignorar certificado/autenticação Basic, mostrando avisos laranja se houver problemas
  5. Ajuste o método se necessário: se o método reconhecido automaticamente estiver incorreto (por exemplo, curl não tem -X POST mas deveria ser POST), altere manualmente o método HTTP no menu suspenso
  6. Selecione a linguagem alvo: na área de código alvo clique no botão da linguagem correspondente (fetch/Axios/Python requests/Go/PHP/Java/C#/PowerShell/wget, etc.)
  7. Copie o código: clique no botão «Copiar código», cole no seu projeto/terminal e execute

Perguntas frequentes

Para que serve a ferramenta de conversão de cURL para código? Por que não usar diretamente o comando curl?

Chamar diretamente comandos curl no código (como shell_exec, subprocess.run) requer iniciar subprocessos, é inseguro e difícil de manipular erros, obter cabeçalhos de resposta, fazer conversões de tipos. O código de produção deve usar clientes HTTP nativos da linguagem de programação (Python requests, Java OkHttp, JS fetch, etc.). O valor do curl-to-code é traduzir automaticamente os comandos curl que você copia do DevTools/ferramentas de captura para o código de cliente HTTP da linguagem correspondente, economizando o trabalho mecânico de consultar documentação de API, escapar aspas manualmente, processar JSON/autenticação, etc., copie e cole para executar.

Quais linguagens/bibliotecas alvo são suportadas?

Atualmente são suportados 11 alvos: JavaScript fetch (nativo do navegador), Axios (biblioteca HTTP universal Node/navegador), Node.js node-fetch, Python requests (biblioteca HTTP mais popular do Python), Python httpx (biblioteca HTTP de nova geração compatível com HTTP/2 e assíncrona), Go net/http (biblioteca padrão do Go), extensão PHP cURL, Java OkHttp (biblioteca de alto desempenho universal Android/backend), C# HttpClient (cliente HTTP padrão do .NET), PowerShell Invoke-RestMethod (comum em scripts de automação Windows), wget (ferramenta de download por linha de comando). Se a linguagem que você precisa não estiver na lista (como Ruby, Rust reqwest, Dart http, Swift URLSession, etc.), você pode enviar comentários na página, adicionaremos conforme a demanda.

Como copiar o comando curl do Chrome DevTools?

Passos: 1. Abra Chrome/Edge, pressione F12 para abrir DevTools; 2. Alterne para o painel Network; 3. Atualize a página ou dispare a requisição alvo; 4. Encontre a requisição alvo na lista de requisições (você pode filtrar por XHR/JS); 5. Clique com o botão direito na requisição → Copy → selecione «Copy as cURL (bash)» (recomendado versão bash, melhor compatibilidade); 6. Cole na caixa de entrada desta ferramenta. Tenha cuidado de não selecionar Copy as fetch (isso é código JS não curl). Firefox/Safari funcionam de forma semelhante, todos têm a opção Copy as cURL.

O manuseio de aspas em comandos curl é complicado, quais formatos são suportados?

A ferramenta reconhece aspas simples, aspas duplas, escape com barra invertida estilo bash; aspas duplas+escape ^ do Windows cmd; escape com acento grave do PowerShell basicamente. Recomenda-se usar formato bash (envolvido em aspas simples). Os comandos multilinha (com barra invertida \ de continuação) também suportam colagem, a ferramenta remove automaticamente quebras de linha e caracteres de continuação. Se o seu comando curl for especialmente complexo (contém variáveis de shell, substituição de comandos $(...), pipes |, etc.), recomenda-se executar primeiro o comando echo no terminal para imprimir o curl real expandido e depois copiar, ou simplificar manualmente primeiro (substituir variáveis por valores reais).

Por que ao enviar JSON com -d no curl o servidor recebe dados ilegíveis/400?

Este é um dos erros mais comuns do curl. A opção -d/--data do curl tem Content-Type padrão application/x-www-form-urlencoded (formato formulário), não application/json. Se você fizer diretamente curl -d '{"name":"demo"}' url, o servidor o analisará como formulário (falha na análise ou dados vazios). Você deve adicionar explicitamente o cabeçalho -H "Content-Type: application/json" para enviar JSON corretamente. Esta ferramenta mostra um aviso laranja quando detecta corpo mas sem Content-Type.

O código gerado pode ser copiado e executado diretamente? Quais dependências preciso instalar?

O código da maioria das linguagens pode ser executado diretamente usando bibliotecas padrão (fetch/Go net/http/PHP cURL/C# HttpClient/PowerShell/wget são integrados), não requer instalação adicional. Outros requerem bibliotecas de terceiros: Axios (requer npm install axios), node-fetch (requer npm install node-fetch, Node 18+ tem fetch integrado sem instalação), Python requests (pip install requests), Python httpx (pip install httpx), Java OkHttp (requer importar dependência okhttp3 com Maven/Gradle). O código por padrão imprime o código de status e texto da resposta, você pode modificar a lógica de processamento conforme necessário.

É compatível com upload de arquivos multipart/form-data (parâmetro -F)?

Suporte básico: o parâmetro -F é reconhecido como corpo da requisição (body), mas o código gerado atualmente trata @file como string literal em vez de upload de arquivos real. O upload de arquivos requer ler o conteúdo do arquivo local, os métodos de processamento variam muito entre linguagens (JS usa FormData/FormData.append, Python usa parâmetro files=, Go usa multipart.Writer). Recomenda-se, com base no código gerado pela ferramenta, consultar a documentação de upload de arquivos da biblioteca correspondente para fazer ajustes. Versões posteriores melhorarão o suporte a multipart.

Meus comandos curl e dados sensíveis serão enviados?

Absolutamente não. Todo o processo de análise e geração de código é concluído 100% localmente no seu navegador (JavaScript puramente de frontend), os comandos curl, Tokens/Cookies/senhas nos cabeçalhos, dados no corpo da requisição não são enviados para nenhum servidor. Você pode usar esta ferramenta offline, não se preocupe com vazamento de informações sensíveis.

Como -k/--insecure para ignorar verificação de certificado é tratado no código de cada linguagem?

Ao detectar o parâmetro -k, esta ferramenta gera a configuração correspondente de ignorar verificação de certificado para cada linguagem alvo: Python requests/httpx usa verify=False; Node.js define process.env.NODE_TLS_REJECT_UNAUTHORIZED='0'; Go cria tls.Config{InsecureSkipVerify: true} personalizado; PHP define CURLOPT_SSL_VERIFYPEER=false e CURLOPT_SSL_VERIFYHOST=0; Java OkHttp requer TrustManager personalizado (é adicionado aviso em comentário no código, porque o código é longo); C# pode personalizar ServerCertificateCustomValidationCallback; PowerShell usa -SkipCertificateCheck (PS6+); wget usa --no-check-certificate; fetch do navegador não pode ignorar certificados (restrição de segurança do navegador, é adicionado comentário explicativo no código). Nota: estas configurações são apenas para testes de desenvolvimento local, nunca desative a verificação de certificados em produção.

Por que o código Go gerado não segue redirecionamentos? Com -L deveria segui-los?

O comportamento padrão do net/http do Go é não seguir redirecionamentos (coincide com o comportamento padrão do curl, curl deve adicionar explicitamente -L para seguir). A ferramenta, ao detectar o parâmetro -L, gera um client vazio (http.Client{} com CheckRedirect nil por padrão, ou seja segue 10 redirecionamentos); sem -L gera um client com CheckRedirect retornando http.ErrUseLastResponse, não segue redirecionamentos (coincide com o comportamento do curl sem -L). Se você quiser que Go sempre siga redirecionamentos, você pode usar diretamente http.DefaultClient no código ou personalizar Client{Timeout: ...}.

Como manipular requisições que exigem login/com Cookies?

Há duas formas:①Copiar curl diretamente do DevTools do navegador com sessão iniciada (recomendado): clique com o botão direito na requisição→Copy as cURL, assim cookies/cabeçalhos são incluídos automaticamente, cole e converta para executar diretamente;②No curl especifique manualmente o valor do Cookie com -b/--cookie (-b 'sessionid=abc; token=xyz'), especifique autenticação Basic com -u/--user, especifique Bearer Token com -H "Authorization: Bearer xxx", a ferramenta converte esses cabeçalhos tal como estão. Nota: os Cookies copiados do navegador têm validade, podem expirar após algumas horas e precisar ser copiados novamente.

Por que o corpo JSON no Python requests usa o parâmetro json= em vez de data=?

O parâmetro data da biblioteca Python requests codifica dict como application/x-www-form-urlencoded, envia string tal como está, enquanto o parâmetro json serializa automaticamente dict/lista como string JSON e define automaticamente o cabeçalho Content-Type: application/json (se você não o definiu manualmente). Esta ferramenta, ao detectar que Content-Type contém application/json e o body é JSON válido, analisa automaticamente o JSON como dict do Python e usa o parâmetro json=, assim o código é mais conciso, você não precisa de json.dumps manualmente, e não esquece o cabeçalho Content-Type. Os body não JSON (formulário/XML/texto puro) usam o parâmetro data= para enviar a string original.

O comando curl é muito longo com muitos cabeçalhos, o que faço se o código gerado leva todos os cabeçalhos?

O comando curl copiado do DevTools incluirá muitos cabeçalhos adicionados automaticamente pelo navegador (Host, Connection, Accept, Accept-Encoding, Accept-Language, Sec-Fetch-*, sec-ch-ua, Upgrade-Insecure-Requests, etc.), a maioria desses cabeçalhos não precisa ser configurada explicitamente no código (os clientes HTTP adicionarão automaticamente valores padrão razoáveis, como Accept-Encoding, Connection, Host, Content-Length, etc.). Recomenda-se, após copiar o código gerado, remover manualmente os cabeçalhos desnecessários, conservando pelo menos: Content-Type, Authorization, Cookie (se necessário), cabeçalhos de negócio personalizados. Os cabeçalhos desnecessários não só fazem o código ficar feio, como podem causar comportamentos anômalos (por exemplo definir Accept-Encoding explicitamente mas o cliente não descomprime automaticamente).

É compatível com o parâmetro de proxy HTTPS (-x/--proxy)?

Atualmente o parâmetro de proxy HTTP (-x/--proxy) ainda não é convertido automaticamente. A configuração de proxy varia muito entre linguagens (JS fetch não tem suporte a proxy nativo requer Agent, Python usa parâmetro proxies=, Go através de Transport.Proxy, PHP usa CURLOPT_PROXY, C# usa WebProxy, Java usa OkHttpClient.Builder().proxy()). Os cabeçalhos de proxy (autenticação do proxy em si) também requerem processamento separado. Na versão atual os parâmetros relacionados a proxy são ignorados, você pode adicionar manualmente a configuração de proxy com base no código gerado, versões posteriores melhorarão o suporte a proxy.

Quais diferenças há com ferramentas online como curlconverter.com?

Em comparação com ferramentas conhecidas como curlconverter.com, as vantagens do curl-to-code do GeekFormat:①Processamento totalmente local (a lógica de processamento do curlconverter está no servidor ou cliente), não envia dados mais seguro;②Interface e explicações em chinês, amigável para desenvolvedores chineses;③O código gerado se adapta melhor ao uso de produção real (por exemplo Python requests usa parâmetro json= para body JSON em vez de data=, comportamento padrão do Go alinhado com curl, C# processa Content-Type corretamente sem codificar rigidamente application/json);④Documentação completa, FAQ, tabelas de comparação, resolução de problemas, não só gera código mas ajuda você a entender por que é escrito assim;⑤Grátis sem publicidade, não requer registro nem login, não precisa de nenhuma requisição de rede para usar.

术语表

cURL / curl
Ferramenta de linha de comando de código aberto e biblioteca libcurl, para enviar requisições de protocolos como HTTP/HTTPS/FTP por linha de comando via URL, é a ferramenta mais utilizada por desenvolvedores para depurar APIs.
Método HTTP
Ação de requisição HTTP, comuns são GET (ler), POST (criar), PUT (atualização completa), PATCH (atualização parcial), DELETE (excluir), HEAD (obter cabeçalhos), OPTIONS (consultar capacidades do servidor).
Cabeçalho (Header)
Pares chave-valor de metadados na requisição HTTP, como Content-Type, Authorization, User-Agent, Cookie, Accept, etc., especificados no curl através de -H/--header.
Corpo (Body)
Parte de dados da requisição HTTP, comum em POST/PUT/PATCH, especificada no curl através de -d/--data/--data-binary/-F, formatos comuns são JSON, form-urlencoded, multipart/form-data.
Content-Type
Cabeçalho de requisição/resposta que indica o tipo de mídia do body. application/json indica JSON, application/x-www-form-urlencoded indica formulário codificado em URL, multipart/form-data indica formulário de upload de arquivos.
Autenticação Basic
Autenticação básica HTTP, transmite usuário e senha através do cabeçalho Authorization: Basic base64(user:pass), especificada no curl com -u user:pass.
Bearer Token
Método de autenticação baseado em tokens, transmitido através do cabeçalho Authorization: Bearer <token>, comum em JWT/OAuth2.
User-Agent
Cabeçalho de requisição que identifica o tipo de cliente (navegador/rastejador/script), curl envia por padrão "curl/número da versão", muitos sites bloqueiam UAs não de navegador, comumente especificado com -A.
Cookie
Pares chave-valor enviados pelo servidor através de Set-Cookie e devolvidos pelo navegador em requisições posteriores através do cabeçalho Cookie, para manter sessões. curl -b envia Cookie, -c salva Cookie.
Referer
Cabeçalho de requisição que indica a URL da página de origem da requisição atual, algumas verificações de anti-hotlink/CSRF a verificam. Definido no curl com -e.
Redirecionamento (3xx)
Quando o servidor retorna códigos de status 301/302/303/307/308, indica ao navegador que salte para uma nova URL. curl por padrão não segue, adicione -L/--location para seguir.
--compressed
Opção do curl, adiciona automaticamente o cabeçalho Accept-Encoding: deflate, gzip e descomprime automaticamente a resposta. Sem definir, a resposta pode ser dados comprimidos ilegíveis.
-k/--insecure
Opção do curl, ignora a verificação de certificado HTTPS, apenas para ambientes de teste com certificados autoassinados, proibido em produção.
fetch API
API de requisições HTTP JavaScript nativa do navegador, retorna Promise, compatível com navegadores modernos.
Axios
Biblioteca cliente HTTP popular baseada em Promise, compatível com navegador e Node.js, serialização JSON automática, interceptores, cancelamento por timeout.
OkHttp
Biblioteca cliente HTTP Java/Android da Square, alto desempenho, compatível com HTTP/2, pool de conexões, GZIP transparente.
HttpClient (.NET)
Cliente HTTP recomendado para C#/.NET, namespace System.Net.Http, API padrão do .NET Core/.NET 5+.
Invoke-RestMethod
Cmdlet de requisição HTTP integrado no PowerShell 3.0+, analisa automaticamente respostas JSON/XML como objetos do PowerShell.

Tabela de comparação de opções comuns do cURL com 11 linguagens alvo

Valores comuns de Content-Type e uso com curl

Comparação de três formatos de Copy as cURL no Chrome DevTools

Troubleshooting