Conversor de Punycode (nomes de domínio internacionalizados)
Converte nomes de domínio internacionalizados (IDN) que contêm caracteres não ASCII, como o japonês, para Punycode (uma codificação compatível com ASCII) e vice-versa.
Para que serve o Punycode
O DNS lidou historicamente apenas com ASCII. Contudo, as pessoas queriam nomes de domínio com **caracteres como os kanji e os kana**, à maneira de 日本語.jp, e o Punycode (RFC 3492) foi concebido como ponte. Converte de forma reversível uma cadeia Unicode numa cadeia ASCII que começa por `xn--`, tornando assim possíveis os nomes de domínio internacionalizados sem mexer no DNS existente.
Que o resultado seja ilegível para uma pessoa é o desenho a funcionar: 日本語.jp torna-se `xn--wgv71a119e.jp`. **Os navegadores ocultam a forma convertida e mostram os caracteres originais na barra de endereços**, pelo que normalmente passa despercebido. Essa diferença de aparência, porém, **é também uma fraqueza exposta ao abuso no phishing**: os domínios falsos construídos com caracteres indistinguíveis, como o «а» cirílico face ao «a» latino, causaram problemas reais. Esta ferramenta converte nos dois sentidos e **tudo corre no seu navegador.**
Como converter
- Escolha o sentido Selecione de nome de domínio para Punycode, ou de Punycode para nome de domínio.
- Introduza o nome de domínio Introduza-o por inteiro, incluído o domínio de topo, como em 日本語.jp.
- Leia o resultado Obtém a cadeia convertida que começa por `xn--`, ou então os caracteres originais.
- Compare ambos A forma ASCII permite-lhe verificar **se se infiltraram caracteres enganadores.**
Dicas para aproveitar melhor
- Nomes de domínio compostos por vários rótulos (partes separadas por `.`) também são processados automaticamente rótulo por rótulo: os que contêm apenas caracteres ASCII permanecem inalterados, e somente os rótulos com caracteres não ASCII são convertidos para o formato com prefixo `xn--`.
- No modo "Punycode → Nome de domínio", apenas os rótulos que incluem o prefixo `xn--` são decodificados; os demais são mantidos como estão.
- A mesma lógica de conversão pode ser aplicada não só a nomes de domínio, mas também à parte após o `@` em um endereço de e-mail (a parte do domínio).
- Ao digitar um nome de domínio internacionalizado na barra de endereços do navegador, a maioria dos navegadores o converte internamente para Punycode antes de realizar a resolução DNS.
Situações em que ajuda
Registar ou configurar um domínio internacionalizado
Os ficheiros de zona do DNS e os certificados de servidor exigem por vezes a forma Punycode.
Verificar o remetente de um correio
**Um nome visível que parece legítimo pode revelar-se, depois de convertido, um domínio totalmente distinto.** Os casos são reais.
Ler uma cadeia xn-- num registo
Descubra a que se refere realmente uma cadeia `xn--` surgida nos registos de acesso ou num relatório.
Validar um ficheiro de configuração
Útil para verificar se um nome internacionalizado pode ser escrito tal qual na configuração do nginx ou do Apache.
Termos do Punycode explicados
- Punycode
- O esquema que converte de forma reversível uma cadeia Unicode em ASCII (RFC 3492). **O resultado começa sempre por `xn--`.**
- Nome de domínio internacionalizado
- Um nome de domínio com caracteres fora do ASCII. Internamente é convertido para Punycode para atravessar o DNS.
- xn--
- O prefixo que marca uma etiqueta como codificada em Punycode. É conhecido como prefixo ACE.
- Etiqueta
- Cada elemento de um nome de domínio separado por pontos. **A conversão é feita etiqueta a etiqueta.**
- Ataque homógrafo
- Construir um domínio falso com caracteres de aspecto semelhante. **Converter para a forma Punycode põe-no a descoberto.**
- IDNA
- O conjunto de especificações para lidar com nomes internacionalizados no DNS. A versão em uso é a IDNA2008 (a partir do RFC 5890).
Perguntas frequentes
Curiosidade — os bastidores de como "gato" e "日本語" se tornaram nomes de domínio
As discussões sobre nomes de domínio internacionalizados (IDN) começaram no final da década de 1990, mas a padronização levou muito tempo. Várias abordagens foram propostas para lidar com caracteres não ASCII sem alterar o núcleo do DNS, e por fim foi adotada a abordagem Punycode — codificar e decodificar na camada de aplicação (do lado do cliente), sem modificar o próprio servidor DNS —, padronizada como RFC 3492 em 2003.
Diz-se que o nome "Punycode" vem da combinação de "Unicode" com "an amusing pun" (um trocadilho divertido), e o próprio algoritmo é uma especialização, voltada para nomes de domínio, de um método de codificação mais geral chamado Bootstring (uma técnica de propósito geral criada por pesquisadores da IBM para codificar qualquer conjunto de caracteres em um conjunto restrito). O fato de até a origem do nome "Punycode" ter um quê de piada revela bem o senso de humor típico da comunidade de desenvolvedores.
Hoje em dia, nomes de domínio em diversos idiomas e símbolos — domínios japoneses (`.jp`) e até domínios com emojis (existem exemplos reais como `💩.la`) — são de fato registrados e utilizados, mas por trás de todos eles sempre ocorre esse processo de conversão via Punycode. Até o elegante domínio japonês exibido na barra de endereços do navegador é trocado com o servidor DNS como uma simples cadeia ASCII que começa com `xn--`.