Maison  >  Article  >  Java  >  Comment extraire de manière fiable les noms de domaine des URL : techniques alternatives et cas extrêmes

Comment extraire de manière fiable les noms de domaine des URL : techniques alternatives et cas extrêmes

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-01 01:23:02309parcourir

How to Extract Domain Names from URLs Reliably: Alternative Techniques and Edge Cases

Extraire les noms de domaine des URL

Cette question cherche à extraire efficacement les noms de domaine des URL. Bien que le code Java fourni semble fonctionner raisonnablement, l'auteur s'enquiert de toute technique supérieure ou cas extrêmes potentiels susceptibles de nuire à sa fiabilité.

Implémentation alternative utilisant java.net.URI

Une approche plus propre de l'analyse des URL est recommandée, en utilisant la classe java.net.URI au lieu de java.net.URL. Cette dernière présente des problèmes connus, tels que sa méthode d'égalité problématique, qui peut exposer le code à des vulnérabilités dans des scénarios impliquant des entrées non fiables :

public static String getDomainName(String url) throws URISyntaxException {
    URI uri = new URI(url);
    String domain = uri.getHost();
    return domain.startsWith("www.") ? domain.substring(4) : domain;
}

Cette méthode améliorée devrait récupérer efficacement les noms de domaine tout en gérant les cas extrêmes impliquant une casse ou une casse incorrecte. variations dans le préfixe "www".

Cas extrêmes supplémentaires à prendre en compte

Le code d'origine ne tient pas compte des formats d'URL spécifiques :

  • httpfoo/bar (URL relative avec chemin commençant par "http")
  • HTTP://example.com (protocole insensible à la casse)
  • //example.com (URL relative au protocole avec hôte)
  • www/foo (URL relative avec chemin commençant par "www")
  • wwwexample.com (domaine commençant par "www", mais pas le préfixe "www")

Pour résoudre ces cas extrêmes, envisagez de faire référence à l'annexe B de la RFC 3986, qui fournit une expression régulière complète pour analyser les références URI et les décomposer en composants individuels.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn