Vérifier si un Url est valide

Syrl - Modifié par Syrl le 26/01/2014 à 13:01
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 - 29 janv. 2014 à 18:28
Bonjour à tous !

Je voudrais savoir comment vérifier si un Url est valide, même pour les adresses du genre :

http://googleads.g.doubleclick.net/pagead/drt/s?v=r20120211

qui n'affichent rien du tout...

Merci de m'aider !

6 réponses

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 127
26 janv. 2014 à 13:28
Tu pourrais faire ça avec une expression régulière.

Je me réfère à la documentation de la RFC 3986 sur la syntaxe des URI.
Annexe B : Parsing a URI Reference with a Regular Expression

^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?

Les captures pertinentes étant :

$2 = scheme
$4 = authority
$5 = path
$7 = query
$9 = fragment

Ce qui correspond plus ou moins à cette URI :

scheme://authority/path/?query#fragment
0
Euh... Excuse-moi, mais je n'ai pas tout compris, là...
Je ne suis pas très expérimenté...
Qu'est-ce qu'une capture pertinente ?
A quoi correspondent les liens que tu as envoyés ?
Merci beaucoup !
Syrl
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 127
26 janv. 2014 à 14:11
Les liens que j'ai envoyé c'est la documentation officielle sur la syntaxe des URI.

Une expression régulière peut être utilisée de deux manières :
1) vérifier qu'une chaîne de caractères correspond au format attendu
2) récupérer les différents morceaux qui la composent

Dans le deuxième cas il y a des morceaux que l'on récupère mais qui ne servent à rien, du coup je ne t'ai mis que ceux qui sont pertinents (ceux marqués dans la doc)
0
Ah, d'accord, merci ! :)
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
26 janv. 2014 à 14:02
Bonjour,
URL ou URI ?
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 127
26 janv. 2014 à 14:07
Une URL est une URI, si la syntaxe de l'URI est respectée celle de l'URL le sera aussi. La différence c'est qu'une URL n'est utilisée que pour les ressources réseaux, alors qu'une URI est plus générale, c'est juste une question de contexte.
0
Je n'ai pas saisi la différence, même après recherches, mais c'est normalement un URL, je pense.
Exemples à traiter :

https://www.google.fr/

javascript:"<html><body style='background:transparent'></body></html>"

https://googleads.g.doubleclick.net/pagead/drt/si?p=CAA&ut=AFAKxlQAAAAAUuUKleR19vWHQ1gAC4gYQSkeBVUitAc3

Dans ces chaînes-là, il y a des url/uri valides, et d'autres non (voire même pas des url/uri). Mon but est de séparer les valides des invalides ainsi que celles du genre :

https://googleads.g.doubleclick.net/pagead/drt/si?p=CAA&ut=AFAKxlQAAAAAUuUKleR19vWHQ1gAC4gYQSkeBVUitAc3 (publicités)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 26/01/2014 à 16:58
Pour vérifier la validité d'un URL et donc d'un "Uniform Resource Locator" à ne pas confondre avec un URI (Uniform Resource Identifier) :
C'est le propos de la fonction IsValidURLde la librairie URLMON.DLL de l'API de Windows
Attention : ne pas confondre la validité d'un URL avec la vérification de l'existence d'un site supposé avoir cet URL ...
Ainsi, par exemple :
tant :
"http://codes-sources.commentcamarche.net/forum/affich-10018295-verifier-si-un-url-est-valide#newanswer"
que :
"http://abracadabra-sources.commentcamarche.net/forum/affich-10018295-verifier-si-un-url-est-valide#newanswer"
seront reconnus comme des URL valables.
Seul le premier, toutefois, correspond à un site existant.
Pour vérifier si le site correspondant est réellement existant, il faut tenter de l'ouvrir et gérer l'erreur éventuelle (ce n'est pas simplement la vérification de validité de l'URL).

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 127
26 janv. 2014 à 17:15
"URL (...) ne pas confondre avec un URI"

La différence est sémantique, dans le contexte web l'identifiant (au sens URI) de la ressource est sa localisation (au sens URL) sur le réseau.

Mais les propriétés syntaxiques d'une URL sont les même qu'une URI !

Toujours dans le documentation que j'ai donné plus haut, section 1.1.3

A URI can be further classified as a locator, a name, or both.  The
term "Uniform Resource Locator" (URL) refers to the subset of URIs
that, in addition to identifying a resource, provide a means of
locating the resource by describing its primary access mechanism
(e.g., its network "location").

(...)

An individual scheme does not have to be classified as being just one
of "name" or "locator".  Instances of URIs from any given scheme may
have the characteristics of names or locators or both, often
depending on the persistence and care in the assignment of
identifiers by the naming authority, rather than on any quality of
the scheme.  Future specifications and related documentation should
use the general term "URI" rather than the more restrictive terms
"URL" and "URN" [RFC3305].
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 26/01/2014 à 17:36
Bonjour, KX;

Pour être clair : les conditions nécessaires ne sont pas toujours suffisantes.
Un URI ne peut en effet être un URL que lorsqu'il est constitué de l'ensemble locator/name ('le "both" de l'article)
Un URI n'est pas un URL s'il ne contient que le "locator" ou que le "Name"
En d'autre termes, un URI n'est un URL que lorsqu'il est construit de l'ensemble des élément d'un URL (ce qui n'est pas forcément toujours le cas des URI)

Dit encore autrement : tous les URL sont des URI mais tous les URI ne sont pas des URL
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 127
26 janv. 2014 à 17:52
"tous les URL sont des URI"
Donc, si la syntaxe des URI est respectée, cela valide la syntaxe de l'URL.
L'expression régulière des URI que j'ai proposé à Syrl permettra donc bien de faire sa vérification sur les URL.
0
Oui, mais de toutes façons, comme je l'ai dit, il y a des url du genre
https://googleads.g.doubleclick.net/pagead/drt/si?p=CAA&ut=AFAKxlQAAAAAUuUKleR19vWHQ1gAC4gYQSkeBVUitAc3
qui se chargent automatiquement avec une autre page, mais que je ne veux pas, car ce sont des pubs qui affichent une page blanche.
C'est pour un navigateur web, et cette page ne doit pas y figurer (logique).
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 127
27 janv. 2014 à 18:15
cette page ne doit pas y figurer (logique)
Elle n'en reste pas moins une adresse valide ! De plus tu ne peux savoir que c'est une page de pub qu'une fois cette page ouverte. Ou alors tu gères toi même un annuaire des adresses à ne pas afficher mais ce ne sera jamais exhaustif.
0
Ben oui, mais ce que je cherche (indirectement), c'est pourquoi ces pages sont chargées automatiquement, et peut-être, à partir de là, je pourrais trouver une solution...
Peut-être même (mais j'ai pas beaucoup de chances d'en trouver) y a-t-il un événement déclenché par des pages "normales", mais pas par les publicités...
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 127
29 janv. 2014 à 18:28
Ces pages sont pour la plupart chargé par un script dans la page qui va aller interroger ou ouvrir une page tierce.
Mais je doute que tu t'amuses à recoder toi même le moteur JavaScript. Donc soit tu utilises un moteur déjà existant et ces pages seront ouvertes par lui. Soit tu ne mets pas de moteur et les fonctionnalités de script seront indisponibles ce qui n'ouvrira pas les pages de pub (mais sans script ton navigateur ne va pas pouvoir lire beaucoup de pages récentes...)
0
Rejoignez-nous