Tôi đang gặp sự cố bot EXTREME trên một số trang web trong tài khoản lưu trữ của mình. Các bot sử dụng hơn 98% tài nguyên CPU của tôi và 99% băng thông cho toàn bộ tài khoản lưu trữ của tôi. Những bot này đang tạo ra hơn 1 GB lưu lượng truy cập mỗi giờ cho các trang web của tôi. Lưu lượng truy cập thực sự của con người cho tất cả các trang web này là dưới 100 MB / tháng .
Tôi đã thực hiện nghiên cứu sâu rộng về cả tệp robots.txt và .htaccess để chặn các bot này nhưng tất cả các phương pháp đều thất bại.
Tôi cũng đã đặt mã trong các tệp robots.txt để chặn quyền truy cập vào các thư mục tập lệnh, nhưng các bot này (Google, MS Bing và Yahoo) bỏ qua các quy tắc và chạy các đoạn script.
Tôi không muốn chặn hoàn toàn các bot Google, MS Bing và Yahoo, nhưng tôi muốn giới hạn tốc độ thu thập dữ liệu. Ngoài ra, việc thêm câu lệnh Thu thập thông tin chậm trễ trong tệp robot.txt không làm chậm các bot. Mã robot.txt và .htacces hiện tại của tôi cho tất cả các trang web được nêu dưới đây.
Tôi đã thiết lập cả hai công cụ quản trị trang web của Microsoft và Google để làm chậm tốc độ thu thập dữ liệu xuống mức tối thiểu, nhưng họ vẫn truy cập các trang web này với tốc độ 10 lần / giây.
Ngoài ra, mỗi khi tôi tải lên một tệp gây ra lỗi, toàn bộ máy chủ web VPS sẽ ngừng hoạt động trong vài giây để tôi thậm chí không thể truy cập trang web để khắc phục sự cố do sự tấn công của các bot này.
Tôi có thể làm gì để ngăn chặn lưu lượng truy cập vào trang web của mình?
Tôi đã thử hỏi công ty lưu trữ web của tôi (site5.com) nhiều lần về vấn đề này trong những tháng qua và họ không thể giúp tôi với vấn đề này.
Điều tôi thực sự cần là ngăn Bots chạy tập lệnh rss2html.php. Tôi đã thử cả phiên và cookie và đều thất bại.
robot.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
CẬP NHẬT ĐỂ HIỂN THỊ THÊM ĐẠI LÝ BOT
<?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");
}
}
}
?>
Tôi cũng đã thêm phần sau vào tập lệnh tss2html.php hàng đầu
// 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
được sử dụng bởi trang web của bạn? thông qua PHP bao gồm, chuyển hướng, Ajax ....?
file_get_contents
...? Có vẻ khá kỳ quặc. Các tập tin là trên một máy chủ khác hoặc một cái gì đó?
robots.txt
? Nó có thể mất thời gian cho các robot để đọc phiên bản cập nhật.