www comment interdire crawler 360Spider avec robots.txt ou.htaccess?




robots.txt wordpress (7)

J'ai un problème à cause de 360Spider: ce bot fait trop de demandes par seconde à mon VPS et le ralentit (l'utilisation du CPU devient 10-70%, mais j'ai généralement 1-2%). J'ai regardé dans les journaux de httpd et j'ai vu là de telles lignes:

182.118.25.209 - - [06/Sep/2012:19:39:08 +0300] "GET /slovar/znachenie-slova/42957-polovity.html HTTP/1.1" 200 96809 "http://www.hrinchenko.com/slovar/znachenie-slova/42957-polovity.html" "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11; 360Spider
182.118.25.208 - - [06/Sep/2012:19:39:08 +0300] "GET /slovar/znachenie-slova/52614-rospryskaty.html HTTP/1.1" 200 100239 "http://www.hrinchenko.com/slovar/znachenie-slova/52614-rospryskaty.html" "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11; 360Spider

etc.

Comment puis-je bloquer complètement cette araignée via robots.txt? Maintenant, mon fichier robots.txt ressemble à ceci:

User-agent: *
Disallow: /cgi-bin/
Disallow: /tmp/

User-agent: YoudaoBot
Disallow: /

User-agent: sogou spider
Disallow: /

J'ai ajouté des lignes:

User-agent: 360Spider
Disallow: /

mais cela ne semble pas fonctionner. Comment bloquer ce bot en colère?

Si vous proposez de le bloquer via .htaccess, alors faites attention qu'il ressemble maintenant à ceci:

# Turn on URL rewriting
RewriteEngine On

# Installation directory
RewriteBase /

SetEnvIfNoCase Referer ^360Spider$ block_them
Deny from env=block_them

# Protect hidden files from being viewed
<Files .*>
    Order Deny,Allow
    Deny From All
</Files>

# Protect application and system files from being viewed
RewriteRule ^(?:application|modules|system)\b.* index.php/$0 [L]

# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT]

Et, malgré la présence de

SetEnvIfNoCase Referer ^360Spider$ block_them
Deny from env=block_them

Ce robot essaie toujours de tuer mon VPS et est connecté dans les journaux d'accès.


La personne qui exécute le robot d'exploration peut ignorer le fichier robots.txt. Vous pourriez les bloquer via IP

ordre refuser, permettre
refuser de 216.86.192.196

en .htaccess


Dans votre fichier .htaccess, ajoutez simplement ce qui suit:

RewriteCond %{REMOTE_ADDR} ^(182\.118\.2)

RewriteRule ^.*$ http://182.118.25.209/take_a_hike_moron [R=301,L]

Cela va attraper tous les robots lancés à partir de la gamme 182.118.2xx.xxx et les renvoyer à eux-mêmes ...

Le bot de merde est lancé depuis des serveurs en Chine ... aussi longtemps que cela ne vous dérange pas de dire adieu au trafic chinois merdique de cette gamme d'IP, cela garantira que ces chiots disparaissent d'atteindre tous les fichiers sur votre site web .

Les deux lignes suivantes dans votre fichier .htaccess le décèlent tout simplement parce qu'il est assez stupide pour placer fièrement 360spider dans sa chaîne d'agent utilisateur. Cela pourrait être utile pour quand ils utilisent d'autres plages IP, puis le 182.118.2xx.xxx

RewriteCond %{HTTP_USER_AGENT} .*(360Spider) [NC]

RewriteRule ^.*$ http://182.118.25.209/take_a_hike_moron [R=301,L]

Et oui ... je les déteste aussi!


J'ai des lignes dans mon fichier .htaccess comme ceci pour bloquer les mauvais robots:

RewriteEngine On
RewriteCond %{ENV:bad} 1
RewriteCond %{REQUEST_URI} !/forbidden.php
RewriteRule (.*) - [R=402,L]

SetEnvIf Remote_Addr "^38\.99\." bad=1
SetEnvIf Remote_Addr "^210\.195\.45\." bad=1
SetEnvIf Remote_Addr "^207\.189\." bad=1
SetEnvIf Remote_Addr "^69\.84\.207\." bad=1

# ...

SetEnvIf Remote_Addr "^221\.204\." bad=1
SetEnvIf User-agent "360Spider" bad=1

Il enverra le code d'état 402 Payment Required à toutes les adresses IP / user-agents figurant sur la liste noire.

Vous pouvez mettre tout ce que vous voulez afficher au bot dans forbidden.php .

C'est assez efficace.


J'utilise ce qui suit, et ça aide beaucoup! Vérifiez le HTTP_USER_AGENT pour les mauvais robots

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    RewriteCond %{REQUEST_URI} !^/robots\.txt$
    RewriteCond %{REQUEST_URI} !^/error\.html$

    RewriteCond %{HTTP_USER_AGENT} EasouSpider [NC,OR]
    RewriteCond %{HTTP_USER_AGENT} YisouSpider [NC,OR]
    RewriteCond %{HTTP_USER_AGENT} Sogou\ web\ spider [NC]
    RewriteCond %{HTTP_USER_AGENT} 360Spider [NC,OR]
    RewriteRule ^.*$ - [F,L]
</IfModule>

<Location />
    <IfModule mod_setenvif.c>
        SetEnvIfNoCase User-Agent "EasouSpider" bad_bot
        SetEnvIfNoCase User-Agent "YisouSpider" bad_bot
        SetEnvIfNoCase User-Agent "LinksCrawler" bad_bot

        Order Allow,Deny
        Allow from All
        Deny from env=bad_bot
    </IfModule>
</Location>

Votre fichier robots.txt semble correct. Certains robots l'ignorent (des robots malveillants rampent à partir de n'importe quelle adresse IP depuis n'importe quel botnet de centaines à des millions de périphériques infectés du monde entier), vous pouvez limiter le nombre de requêtes par seconde en utilisant le module mod_security pour apache 2.X

Exemple de configuration ici: http://blog.cherouvim.com/simple-dos-protection-with-mod_security/

[EDIT] Sur linux, iptables permet également de restreindre les connexions tcp: port par (x) seconde (s) par ip, à condition que les fonctionnalités conntrack soient activées sur votre noyau. Voir: https://serverfault.com/questions/378357/iptables-dos-limit-for-all-ports


SetEnvIfNoCase User-agent 360Spider bloqué


Vous pouvez mettre les règles suivantes dans votre fichier .htaccess

RewriteEngine On  
RewriteBase /  
SetEnvIfNoCase Referer 360Spider$ block_them
Deny from env=block_them

Remarque: le module Apache mod_setenvif doit être activé dans la configuration de votre serveur