éviter les spider-trap

Nouveau WRInaute
Bonjour,

Je développe un petit crawler web basique, sans grande prétention, mais celui-ci ne cesse de s'engouffrer dans des méchants pièges (intentionnels ou pas ?) du style :

http://www.example.com/a/b/a/b/a...

ou

http://www.example.com/script.php?a=1&a=1&a=1...

La seule solution simple que j'ai trouvé est de compter le nombre de "/" ou de "?" dans l'URL et de bloquer les URL en comportant plus de 10 (par exemple). Avez-vous d'autres idées ou remarques ?

Merci d'avance,

PS : le problème suivant est d'éliminer, dans la liste des URL trouvées par le crawler, les URL qui référencent la même page.

[Edit kazhar : Le domaine de test, c'est example. Pas monsite]
 
WRInaute accro
Quelques idées :

1. associer à chaque page un hash pour détecter les pages identiques
2. décomposer les paramètres pour détecter les paramètres en double
3. limiter la profondeur de crawl au niveau répertoire (à combiner avec 1)
4. Vérifier si une URL du type -http://www.monsite.com/a/b/a/b/a n'est pas due à un bug du crawler (mauvaise reconstitution de l'URL dans le cas de chemins relatifs).

Hervé ;-)
 
Nouveau WRInaute
Tu as plusieurs possibilités pour essayer d'éviter cela, ou en tout cas arrêter la procédure au lieu de continuer indéfiniment.

Tu peux par exemple construire ton crawler selon une logique récursive, et stopper le crawl si tu es descendu à plus de x niveaux.

Une autre méthode serait l'étude statistique du contenu de la page: si le contenu est identique à plus de x% dans deux niveaux consécutifs, alors le crawler s'arrête (tu peux même combiner ça à la méthode ci-dessus pour de meilleurs résultats).

Enfin, tu peux dire interdire au crawler de suivre les liens avec Query String (ce qui suit le ?), au risque de perdre des pages pertinentes.

Là comme ça j'ai pas plus d'idées, bon courage ^^
 
Nouveau WRInaute
ecocentric a dit:
Quelques idées :
1. associer à chaque page un hash pour détecter les pages identiques
non car les pages composant un piège ne sont pas exactement identiques : l'URL "piégeuse" est différente vu qu'elle est à chaque fois de plus en plus longue
ecocentric a dit:
2. décomposer les paramètres pour détecter les paramètres en double
ok pour résoudre le 2ème cas
ecocentric a dit:
3. limiter la profondeur de crawl au niveau répertoire (à combiner avec 1)
oui bien mais on perd des pages
ecocentric a dit:
4. Vérifier si une URL du type -http://www.monsite.com/a/b/a/b/a n'est pas due à un bug du crawler (mauvaise reconstitution de l'URL dans le cas de chemins relatifs).
mon crawler se porte bien, merci ;-)
ecocentric a dit:
Michel ;-)
 
WRInaute accro
Bonjour Michel,

> l'URL "piégeuse" est différente

Je parlais de faire un hash sur le contenu, ou sur des parties de contenu (tout ou body uniquement, par exemple), pas sur l'URL.

Hervé.

<mode private="on">:lol:</mode>
 
Discussions similaires
Haut