Vous n'êtes pas identifié(e).

  • Contributions :
  • Vos boîtes de messages privés sont vides.

#1 2018-05-30 19:55:18

Mention PierreG
Recruit
Lieu : Paris
Inscription : 2018-03-10
Messages : 51

Développement PHP
Data Base Admin

Developper une fonction anti crawl ou visiteur suspect

Suite à mon poste ou je demandais vos avis sur une  ip qui a fait un crawl suspect sur un de mes sites, je me met dans l'idée de créer une fonction (php pour ma part mais ici je veux juste parler de conception) qui detecterait les visiteurs suspect.

Je commence la reflexion donc ne m'en voulez pas si je divague un peu.

Pele mele mes premiere idées pour les detecter :
-Une black list -> ca doit certainement déja exister
-Une white list ip: bah oui faudrait pas bloquer les robots qui nous interesse!
-les cookies : j'ai remarqué que les bots n'acceptent pas les cookies
-les user-agent : je pense que c'est une fausse bonne idée étant donné que c'est la premiere chose que je changerai si je faisais un bad-bot.
-Le temps de crawl entre les pages
-Le nombre de pages vue (dans mon cas, au dela de 100 pages ca commence à etre douteux)
-un regex sur la remote adresse (exemple :msnbot-207-46-13-96.search.msn.com -> si contient "msn.com" alors good-bot)
-Le pays avec un black ou white list histoire de rejeter les connexions douteuses (je vois des connexions de Dakar ou du Bénin)

En dehors de cas clairement identifiés (un blacklisté par exemple), on peut attribuer un score de doutabilité. Genre celui qui cumule un nombre de vue trop grand, avec un temps trop court entre chaque pages, qui n'accepte pas les cookies et qui est dans un pays Asiatique : blocage (voir redirection sur un concurrent pour les vicieux!).

Ensuite il faut hierarchiser tout ca, et logger les connexions avec un statut accept ou denied histoire d'améliorer.

Si vous avez des idées a ajouter n'hésitez pas.

Hors ligne

#2 2018-06-01 07:11:22

Mention OncleShu
Scout
Inscription : 2018-03-09
Messages : 57

Développement PHP
intégration Html Css
Adminstration Serveur
Data Base Admin

Re : Developper une fonction anti crawl ou visiteur suspect

j'ai eu un peu les mêmes problématiques et j'ai préféré opter pour du nginx / fail2ban. Le script PHP va pas bloquer les requetes vers js, css, images ... Avec fail2ban tu peux créer des règles de blocages d'ip automatique en fonction de requetes douteuses en GET / POST, tu peux blacklister / whitelister des ips ... Du coup ca relève plus de l'administration serveur que du dev mais à mon avis c'est plus efficace

Hors ligne

#3 2018-06-04 18:48:49

Mention PierreG
Recruit
Lieu : Paris
Inscription : 2018-03-10
Messages : 51

Développement PHP
Data Base Admin

Re : Developper une fonction anti crawl ou visiteur suspect

Je vais appelé Octave mais pas sur qu'il me laisse trop bricoler sur un mutu wink.

Je vais partir sur une solution simple a base de ce que j'ai mis plus haut. D'autant plus que je suis plus dev qu'admin serveur. J'aurais plus vite fait de coder ma fonction que d'apprendre a maitriser des nouveau logicielles.

Merci pour l'autre piste que tu as citée (requete fail ou douteuses), je vais la mettre aussi dans ma fonction.

Hors ligne

#4 2018-07-11 09:53:06

Mention ciboulette
Scout
Inscription : 2015-11-01
Messages : 380

Re : Developper une fonction anti crawl ou visiteur suspect

Deja la question c'est : pourquoi bloqué les bots ?
Deja tu peu souvent faire une base avec un htaccess (voir ci dessous)
Si c'est pour Bloqué Paul ou Michel qui veulent scrappé tes data ... tu pourra pas vraiment les en empeché ... car c'est tres facile de mettre des sleep() random dans ton code, de changer d'ip, de changer d'user agent, accepté les cookie etc ...


Apres tu pourrai t'inspiré de google genre : tu fait un script qui calcul le nombre/vitesse de requêtes d'une ip... si c'est trop rapide , Captcha ... si le mec repond tu reset son nombre de requête autorisé

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} .*Atomic\_Email\_Hunter* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} .*HTTrack* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} .*Filangy* [OR]
RewriteCond %{HTTP_USER_AGENT} .*BackWeb* [OR]
RewriteCond %{HTTP_USER_AGENT} .*BackStreet* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Bandit* [OR]
RewriteCond %{HTTP_USER_AGENT} .*BatchFTP* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Bullseye* [OR]
RewriteCond %{HTTP_USER_AGENT} .*bumblebee* [OR]
RewriteCond %{HTTP_USER_AGENT} .*capture* [OR]
RewriteCond %{HTTP_USER_AGENT} .*CherryPicker* [OR]
RewriteCond %{HTTP_USER_AGENT} .*CherryPickrElite* [OR]
RewriteCond %{HTTP_USER_AGENT} .*CherryPickerSE* [OR]
RewriteCond %{HTTP_USER_AGENT} .*ChinaClaw* [OR]
RewriteCond %{HTTP_USER_AGENT} .*clipping* [OR]
RewriteCond %{HTTP_USER_AGENT} .*collage* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Collector* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Copier* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} .*Crescent* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} .*Download* [OR]
RewriteCond %{HTTP_USER_AGENT} .*eCatch* [OR]
RewriteCond %{HTTP_USER_AGENT} .*EirGrabber* [OR]
RewriteCond %{HTTP_USER_AGENT} .*email* [OR]
RewriteCond %{HTTP_USER_AGENT} .*EmeraldShield* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} .*FlashGet* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} .*FlickBot* [OR]
RewriteCond %{HTTP_USER_AGENT} .*FrontPage* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} .*GetRight* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} .*GetSmart* [OR]
RewriteCond %{HTTP_USER_AGENT} .*GetWeb* [OR]
RewriteCond %{HTTP_USER_AGENT} .*GetWebPage* [OR]
RewriteCond %{HTTP_USER_AGENT} .*gigabaz* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Go!Zilla* [OR]
RewriteCond %{HTTP_USER_AGENT} .*GornKer* [OR]
RewriteCond %{HTTP_USER_AGENT} .*gotit* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Grabber* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} .*GrabNet* [OR]
RewriteCond %{HTTP_USER_AGENT} .*hloader* [OR]
RewriteCond %{HTTP_USER_AGENT} .*httpdown* [OR]
RewriteCond %{HTTP_USER_AGENT} .*InterGET* [OR]
RewriteCond %{HTTP_USER_AGENT} .*JustView* [OR]
RewriteCond %{HTTP_USER_AGENT} .*kapere* [OR]
RewriteCond %{HTTP_USER_AGENT} .*larbin* [OR]
RewriteCond %{HTTP_USER_AGENT} .*LeechFTP* [OR]
RewriteCond %{HTTP_USER_AGENT} .*LexiBot* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Missigua* [OR]
RewriteCond %{HTTP_USER_AGENT} .*MSIECrawler* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Vampire* [OR]
RewriteCond %{HTTP_USER_AGENT} .*NetAnts* [OR]
RewriteCond %{HTTP_USER_AGENT} .*NetMechanic* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Openfind* [OR]
RewriteCond %{HTTP_USER_AGENT} .*PageGrabber* [OR]
RewriteCond %{HTTP_USER_AGENT} .*pavuk* [OR]
RewriteCond %{HTTP_USER_AGENT} .*pcBrowser* [OR]
RewriteCond %{HTTP_USER_AGENT} .*PersonaPilot* [OR]
RewriteCond %{HTTP_USER_AGENT} .*PingALink* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Python-urllib* [OR]
RewriteCond %{HTTP_USER_AGENT} .*PycURL* [OR]
RewriteCond %{HTTP_USER_AGENT} .*RealDownload* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Reaper* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Recorder* [OR]
RewriteCond %{HTTP_USER_AGENT} .*ReGet* [OR]
RewriteCond %{HTTP_USER_AGENT} .*replacer* [OR]
RewriteCond %{HTTP_USER_AGENT} .*SearchExpress* [OR]
RewriteCond %{HTTP_USER_AGENT} .*SlySearch* [OR]
RewriteCond %{HTTP_USER_AGENT} .*SmartDownload* [OR]
RewriteCond %{HTTP_USER_AGENT} .*snagger* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Snake* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Stripper* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Sucker* [OR]
RewriteCond %{HTTP_USER_AGENT} .*SuperBot* [OR]
RewriteCond %{HTTP_USER_AGENT} .*SuperHTTP* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Surfbot* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Syntryx* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Teleport* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Telesoft* [OR]
RewriteCond %{HTTP_USER_AGENT} .*NetSpider* [OR]
RewriteCond %{HTTP_USER_AGENT} .*WebAuto* [OR]
RewriteCond %{HTTP_USER_AGENT} .*WebBandit* [OR]
RewriteCond %{HTTP_USER_AGENT} .*WebCapture* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Webclipping* [OR]
RewriteCond %{HTTP_USER_AGENT} .*webcollage* [OR]
RewriteCond %{HTTP_USER_AGENT} .*WebCopier* [OR]
RewriteCond %{HTTP_USER_AGENT} .*WebEMailExtrac* [OR]
RewriteCond %{HTTP_USER_AGENT} .*WebFetch* [OR]
RewriteCond %{HTTP_USER_AGENT} .*WebIndexer* [OR]
RewriteCond %{HTTP_USER_AGENT} .*WebLeacher* [OR]
RewriteCond %{HTTP_USER_AGENT} .*WebMiner* [OR]
RewriteCond %{HTTP_USER_AGENT} .*WebMirror* [OR]
RewriteCond %{HTTP_USER_AGENT} .*WebReaper* [OR]
RewriteCond %{HTTP_USER_AGENT} .*WebSauger* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Website* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Webster* [OR]
RewriteCond %{HTTP_USER_AGENT} .*WebStripper* [OR]
RewriteCond %{HTTP_USER_AGENT} .*WebWhacker* [OR]
RewriteCond %{HTTP_USER_AGENT} .*WebZIP* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Wget* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Whacker* [OR]
RewriteCond %{HTTP_USER_AGENT} .*whizbang* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Xenu*
RewriteRule .* - [F]

Hors ligne

Pied de page des forums