# explicador de comando curl

> Cole um comando curl e receba a explicação sinalizador por sinalizador, e depois a tradução para fetch, requisição HTTP crua, HTTPie e Python. Nada é enviado e nenhuma requisição é executada.

- Tool: https://ronutz.com/pt-BR/tools/curl-command-explainer
- Family: Web e HTTP

---

## O que faz

Cole um comando `curl` e a ferramenta o explica sinalizador por sinalizador, depois o traduz para quatro outras formas: uma chamada `fetch` de navegador, uma requisição HTTP crua, um comando HTTPie e código Python `requests`. O comando é tokenizado e decodificado no seu navegador; nada é jamais enviado, e nenhuma requisição é executada.

## Uma análise, cinco visões

Por baixo há um único passo: a ferramenta analisa seu comando `curl` em um único modelo de requisição, capturando o método, a URL, os cabeçalhos, o corpo, a autenticação e as demais opções. Tudo o que você vê é derivado desse único modelo. Como traduzir um comando corretamente já exige entender cada sinalizador, a explicação sinalizador por sinalizador é justamente esse mesmo modelo exibido com rótulos, e é por isso que a explicação e as traduções sempre concordam.

## As formas que ela produz

- **curl explicado.** Cada opção é nomeada e descrita, para que um sinalizador desconhecido deixe de ser um mistério.
- **fetch.** A chamada da Fetch API do navegador, seguindo a semântica da MDN, pronta para colar no JavaScript.
- **HTTP cru.** A linha de requisição, os cabeçalhos e o corpo de fato, como iriam para a rede, que é a forma mais clara de ver exatamente o que uma requisição é.
- **HTTPie.** O comando `http` equivalente, para quem prefere esse cliente.
- **Python requests.** O código equivalente usando a biblioteca Requests.

## Por que traduzir em vez de executar

A ferramenta deliberadamente nunca executa a requisição. Essa é uma escolha de privacidade e segurança: você pode decodificar e converter um comando que carrega credenciais ou aponta para um host interno sem que nada disso saia do seu navegador, e sem disparar o que quer que a requisição faria. Ela é uma tradutora e uma explicadora, não um cliente.

## Como usar

Cole um comando `curl` e leia a explicação sinalizador por sinalizador e as quatro traduções. A conversão é determinística e local, então o mesmo comando sempre produz a mesma saída.

A ferramenta inversa é o [tradutor de requisições HTTP](https://ronutz.com/pt-BR/tools/http-request-translator): cole uma requisição crua e receba um comando executável. Se você chegou aqui procurando por ela, ela está no nome que a descreve.

## Standards and references

- [curl - man page (command options)](https://curl.se/docs/manpage.html)
- [RFC 9110 - HTTP Semantics](https://www.rfc-editor.org/rfc/rfc9110)
- [MDN - Using the Fetch API](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch)
- [HTTPie - Documentation](https://httpie.io/docs/cli)
- [Requests - Quickstart](https://requests.readthedocs.io/en/latest/user/quickstart/)

## Related reading

- [AJAX, XHR e fetch: Quando as Páginas Aprenderam a Responder](https://ronutz.com/pt-BR/learn/ajax-fetch-and-xhr.md): Na primeira década, a web tinha um movimento só: clique, tela em branco, página nova. O XMLHttpRequest deu às páginas um segundo - pedir dados em segundo plano, atualizar no lugar - e 'AJAX' batizou a revolução (que prontamente trocou o X pelo JSON). Como o XHR funcionava, o que o fetch consertou (promises, streams, uma API sã), o que ficou igual por baixo (continua tudo HTTP), e a fronteira a que toda requisição de fundo responde: same-origin, com CORS como exceção negociada.
- [Cabeçalhos HTTP: A Anatomia dos Metadados](https://ronutz.com/pt-BR/learn/http-headers-anatomy.md): Tudo que o HTTP sabe sobre uma mensagem e que não é a mensagem viaja em cabeçalhos: linhas nome-dois-pontos-valor com nomes insensíveis a caixa, dobradas em quatro papéis de trabalho - contexto de requisição, contexto de resposta, metadados de representação e encanamento de carga. A divisão end-to-end vs hop-by-hop pela qual proxies vivem, o cabeçalho Host que tornou a hospedagem virtual possível, negociação de conteúdo, condicionais, e por que a ordem dos cabeçalhos virou impressão digital.
- [Cabeçalhos, autenticação e cookies no curl](https://ronutz.com/pt-BR/learn/curl-headers-auth-and-cookies.md): Cabeçalhos, autenticação e cookies são como uma requisição se identifica e se autoriza. -H adiciona cabeçalhos, -u é HTTP Basic, um token bearer é apenas um cabeçalho, e -b/-c cuidam de cookies. Todos são sensíveis.
- [Códigos de Status HTTP: As Cinco Famílias](https://ronutz.com/pt-BR/learn/http-status-codes-the-five-families.md): Três dígitos, e o primeiro faz a maior parte do trabalho: 1xx continua, 2xx tem sucesso, 3xx redireciona, 4xx culpa o cliente, 5xx confessa pelo servidor. A lógica das famílias, os códigos que um operador de fato encontra (200, 204, 301 vs 302 vs 307, a dança de cache do 304, 401 vs 403, 404 vs 410, 429, 500 vs 502 vs 503 vs 504), as curiosidades famosas, e por que o primeiro dígito de um código desconhecido sempre basta para agir.
- [Como o curl infere o método HTTP](https://ronutz.com/pt-BR/learn/curl-method-inference.md): O curl nem sempre precisa de -X para escolher um método. Dados no corpo implicam POST, -I implica HEAD, -G força GET, e um -X explícito sempre vence. Conhecer as regras diz num relance o que uma requisição fará.
- [Cookies HTTP: Estado Sobre um Protocolo Sem Estado](https://ronutz.com/pt-BR/learn/http-cookies-state-over-stateless.md): O HTTP esquece você depois de cada requisição - por projeto. Cookies são o retrofit que o deixa lembrar mesmo assim: o servidor escreve um bilhete com Set-Cookie, o navegador o devolve com Cookie, e todo o resto - escopo, vida útil, segurança - são regras sobre quando esse bilhete viaja. Escopo por Domain e Path, vidas de sessão vs persistente, por que o servidor nunca vê o que o navegador sabe, e onde o artigo de flags de segurança assume.
- [CORS Explicado: O Controle de Fronteira do Navegador](https://ronutz.com/pt-BR/learn/cors-explained.md): CORS é a mensagem de erro mais mal-entendida do desenvolvimento web, porque pune o modelo mental errado. Ele não é o muro - a same-origin policy é o muro; CORS é a porta: um protocolo de cabeçalhos pelo qual um servidor se oferece: 'aquela outra origem pode ler minhas respostas'. Requisições simples vs preflights, o que o OPTIONS está fazendo na sua aba de rede, por que credenciais apertam cada regra, por que '*' não é o conserto, e por que o CORS nunca protegeu o servidor, para começo de conversa.
- [Formulários HTML e Codificação de Requisições: Como a Web Despacha Sua Entrada](https://ronutz.com/pt-BR/learn/html-forms-and-request-encoding.md): Um formulário é um contrato entre página e servidor: quais campos, qual verbo, qual formato de fio. GET põe as respostas na URL; POST põe no corpo; e o enctype escolhe o dialeto do corpo - as correntes chave=valor do urlencoded, as partes delimitadas por boundary do multipart, feitas para arquivos. O que cada escolha significa para logs, caches, limites de tamanho e depuração, mais a nota da era fetch: o FormData manteve os formatos vivos depois que formulários deixaram de ser o único remetente.
- [HTTP QUERY: a leitura que finalmente carrega um corpo](https://ronutz.com/pt-BR/learn/http-query-method.md): A RFC 10008 (junho de 2026) deu ao HTTP seu primeiro método novo desde 2010: o QUERY é seguro, idempotente e cacheável como o GET, mas carrega um corpo de requisição como o POST. O que ele corrige, como funcionam seu cache e sua descoberta, por que 'seguro' não é 'inofensivo' e o que cada camada da infraestrutura precisa conferir antes de o tráfego QUERY chegar.
- [Lendo um comando curl](https://ronutz.com/pt-BR/learn/reading-a-curl-command.md): Um comando curl é um comando de shell: a palavra curl, um conjunto de opções e uma URL. Lê-lo é ver como o shell primeiro divide a linha (aspas, contrabarras, continuações de linha) e depois como o curl lê sinalizadores curtos, longos e agrupados.
- [Ler uma requisição HTTP crua, e transformá-la de volta em algo executável](https://ronutz.com/pt-BR/learn/raw-http-requests-and-how-to-replay-them.md): Uma captura, um log de proxy e um exemplo de RFC entregam a mesma coisa: linha de requisição, cabeçalhos e talvez um corpo. Transformar isso de volta num comando executável parece mecânico e tem três armadilhas - a URL não está na mensagem, alguns cabeçalhos não podem ser copiados, e o texto colado em geral é uma credencial viva.
- [Métodos HTTP: Os Verbos da Web](https://ronutz.com/pt-BR/learn/http-methods-the-verbs.md): GET, HEAD, POST, PUT, DELETE, PATCH, OPTIONS, TRACE, CONNECT - e agora QUERY. O que cada método promete, por que 'safe' e 'idempotente' são as duas propriedades que de fato importam (para caches, retentativas, proxies e crawlers), por que formulários HTML só aprenderam dois verbos, e como ler a alma de uma API pelos métodos que ela aceita.
- [Os 27 protocolos que o curl fala](https://ronutz.com/pt-BR/learn/curl-protocols-beyond-http.md): O curl é conhecido como ferramenta de HTTP, mas a versão atual fala 27 esquemas de URL: transferência de arquivos por FTP, SFTP e SMB, e-mail por SMTP, POP3 e IMAP, publish-subscribe MQTT, consultas LDAP e relíquias como Gopher, DICT e Telnet. Conhecer o mapa, e saber quais esquemas começam em texto claro, muda a forma de usar a ferramenta.
- [Sinalizadores de dados do curl e a armadilha do Content-Type](https://ronutz.com/pt-BR/learn/curl-data-flags-and-content-type.md): O curl tem várias formas de anexar um corpo, e elas diferem na codificação e no Content-Type padrão. A grande surpresa é que -d usa codificação de formulário por padrão, não JSON, então um corpo JSON pode ser rotulado errado e recusado.
- [Sinalizadores do curl que mudam a postura de segurança](https://ronutz.com/pt-BR/learn/curl-security-flags.md): Alguns sinalizadores do curl mudam o quão segura é uma requisição: -k desativa a verificação TLS, http envia tudo em texto puro, e credenciais na URL podem vazar. Nenhum torna uma requisição maliciosa, mas cada um vale a leitura antes de executar ou compartilhar um comando.
- [Traduzindo curl para fetch()](https://ronutz.com/pt-BR/learn/curl-to-fetch.md): A API fetch do navegador e o curl descrevem a mesma requisição de formas diferentes. Método, cabeçalhos e corpo se mapeiam de forma limpa, mas algumas diferenças (Content-Type de formulário implícito, cookies e verificação TLS) exigem cuidado.
