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

  1. Elija el sentido Seleccione de nombre de dominio a Punycode, o de Punycode a nombre de dominio.
  2. Introduzca el nombre de dominio Introdúzcalo completo, incluido el dominio de primer nivel, como en 日本語.jp.
  3. Lea el resultado Obtiene la cadena convertida que empieza por `xn--`, o bien los caracteres originales.
  4. 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

Punycode (RFC 3492) es un esquema de codificación que convierte nombres de dominio que contienen caracteres Unicode —japonés, chino, árabe, etc.— conocidos como nombres de dominio internacionalizados (IDN), en cadenas formadas únicamente por los caracteres ASCII que el DNS puede procesar. La etiqueta resultante lleva el prefijo `xn--`.

El DNS (Domain Name System) se diseñó originalmente pensando únicamente en caracteres ASCII, por lo que los nombres de dominio con caracteres japoneses o emojis no pueden resolverse tal cual. Punycode convierte los nombres de dominio con caracteres no ASCII en cadenas ASCII, lo que permite los dominios internacionalizados sin modificar la infraestructura DNS existente.

`xn--` se conoce como el "prefijo ACE" (ASCII Compatible Encoding), y le indica al DNS y al software compatible que esa etiqueta es un dominio internacionalizado codificado en Punycode. Cuando los navegadores detectan este prefijo, normalmente lo decodifican y muestran al usuario la cadena Unicode original.

Sí, se trata de una técnica de phishing conocida como "ataque homógrafo IDN". Se han reportado casos en los que un dominio Punycode (por ejemplo, `xn--80ak6aa92e.com`) codificado con caracteres casi idénticos visualmente —como la "а" cirílica frente a la "a" latina— se usó para suplantar un dominio legítimo. Los principales navegadores mitigan esto mostrando la forma Punycode sin decodificar (la cadena que empieza por `xn--`) en la barra de direcciones cuando detectan una combinación sospechosa de caracteres.
Tool-kun

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--`.