Ich habe EXTREME Bot-Probleme auf einigen meiner Websites in meinem Hosting-Konto. Die Bots nutzen über 98% meiner CPU-Ressourcen und 99% meiner Bandbreite für mein gesamtes Hosting-Konto. Diese Bots generieren mehr als 1 GB Datenverkehr pro Stunde für meine Websites. Der tatsächliche menschliche Datenverkehr für alle diese Websites beträgt weniger als 100 MB / Monat .
Ich habe sowohl die robots.txt- als auch die .htaccess-Datei eingehend untersucht, um diese Bots zu blockieren, aber alle Methoden sind fehlgeschlagen.
Ich habe auch Code in die robots.txt-Dateien eingefügt, um den Zugriff auf die Skriptverzeichnisse zu blockieren, aber diese Bots (Google, MS Bing und Yahoo) ignorieren die Regeln und führen die Skripte trotzdem aus.
Ich möchte die Google-, MS Bing- und Yahoo-Bots nicht vollständig blockieren, aber ich möchte die Crawling-Rate dort begrenzen. Das Hinzufügen einer Crawl-Delay-Anweisung in der robots.txt-Datei verlangsamt die Bots nicht. Mein aktueller robots.txt- und .htacces-Code für alle Websites ist unten angegeben.
Ich habe sowohl Microsoft- als auch Google-Webmaster-Tools eingerichtet, um die Crawling-Rate auf das absolute Minimum zu verlangsamen, aber sie treffen diese Websites immer noch mit einer Rate von 10 Treffern / Sekunde.
Jedes Mal, wenn ich eine Datei hochlade, die einen Fehler verursacht, fällt der gesamte VPS-Webserver innerhalb von Sekunden aus, sodass ich aufgrund des Ansturms der Treffer dieser Bots nicht einmal auf die Site zugreifen kann, um das Problem zu beheben.
Was kann ich tun, um den Datenverkehr auf meinen Websites zu stoppen?
Ich habe in den letzten Monaten mehrmals versucht, mein Webhosting-Unternehmen (site5.com) zu diesem Problem zu befragen, und sie können mir bei diesem Problem nicht helfen.
Was ich wirklich brauche, ist zu verhindern, dass die Bots das Skript rss2html.php ausführen. Ich habe sowohl Sitzungen als auch Cookies ausprobiert und beide sind fehlgeschlagen.
robots.txt
User-agent: Mediapartners-Google
Disallow:
User-agent: Googlebot
Disallow:
User-agent: Adsbot-Google
Disallow:
User-agent: Googlebot-Image
Disallow:
User-agent: Googlebot-Mobile
Disallow:
User-agent: MSNBot
Disallow:
User-agent: bingbot
Disallow:
User-agent: Slurp
Disallow:
User-Agent: Yahoo! Slurp
Disallow:
# Directories
User-agent: *
Disallow: /
Disallow: /cgi-bin/
Disallow: /ads/
Disallow: /assets/
Disallow: /cgi-bin/
Disallow: /phone/
Disallow: /scripts/
# Files
Disallow: /ads/random_ads.php
Disallow: /scripts/rss2html.php
Disallow: /scripts/search_terms.php
Disallow: /scripts/template.html
Disallow: /scripts/template_mobile.html
.htaccess
ErrorDocument 400 http://english-1329329990.spampoison.com
ErrorDocument 401 http://english-1329329990.spampoison.com
ErrorDocument 403 http://english-1329329990.spampoison.com
ErrorDocument 404 /index.php
SetEnvIfNoCase User-Agent "^Yandex*" bad_bot
SetEnvIfNoCase User-Agent "^baidu*" bad_bot
Order Deny,Allow
Deny from env=bad_bot
RewriteEngine on
RewriteCond %{HTTP_user_agent} bot\* [OR]
RewriteCond %{HTTP_user_agent} \*bot
RewriteRule ^.*$ http://english-1329329990.spampoison.com [R,L]
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]
# Block out any script trying to base64_encode crap to send via URL
RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [OR]
# Block out any script that includes a <script> tag in URL
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
# Block out any script trying to set a PHP GLOBALS variable via URL
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# Block out any script trying to modify a _REQUEST variable via URL
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
# Send all blocked request to homepage with 403 Forbidden error!
RewriteRule ^(.*)$ index.php [F,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/index.php
RewriteCond %{REQUEST_URI} (/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$ [NC]
RewriteRule (.*) index.php
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
# Don't show directory listings for directories that do not contain an index file (index.php, default.asp etc.)
Options -Indexes
<Files http://english-1329329990.spampoison.com>
order allow,deny
allow from all
</Files>
deny from 108.
deny from 123.
deny from 180.
deny from 100.43.83.132
UPDATE ZUR ANZEIGE DES HINZUGEFÜGTEN BOT-CHECK-CODES DES BENUTZERAGENTEN
<?php
function botcheck(){
$spiders = array(
array('AdsBot-Google','google.com'),
array('Googlebot','google.com'),
array('Googlebot-Image','google.com'),
array('Googlebot-Mobile','google.com'),
array('Mediapartners','google.com'),
array('Mediapartners-Google','google.com'),
array('msnbot','search.msn.com'),
array('bingbot','bing.com'),
array('Slurp','help.yahoo.com'),
array('Yahoo! Slurp','help.yahoo.com')
);
$useragent = strtolower($_SERVER['HTTP_USER_AGENT']);
foreach($spiders as $bot) {
if(preg_match("/$bot[0]/i",$useragent)){
$ipaddress = $_SERVER['REMOTE_ADDR'];
$hostname = gethostbyaddr($ipaddress);
$iphostname = gethostbyname($hostname);
if (preg_match("/$bot[1]/i",$hostname) && $ipaddress == $iphostname){return true;}
}
}
}
if(botcheck() == false) {
// User Login - Read Cookie values
$username = $_COOKIE['username'];
$password = $_COOKIE['password'];
$radio_1 = $_COOKIE['radio_1'];
$radio_2 = $_COOKIE['radio_2'];
if (($username == 'm3s36G6S9v' && $password == 'S4er5h8QN2') || ($radio_1 == '2' && $radio_2 == '5')) {
} else {
$selected_username = $_POST['username'];
$selected_password = $_POST['password'];
$selected_radio_1 = $_POST['group1'];
$selected_radio_2 = $_POST['group2'];
if (($selected_username == 'm3s36G6S9v' && $selected_password == 'S4er5h8QN2') || ($selected_radio_1 == '2' && $selected_radio_2 == '5')) {
setcookie("username", $selected_username, time()+3600, "/");
setcookie("password", $selected_password, time()+3600, "/");
setcookie("radio_1", $selected_radio_1, time()+3600, "/");
setcookie("radio_2", $selected_radio_2, time()+3600, "/");
} else {
header("Location: login.html");
}
}
}
?>
Ich habe außerdem Folgendes oben im Skript rss2html.php hinzugefügt
// Checks to see if this script was called by the main site pages, (i.e. index.php or mobile.php) and if not, then sends to main page
session_start();
if(isset($_SESSION['views'])){$_SESSION['views'] = $_SESSION['views']+ 1;} else {$_SESSION['views'] = 1;}
if($_SESSION['views'] > 1) {header("Location: http://website.com/index.php");}
rss2html.php
Ihre Website verwendet? über PHP gehören, Weiterleitungen, Ajax ....?
file_get_contents
...? Scheint ziemlich seltsam. Die Datei befindet sich auf einem anderen Server oder so?
robots.txt
? Es kann einige Zeit dauern, bis die Roboter die aktualisierte Version gelesen haben.