Maison  >  Article  >  Java  >  Comment extraire avec précision les noms de domaine des URL en Java ?

Comment extraire avec précision les noms de domaine des URL en Java ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-31 22:00:03564parcourir

How to Accurately Extract Domain Names from URLs in Java?

Extraction de noms de domaine à partir d'URL

La tâche d'extraction de noms de domaine à partir d'URL se pose fréquemment. Cet article traite d'une implémentation Java courante pour cette tâche et explore des approches alternatives pour améliorer la précision et gérer les cas extrêmes potentiels.

Implémentation initiale

Le code Java fourni commence par normaliser l'URL en ajoutant "http://" si nécessaire. Il analyse ensuite l'URL à l'aide de java.net.URL pour obtenir la chaîne hôte. Enfin, si l'hôte commence par « www », la sous-chaîne après « www ». est renvoyé comme nom de domaine.

Approche alternative

Cependant, cette approche a des limites :

  • Elle ne parvient pas à gérer certains cas extrêmes , comme les URL relatives dont les chemins commencent par « http » ou « www ».
  • Il suppose que le protocole est toujours en minuscules, ce qui n'est pas une hypothèse valide.
  • Il effectue des recherches DNS inutiles pendant Vérifications de l'égalité des URL, qui peuvent conduire à des attaques par déni de service.

Mise en œuvre améliorée

Pour résoudre ces problèmes, nous vous recommandons d'utiliser java.net.URI pour Analyse d'URL. L'URI offre une approche plus robuste et fiable :

<code class="java">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;
}</code>

Ce code convertit l'URL en URI, obtient la chaîne hôte et supprime le "www". préfixe s'il est présent.

Considérations supplémentaires

Même avec la mise en œuvre améliorée, il peut encore y avoir certains cas limites à prendre en compte. L'annexe B de la RFC 3986 fournit une expression régulière qui peut gérer des scénarios d'analyse d'URI plus complexes.

Cas extrêmes

Voici quelques cas extrêmes supplémentaires dans lesquels la mise en œuvre initiale peut échouer. pour gérer :

  • URL avec plusieurs barres obliques dans le chemin ou l'hôte
  • URL avec des caractères codés
  • URL avec des chaînes de requête ou des identifiants de fragment
  • URL qui se résolvent en noms de domaine non-ASCII

Dans l'ensemble, l'utilisation de java.net.URI pour l'analyse d'URL offre un moyen plus complet et plus précis d'extraire les noms de domaine des URL, en particulier lorsqu'il s'agit de problèmes complexes ou potentiellement URL invalides.

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