VALIDATEUR D'URL ET D'EMAIL

 

 
Testez l'application    Télécharger les sources 
 
 

1. Présentation du sujet

                                Ce projet consiste à écrire un outil pouvant valider des URL et des adresses email et renvoyer un code de retour en fonction des résultats (url ne répond pas, document déplacé, document ok mais demande d'authentification, email non valide, etc...).  L'utilisateur pourra choisir de parser une page HTML pour valider les liens et les emails qu'elle contient.

                                Grâce à une page HTML, l'utilisateur aura la possibilité de :
 
saisir une URL ou une adresse email
sélectionner un niveau de profondeur de recherche dans le cas d'un parsing d'une page HTML
sélectionner le nombre d'essais dans le cas d'une URL non valide
choisir le type de sortie : page HTML affichée à l'écran, ou envoi d'un mail
 
 
                                 Les résultats retournés sont de la forme :
 

NIVEAU URL/EMAIL RESULTAT
 
                                NIVEAU : profondeur de recherche où se trouve l'URL
                                URL/EMAIL: URL ou Email testée
                                RESULTAT : message correspondant au code retourné (correct, non valide ...)
 
 

2. Travail realisé

                            Nous avons utilisé le langage PERL 5 pour écrire les scripts CGI nécessaires à l'application.

                            Après la saisie des divers paramètres dans la page HTML par l'utilisateur et soumission du formulaire, une méthode permet de récupérer l'ensemble de ce formulaire. Un traitement différent est alors aplliqué suivant le type d'adresse saisie : URL ou adresse Email.
 

                            2.1. Validation d'une URL

                            Si l'URL est une page HTML, on crée alors un socket en nous connectant à la machine hôte sur le port 80. Dès que la connexion est établie, on exécute la commande GET $path HTTP/1.0 ($path  étant le chemin du document ) qui ouvre le document et nous retourne son corps et son entête sous la forme d'une chaîne de caractères. L'entête du document nous permet de connaitre le code de retour (URL correcte,  URL non valide ...). Si l'URL a été trouvée, un parsing est alors effectué sur le contenu du document retourné afin d'extraire tous les URL et Email contenues dans cette page. Un parsing de toutes ces URL est ensuite réalisé jusqu'à la profondeur desirée.

                            Si l'URL est une image (gif, jpeg, ....), on crée alors un socket en nous connectant à la machine hôte sur le port 80. Dès que la connexion est établie, on exécute la commande HEAD $path HTTP/1.0 ($path étant le chemin de l'image) qui nous retourne  entête sous la forme d'une chaine de caractères (il n'est pas nécessaire en effet d'ouvrir l'image pour recupérer son corps). L'entête du document nous permet de connaitre le code de retour (image trouvée,  image non valide ...).

                             Si une URL est déclarée non valide, elle est retestée autant de fois que l'utilisateur l'a desiré.
 

                            Suivant le type de sortie désirée, le résultat est affiché dans une page HTML sous forme de tableau, ou bien un mail est envoyé à l'utilisateur.
 
 

                            Certaines URL sont transformées , notamment dans les cas suivants :

             * adresse relative contenue dans un document : on rajoute alors la racine du document
                ex : /images/fond.gif dans la page http://www.essi.fr/~vuillaum/index.html ->   http://www.essi.fr/~vuillaum/images/fond.gif
 
             * adresse sur une page personnel : on rajoute un slash '/' pour que le fichier index.html soit parsé
                ex : http://www.essi.fr/~vuillaum -> http://www.essi.fr/~vuillaum/
 
 
                            Codes  de retour pour une URL :
 

       0,"Invalid URL" 
       -1,"Could Not Look Up Server" 
       -2,"Could Not Open Socket" 
       -3,"Could Not Bind Socket" 
       -4,"Could Not Connect" 
       200,"OK" 
       201,"Created" 
       202,"Accepted" 
       203,"Partial Information" 
       204,"No Response" 
       301,"Found, But Moved" 
       302,"Found, But Data Resides Under a Different URL" 
       303,"Method" 
       304,"Not Modified" 
       400,"Bad Request" 
       401,"Unauthorized" 
       402,"Payment Required" 
       403,"Forbidden" 
       404,"Not Found" 
       408,"Timeout" 
       500,"Internal Error" 
       501,"Not Implemented" 
       502,"Service Temporarily Overloaded" 
       503,"Gateway Timeout" 
       600,"Bad Request" 
       601,"Not Implemented" 
       602,"Connection Failed" 
       603,"Timed Out" 
 

 

                            2.2. Validation Email

                                   Si l'adresse Email a un format valide (avec un destinataire et nom de domaine), alors on crée un socket pour se connecter à la machine hôte sur le port 25. Dès que la connexion est établie, on exécute la commande VRFY <[destinataire]@[domaine]>, ce qui nous permet de récupérer le code de retour (Email valide, destinataire inconnu,...).

                             Si une adresse Email est déclarée non valide, elle est retestée autant de fois que l'utilisateur l'a desiré.

                            Il est a noter que la vérification de mail ne peut s'effectuer que sur des adresses internes à l'ESSI.

                            Codes de retour pour une adresse Email :
 

       250,"E-mail OK", 
       251,"User Not Local, Will Forward", 
       450,"Mailbox Unavailable", 
       451,"Error In Processing", 
       452,"Insufficient System Storage", 
       550,"User Unknown", 
       551,"User Not Local", 
       552,"Exceeded Storage Allocation", 
       553,"Mailbox Name Not Allowed", 
       554,"Transaction Failed");
 
 
  
 
 
 Jean-Michel Simonet
 Christophe Vuillaume
DESS-ISI LOG 1998
Ecole Supérieure en Sciences Informatiques  (ESSI)