Codificar, decodificar e analisar URLs
Codifique e decodifique URLs e divida-as em partes.
Sobre esta ferramenta
Aplique percent-encoding a um texto para usá-lo em uma URL, decodifique de volta ou divida uma URL completa em protocolo, host, caminho, parâmetros da query e fragmento, com cada parâmetro decodificado.
Como usar
- Escolha Analisar URL para dividir um link em partes, ou Codificar / Decodificar para percent-encoding.
- Cole uma URL ou um texto.
- No modo Analisar, leia o protocolo, o host, o caminho e cada parâmetro da query já decodificados.
- Copie qualquer parte de que você precisar.
Perguntas
- Qual é a diferença entre encodeURI e encodeURIComponent?
- encodeURIComponent escapa tudo o que tem significado em uma URL, incluindo / ? & e =, então use-o para o valor de um único parâmetro. encodeURI mantém esses caracteres para que uma URL inteira continue utilizável. A opção Manter alterna entre os dois.
- Por que o espaço às vezes é + e às vezes %20?
- Em query strings de formulários HTML, o espaço é escrito como +; no resto da URL, é %20. Ative “Tratar + como espaço” ao decodificar dados de formulário.
- O que significa “escape percentual quebrado”?
- Um % deve ser seguido de dois dígitos hexadecimais, e caracteres multibyte precisam de todos os seus bytes. Um texto cortado no meio de um escape, como %E2%82, não pode ser decodificado.
- O caminho da URL deve ser codificado de forma diferente da query?
- Em geral valem as mesmas regras, com duas diferenças. No caminho, / separa os segmentos, então codifique cada segmento separadamente, e uma barra dentro de um nome vira %2F. E + é um sinal de mais literal no caminho, enquanto as query strings codificadas como formulário o leem como espaço.
- Qual o tamanho máximo de uma URL?
- Os padrões não definem limite, mas existem limites práticos. Os navegadores lidam com URLs muito longas, enquanto servidores, proxies e CDNs costumam limitar a linha de requisição a cerca de 8 KB e responder 414 URI Too Long. Mantenha as URLs abaixo de uns 2.000 caracteres e envie dados grandes no corpo de um POST.
- É seguro colocar tokens ou endereços de e-mail em uma URL?
- Evite. As URLs acabam em logs de servidor, logs de proxy, no histórico do navegador e no cabeçalho Referer enviado a outros sites. O percent-encoding não esconde nada, já que qualquer pessoa pode decodificá-lo. Envie tokens em um cabeçalho Authorization e dados pessoais no corpo de um POST.
O que é URL encoding (percent-encoding)?
O URL encoding, ou percent-encoding, substitui caracteres que não são permitidos ou que têm significado especial em uma URL por um sinal % e dois dígitos hexadecimais. Um espaço vira %20, & vira %26 e / vira %2F. As regras vêm da RFC 3986, que lista os caracteres não reservados que nunca precisam de codificação: letras ASCII, dígitos e - . _ ~. Todo o resto pode precisar de escape, dependendo da parte da URL em que aparece.
Textos não ASCII são convertidos antes para bytes UTF-8, e cada byte é codificado separadamente. É por isso que “é” vira %C3%A9 e o emoji de foguete vira quatro escapes, %F0%9F%9A%80. Na decodificação, todos os bytes de um caractere precisam estar presentes. Esta ferramenta usa as funções padrão encodeURIComponent, encodeURI e decodeURIComponent do seu navegador, então os resultados de codificar e decodificar URLs batem com o que o código JavaScript produz.
Como analisar uma URL e ler seus parâmetros de query
O modo Analisar URL divide um link nas partes definidas pelo padrão de URLs: protocolo, nome de usuário, host, porta, caminho, query, fragmento e origem, cada uma com seu botão de copiar. A query string é quebrada em pares de nome e valor com cada valor decodificado, então ?q=running%20shoes aparece como running shoes. Se um parâmetro aparece mais de uma vez, como color=black&color=white, cada ocorrência ganha sua própria linha.
O parser precisa de uma URL completa, incluindo o esquema, então example.com/path falha enquanto https://example.com/path funciona. Uma senha na URL é mascarada na tabela de partes. No código, a mesma análise está disponível como new URL(link) com url.searchParams nos navegadores e no Node.js, ou com urllib.parse no Python. Quando o link vem de um comando curl, o Conversor curl transforma a requisição inteira em fetch ou Python.
Por que minha URL quebra? Erros comuns de codificação
O bug clássico é montar uma URL concatenando valores brutos. Um termo de busca como R&D enviado como ?q=R&D vira q=R mais um segundo parâmetro, vazio, chamado D. Codifique cada valor separadamente com encodeURIComponent, ou deixe o URLSearchParams montar a query string para você. Nunca passe uma URL inteira pelo encodeURIComponent, porque ele também escapa os dois-pontos e as barras de que a URL precisa para funcionar.
O bug oposto é a codificação dupla. Um valor codificado duas vezes transforma % em %25, então um espaço vira %2520 e ainda aparece como %20 depois de uma decodificação. Se você vir %25 em uma URL, decodifique uma vez e confira se o resultado ainda contém escapes. Fique de olho também no sinal de mais: em uma query string ele costuma ser lido como espaço, então codifique um + literal como %2B.
Algo não está funcionando ou um resultado parece errado? Relatar um problema com esta ferramenta