Processador de URLs / Inspector
Colar um ou mais URLs completos (um por linha) para quebrar cada um em seu protocolo, host, caminho, string de consulta e fragmento, com cada parâmetro de consulta decodificado.
Colar um ou mais URLs completos (um por linha) para quebrar cada um em seu protocolo, host, caminho, string de consulta e fragmento, com cada parâmetro de consulta decodificado.
Um URL só pode conter letras, dígitos e um pequeno conjunto de símbolos (- _ . ~). Todo o resto, incluindo espaços, pontuação e caracteres não-inglês, tem que ser representado com porcentagem de codificação antes que possa viajar dentro de uma URL.
A codificação percentual substitui um caractere por um sinal de porcentagem seguido de seu valor de byte hexadecimal de dois dígitos, usando UTF-8 para qualquer coisa fora do ASCII básico. Um espaço torna-se% 20, um ampersand torna-se% 26, e um caractere acentuado ou não-latino pode se tornar várias sequências %XX em uma linha, uma vez que UTF-8 representa-o como mais de um byte.
Caracteres como ? & = # e / têm um significado especial em uma estrutura de URL: eles marcam a string de consulta, parâmetros separados ou introduzem o fragmento. Se seus dados precisam conter um desses caracteres como um valor em vez de estrutura, codificá-lo primeiro, ou o navegador ou servidor pode ler mal onde uma parte da URL termina e a próxima começa.
A decodificação reverte o processo: ela lê cada sequência %XX de volta para o caractere (ou byte) que representa, que é exatamente o que a ferramenta acima faz.
| Caracter | Codificado | Se for utilizado |
|---|---|---|
| espaço | %20 | Separador de palavras dentro de um valor |
| ! | %21 | |
| " | %22 | |
| # | %23 | Inicia o fragmento |
| % | %25 | Inicia uma sequência codificada por cento |
| & | %26 | Separa parâmetros de pesquisa |
| ' | %27 | |
| ( | %28 | |
| ) | %29 | |
| + | %2B | Frequentemente lido como um espaço dentro de uma string de pesquisa |
| , | %2C | |
| / | %2F | Separa segmentos de caminho |
| : | %3A | Segue o esquema, por exemplo https: |
| ; | %3B | |
| = | %3D | Atribui o valor de um parâmetro de pesquisa |
| ? | %3F | Inicia o texto da pesquisa |
| @ | %40 | |
| [ | %5B | |
| ] | %5D |
Uma aluna copia um endereço da web de um formulário on-line e vê um texto como science%20project%20notes. Em outro caso, quem está começando a programar examina uma requisição de API e descobre que um e comercial dentro de um valor de busca aparece como %26. O endereço funciona, mas é difícil de ler e de depurar.
Uma ferramenta de decodificação de URL converte as sequências codificadas com porcentagem de volta nos caracteres que elas representam. Por exemplo, %20 costuma virar um espaço, e %26 vira um e comercial.
Decodificar ajuda a entender links, conferir parâmetros de consulta, estudar a codificação da web e diagnosticar requisições malformadas. Exige cuidado, porque os caracteres reservados podem mudar a estrutura de uma URL depois de decodificados.
A ferramenta não determina se um destino é seguro, correto ou autorizado. Ela só muda a representação dos caracteres codificados. O host, o caminho, os parâmetros e os valores decodificados continuam precisando da sua conferência.
As URLs usam certos caracteres para separar suas partes. Um ponto de interrogação pode abrir uma string de consulta, um e comercial pode separar parâmetros e um sinal de cerquilha pode marcar um fragmento.
Quando um desses caracteres precisa aparecer como dado, e não como separador estrutural, ele pode ser codificado com porcentagem. O sinal de porcentagem vem seguido de dois dígitos hexadecimais que representam um valor de byte.
| Valor codificado | Caractere decodificado | Significado comum |
|---|---|---|
%20 |
Espaço | Separa palavras dentro de um valor |
%21 |
! |
Ponto de exclamação |
%23 |
# |
Cerquilha ou marca de fragmento |
%26 |
& |
E comercial ou separador de consulta |
%2B |
+ |
Sinal de mais |
%2F |
/ |
Barra ou separador de caminho |
%3A |
: |
Dois-pontos |
%3D |
= |
Sinal de igual ou separador de parâmetros |
%3F |
? |
Ponto de interrogação ou marca de consulta |
As letras hexadecimais das sequências com porcentagem não diferenciam maiúsculas de minúsculas, então %2F e %2f representam o mesmo byte.
Veja este exemplo:
https://example.edu/search?q=water%20cycle&level=grade%206#results
Suas partes principais são:
httpsexample.edu/searchq=water%20cycle&level=grade%206resultsOs valores da consulta são decodificados como “water cycle” e “grade 6”. O e comercial estrutural que separa os parâmetros não deve ser confundido com um e comercial codificado dentro de um valor.
Quem programa costuma criar problemas ao decodificar a URL inteira quando só um componente deveria ser decodificado. Os caracteres reservados podem ter papéis diferentes conforme o lugar em que aparecem.
Suponha que uma consulta contenha isto:
?topic=research%26writing
O valor codificado representa:
research&writing
Aqui o e comercial faz parte do valor do tópico. Se a consulta inteira for decodificada e depois interpretada errado, esse e comercial pode ser confundido com um separador que introduz outro parâmetro.
Uma aplicação confiável analisa a URL segundo a estrutura dela e decodifica cada componente com uma interface de URL adequada, em vez de sair substituindo texto de qualquer jeito.
A turma examina isto:
https://example.edu/library?topic=space%20science
Os alunos identificam o host, o caminho, o nome do parâmetro e o valor codificado.
O valor space%20science vira space science. Os alunos explicam por que normalmente não se escreve um espaço literal em uma URL que vai ser compartilhada.
O professor propõe isto:
?title=Design%20%26%20Technology
O título decodificado é Design & Technology. Os alunos percebem que o e comercial codificado pertence ao título e não separa parâmetros.
Os alunos usam a ferramenta de codificação de URL para preparar um valor novo, depois o decodificam e comparam o resultado.
Uma das sequências traz um escape de porcentagem incompleto, como %2. Os alunos explicam por que se esperam dois dígitos hexadecimais depois do sinal de porcentagem.
Um aluno copia o link de uma busca na biblioteca com várias palavras codificadas. A URL visível é difícil de interpretar.
Ele decodifica os valores da consulta e confirma quais termos e filtros estavam incluídos. Antes de abrir o link, confere o host.
Isso ajuda o aluno a entender como um site carrega a informação de busca de uma página para outra.
Quem está começando a programar envia uma requisição com o título de um curso que tem um e comercial. O servidor recebe o título como dois parâmetros separados.
Ao examinar a requisição bruta, descobre que o e comercial não foi codificado como dado. O valor é preparado com uma interface de URL padrão e testado de novo.
O decodificador ajuda a explicar a requisição, mas a correção definitiva está em tratar a URL de forma estruturada, e não em substituições manuais.
Uma professora recebe um link para um documento da turma, mas o destino informa que o arquivo não foi encontrado.
A URL é examinada e decodificada. Um nome de arquivo tem uma barra que pode ter sido tratada como separador de caminho, ou um espaço foi copiado errado.
Em vez de editar às cegas um endereço privado desconhecido, a professora pede ao dono do documento um novo link de compartilhamento.
Os alunos montam um formulário de busca simples e olham a URL depois de enviar um texto com espaços e pontuação.
Eles decodificam os valores dos parâmetros e comparam com o que digitaram no formulário. A turma discute por que os navegadores codificam os valores antes de colocá-los em uma URL.
No exercício não se usam senhas reais, registros de alunos nem respostas privadas.
O link de um boletim da escola traz vários parâmetros de rastreamento. Uma professora quer saber que informação vai junto antes de compartilhá-lo.
A URL é separada em parâmetros e os valores são decodificados. Os valores de rastreamento desnecessários só podem sair se isso não quebrar o destino pretendido.
O link final é testado, e não simplesmente dado como funcional depois da edição manual.
Uma turma de computação testa uma frase curta em outro idioma dentro de uma URL. O resultado codificado traz várias sequências com porcentagem, porque os caracteres UTF-8 podem ocupar mais de um byte.
Os alunos decodificam a sequência inteira e comparam com a frase original. Tirar um byte codificado pode gerar um caractere de substituição ou texto inválido.
A atividade mostra que um caractere visível nem sempre corresponde a um único byte codificado.
Alguém espera um espaço, mas vê %2520. A sequência %25 representa um sinal de porcentagem, então uma passada de decodificação produz %20, e outra pode produzir um espaço.
A pessoa rastreia onde o valor foi codificado duas vezes. O fluxo de dados é corrigido, em vez de decodificar cada entrada repetidamente.
Um link traz outra URL codificada dentro de um parâmetro como redirect ou next.
O usuário decodifica o valor como texto puro e confere o host de destino real antes de abrir. Um endereço codificado não merece confiança só porque o destino final é difícil de ler.
| Entrada | Codificação provável | Ferramenta correta | Exemplo decodificado |
|---|---|---|---|
lesson%20notes |
Codificação de URL com porcentagem | Decodificação de URL | lesson notes |
<p> |
Entidades HTML | Decodificação HTML | <p> |
SGVsbG8= |
Base64 | Decodificação Base64 | Hello |
u003F |
Escape Unicode | Analisador de JSON ou da linguagem | ? |
Para referências de entidade, use a ferramenta de decodificação HTML, e a ferramenta de decodificação Base64 só quando souber que os dados estão nesse formato.
Os espaços costumam ser representados como %20. Na codificação de consulta no estilo de formulário, um sinal de mais também pode ser lido como espaço.
Daí vem uma distinção importante:
class%20notes normalmente é decodificado como class notes.class+notes pode ser decodificado como class notes no contexto de uma consulta de formulário.%2B.Use o método de decodificação feito para aquele componente e aquele formato. Um decodificador de caminho e um decodificador de consulta de formulário podem não tratar o sinal de mais do mesmo jeito.
A codificação com porcentagem trabalha sobre bytes. Um caractere fora do ASCII básico pode ser representado por vários bytes codificados.
Uma letra acentuada ou um caractere árabe, por exemplo, pode aparecer como uma sequência de vários escapes de porcentagem. Todos os bytes necessários precisam permanecer na ordem certa e ser interpretados com a codificação de caracteres correta.
Se a saída trouxer símbolos de substituição, verifique se:
Os caracteres reservados podem mudar a estrutura depois da decodificação. Separe a URL em componentes e decodifique o valor pretendido.
Decodificar sem parar pode transformar dados antes inofensivos em separadores ativos ou caminhos inesperados. Descubra por que existem várias camadas de codificação.
Trocar %20 por espaços não dá conta de todos os caracteres codificados, nem das sequências UTF-8, das entradas malformadas ou das regras do sinal de mais. No código, use um analisador de URL estruturado ou uma interface padrão.
Decodifique como texto primeiro. Examine o esquema, o nome do host, o caminho e os parâmetros antes de decidir se vale a pena visitar.
%26 e & podem representar um e comercial em contextos diferentes. Escolha o decodificador pela representação que você tem de fato.
O sinal de porcentagem deve ser seguido de dois dígitos hexadecimais. Sequências incompletas ou inválidas podem indicar entrada danificada.
URLs podem aparecer no histórico do navegador, em logs, na analytics, em capturas de tela e em mensagens compartilhadas. Credenciais sensíveis não devem entrar em uma string de consulta.
Valores decodificados podem conter caracteres com significado especial. Uma barra decodificada pode afetar um caminho, um e comercial pode alterar parâmetros e os sinais de menor e maior podem virar marcação se forem inseridos errado em uma página.
As aplicações devem:
Decodificar não é sanitizar. Isso revela os caracteres representados, mas não decide se eles são seguros para HTML, caminhos de arquivo, consultas de banco de dados ou redirecionamentos.
Uma URL pode conter termos de busca, identificadores de documento, endereços de e-mail, códigos de turma, nomes de arquivo, dados de rastreamento e outras informações. Decodificar deixa tudo isso mais fácil de ler, mas não remove nada.
Não cole links escolares privados, tokens de redefinição, URLs assinadas, endereços de registros de alunos nem dados de autenticação em uma ferramenta externa. Troque os valores sensíveis por exemplos fictícios nas aulas e nas demonstrações de depuração.
Antes de compartilhar uma captura de tela de uma URL decodificada, remova nomes de conta, hosts privados, tokens e identificadores de documento.
Quem está começando deve preferir interfaces de URL estruturadas. Em JavaScript, dá para examinar o valor de uma consulta assim:
const url = new URL(
"https://example.edu/search?q=water%20cycle"
);
const query = url.searchParams.get("q");
console.log(query);
// water cycle
Essa abordagem analisa a URL e devolve o valor decodificado do parâmetro. Costuma ser mais segura e mais clara do que quebrar a string inteira na mão a cada ponto de interrogação, e comercial e sinal de igual.
Use a ferramenta de codificação de URL para preparar um texto como componente de URL e depois decodifique-o para conferir um exemplo de aula.
Se a entrada trouxer entidades como &lt; ou &quot;, use a ferramenta de decodificação HTML. Para texto que você sabe que é Base64, use a ferramenta de decodificação Base64.
Escolher o decodificador certo evita transformações desnecessárias e deixa a depuração bem mais confiável.
A decodificação de URL transforma sequências codificadas com porcentagem em caracteres legíveis. Ela ajuda os alunos a entender endereços da web e ajuda quem programa a examinar valores de consulta, requisições de API, texto multilíngue, redirecionamentos e problemas de codificação dupla.
O caminho mais seguro é identificar o componente da URL, decodificar só o necessário e guardar a entrada original. Trate o resultado como um dado que ainda precisa de validação.
Um link decodificado e legível é mais fácil de investigar, mas isso não o torna seguro nem correto por si só. Confira a estrutura, o destino, os parâmetros, a privacidade e a codificação de caracteres pretendida antes de usá-lo.