Conversor de Punycode (nombres de dominio internacionalizados)
Convierte nombres de dominio internacionalizados (IDN) que contienen caracteres no ASCII, como el japonés, hacia y desde Punycode (una codificación compatible con ASCII).
Para qué sirve Punycode
El DNS ha manejado históricamente solo ASCII. Sin embargo, la gente quería nombres de dominio con **caracteres como los kanji y los kana**, según el modelo de 日本語.jp, y Punycode (RFC 3492) se ideó como puente. Convierte de forma reversible una cadena Unicode en una cadena ASCII que empieza por `xn--`, con lo que hace posibles los nombres de dominio internacionalizados sin tocar el DNS existente.
Que el resultado sea ilegible para una persona es el diseño funcionando: 日本語.jp se convierte en `xn--wgv71a119e.jp`. **Los navegadores ocultan la forma convertida y muestran los caracteres originales en la barra de direcciones**, de modo que normalmente pasa inadvertido. Esa diferencia de apariencia, sin embargo, **es también una debilidad expuesta al abuso en el phishing**: los dominios falsos construidos con caracteres indistinguibles, como la «а» cirílica frente a la «a» latina, han causado problemas reales. Esta herramienta convierte en ambos sentidos y **todo se ejecuta en su navegador.**
Cómo convertir
- Elija el sentido Seleccione de nombre de dominio a Punycode, o de Punycode a nombre de dominio.
- Introduzca el nombre de dominio Introdúzcalo completo, incluido el dominio de primer nivel, como en 日本語.jp.
- Lea el resultado Obtiene la cadena convertida que empieza por `xn--`, o bien los caracteres originales.
- Compare ambos La forma ASCII le permite comprobar **si se han colado caracteres engañosos.**
Consejos para aprovecharla mejor
- Los nombres de dominio compuestos por varias etiquetas (partes separadas por `.`) también se procesan automáticamente etiqueta por etiqueta: las que solo contienen caracteres ASCII se dejan tal cual, y únicamente las que contienen caracteres no ASCII se convierten con el prefijo `xn--`.
- En el modo "Punycode → Nombre de dominio", solo se decodifican las etiquetas que incluyen el prefijo `xn--`; las demás se mantienen sin cambios.
- Esta misma lógica de conversión puede aplicarse no solo a nombres de dominio, sino también a la parte que sigue al `@` en una dirección de correo electrónico (la parte del dominio).
- Cuando escribes un nombre de dominio internacionalizado en la barra de direcciones del navegador, la mayoría de los navegadores lo convierten internamente a Punycode antes de realizar la resolución DNS.
Situaciones en las que resulta útil
Registrar o configurar un dominio internacionalizado
Los archivos de zona del DNS y los certificados de servidor requieren a veces la forma Punycode.
Comprobar el remitente de un correo
**Un nombre visible que parece legítimo puede resultar, una vez convertido, un dominio completamente distinto.** Los casos son reales.
Leer una cadena xn-- en un registro
Averigüe a qué se refiere realmente una cadena `xn--` aparecida en los registros de acceso o en un informe.
Validar un archivo de configuración
Útil para comprobar si un nombre internacionalizado puede escribirse tal cual en la configuración de nginx o Apache.
Términos de Punycode explicados
- Punycode
- El esquema que convierte de forma reversible una cadena Unicode en ASCII (RFC 3492). **El resultado empieza siempre por `xn--`.**
- Nombre de dominio internacionalizado
- Un nombre de dominio con caracteres fuera de ASCII. Internamente se convierte a Punycode para atravesar el DNS.
- xn--
- El prefijo que marca una etiqueta como codificada en Punycode. Se conoce como prefijo ACE.
- Etiqueta
- Cada elemento de un nombre de dominio separado por puntos. **La conversión se realiza etiqueta por etiqueta.**
- Ataque homógrafo
- Construir un dominio falso con caracteres de aspecto semejante. **Convertir a la forma Punycode lo deja al descubierto.**
- IDNA
- El conjunto de especificaciones para manejar nombres internacionalizados en el DNS. La versión en uso es IDNA2008 (desde el RFC 5890).
Preguntas frecuentes
A propósito — la historia detrás de cómo "gato" y "日本語" se convirtieron en nombres de dominio
El debate sobre los nombres de dominio internacionalizados (IDN) comenzó a finales de los años noventa, pero la estandarización tardó mucho tiempo en llegar. Se propusieron varios enfoques para manejar caracteres no ASCII sin modificar el núcleo del DNS, y finalmente se adoptó el enfoque Punycode —codificar y decodificar en la capa de aplicación (del lado del cliente) sin tocar el servidor DNS en sí—, estandarizado como RFC 3492 en 2003.
Se dice que el nombre "Punycode" proviene de una combinación de "Unicode" y "an amusing pun" (un juego de palabras gracioso), y el algoritmo en sí es una especialización, orientada a los nombres de dominio, de un método de codificación más general llamado Bootstring (una técnica de propósito general ideada por investigadores de IBM para codificar cualquier conjunto de caracteres en un conjunto restringido). El hecho de que incluso el origen del nombre "Punycode" sea una especie de broma refleja bien el sentido del humor propio de la comunidad de desarrolladores.
Hoy en día se registran y utilizan realmente nombres de dominio en muy diversos idiomas y símbolos —dominios japoneses (`.jp`) e incluso dominios con emojis (existen ejemplos reales como `💩.la`)—, pero detrás de todos ellos siempre se lleva a cabo este proceso de conversión Punycode. Incluso el elegante dominio japonés que se muestra en la barra de direcciones del navegador se intercambia con el servidor DNS como una sencilla cadena ASCII que comienza con `xn--`.