Alguém tem grandes ideias além de armazenar uma lista de todos os TLDs?
Não, porque cada TLD difere no que conta como subdomínio, domínio de segundo nível, etc.
Lembre-se de que existem domínios de nível superior, domínios de segundo nível e subdomínios. Tecnicamente falando, tudo, exceto o TLD, é um subdomínio.
No exemplo domain.com.uk, "domínio" é um subdomínio, "com" é um domínio de segundo nível e "uk" é o TLD.
Portanto, a questão continua mais complexa do que à primeira vista e depende de como cada TLD é gerenciado. Você precisará de um banco de dados de todos os TLDs que incluem seu particionamento específico e o que conta como um domínio de segundo nível e um subdomínio. Não há muitos TLDs, entretanto, a lista é razoavelmente gerenciável, mas coletar todas essas informações não é trivial. Pode já haver essa lista disponível.
Parece que http://publicsuffix.org/ é uma dessas listas — todos os sufixos comuns (.com, .co.uk, etc) em uma lista adequada para pesquisa. Ainda não será fácil analisá-lo, mas pelo menos você não precisa manter a lista.
Um "sufixo público" é aquele em que os usuários da Internet podem registrar nomes diretamente. Alguns exemplos de sufixos públicos são ".com", ".co.uk" e "pvt.k12.wy.us". A Lista de sufixos públicos é uma lista de todos os sufixos públicos conhecidos.
A Lista Pública de Sufixos é uma iniciativa da Fundação Mozilla. Ele está disponível para uso em qualquer software, mas foi originalmente criado para atender às necessidades dos fabricantes de navegadores. Ele permite que os navegadores, por exemplo:
- Evite "supercookies" que prejudicam a privacidade sendo definidos para sufixos de nomes de domínio de alto nível
- Destaque a parte mais importante de um nome de domínio na interface do usuário
- Classifique com precisão as entradas do histórico por site
Olhando a lista , você pode ver que não é um problema trivial. Acho que uma lista é a única maneira correta de fazer isso ...