Obtener el subdominio de una URL

Resuelto jb. asked hace 16 años • 18 respuestas

Obtener el subdominio desde una URL parece fácil al principio.

http://www.domain.example

Escanee el primer período y luego devuelva lo que vino después de "http://"...

Entonces recuerdas

http://super.duper.domain.example

Oh. Entonces piensas, está bien, busca el último punto, retrocede una palabra y obtén todo lo anterior.

Entonces recuerdas

http://super.duper.domain.co.uk

Y vuelves al punto de partida. ¿Alguien tiene alguna buena idea además de almacenar una lista de todos los TLD?

jb. avatar Nov 14 '08 06:11 jb.
Aceptado

¿Alguien tiene alguna buena idea además de almacenar una lista de todos los TLD?

No, porque cada TLD difiere en lo que se considera subdominio, dominio de segundo nivel, etc.

Tenga en cuenta que existen dominios de primer nivel, dominios de segundo nivel y subdominios. Técnicamente hablando, todo excepto el TLD es un subdominio.

En el ejemplo de dominio.com.uk, "dominio" es un subdominio, "com" es un dominio de segundo nivel y "uk" es el TLD.

Por lo tanto, la cuestión sigue siendo más compleja de lo que parece a primera vista y depende de cómo se gestiona cada TLD. Necesitará una base de datos de todos los TLD que incluyan su partición particular y lo que cuenta como dominio de segundo nivel y subdominio. Sin embargo, no hay demasiados TLD, por lo que la lista es razonablemente manejable, pero recopilar toda esa información no es trivial. Es posible que ya exista una lista de este tipo disponible.

Parece que http://publicsuffix.org/ es una de esas listas: todos los sufijos comunes (.com, .co.uk, etc.) en una lista adecuada para realizar búsquedas. Aún así no será fácil analizarlo, pero al menos no es necesario mantener la lista.

Un "sufijo público" es aquel bajo el cual los usuarios de Internet pueden registrar nombres directamente. Algunos ejemplos de sufijos públicos son ".com", ".co.uk" y "pvt.k12.wy.us". La Lista pública de sufijos es una lista de todos los sufijos públicos conocidos.

La Lista Pública de Sufijos es una iniciativa de la Fundación Mozilla. Está disponible para su uso en cualquier software, pero se creó originalmente para satisfacer las necesidades de los fabricantes de navegadores. Permite a los navegadores, por ejemplo:

  • Evite que se establezcan "supercookies" que dañan la privacidad para sufijos de nombres de dominio de alto nivel
  • Resalte la parte más importante de un nombre de dominio en la interfaz de usuario
  • Ordene con precisión las entradas del historial por sitio

Al revisar la lista , puede ver que no es un problema trivial. Creo que una lista es la única forma correcta de lograr esto...

Adam Davis avatar Nov 14 '2008 00:11 Adam Davis

Como dice Adam, no es fácil y actualmente la única forma práctica es utilizar una lista.

Incluso entonces, hay excepciones; por ejemplo, .ukhay un puñado de dominios que son válidos inmediatamente en ese nivel y que no están en .co.uk, por lo que deben agregarse como excepciones.

Actualmente, así es como lo hacen los navegadores convencionales: es necesario asegurarse de que example.co.ukno se pueda configurar una cookie .co.ukque luego se enviará a cualquier otro sitio web en .co.uk.

La buena noticia es que ya hay una lista disponible en http://publicsuffix.org/ .

También hay trabajo en el IETF para crear algún tipo de estándar que permita a los TLD declarar cómo se ve su estructura de dominio. Sin embargo, esto es un poco complicado por programas como .uk.com, que se opera como si fuera un sufijo público, pero el .comregistro no lo vende.

Alnitak avatar Nov 14 '2008 00:11 Alnitak

Publicsuffix.org parece la manera de hacerlo. Existen muchas implementaciones para analizar fácilmente el contenido del archivo de datos publicsuffix:

  • Perl: Dominio::PublicSuffix
  • Java: http://sourceforge.net/projects/publicsuffix/
  • PHP: analizador de dominio php
  • C#/.NET: https://github.com/danesparza/domainname-parser
  • Python: http://pypi.python.org/pypi/publicsuffix
  • Ruby: matriz de dominio , sufijo_público
John Slade avatar Jun 06 '2009 23:06 John Slade