ฉันมีปัญหาบอทมากในบางเว็บไซต์ของฉันภายในบัญชีโฮสติ้งของฉัน บอทใช้ทรัพยากร CPU ของฉันมากกว่า 98% และแบนด์วิดธ์ 99% สำหรับบัญชีโฮสติ้งทั้งหมดของฉัน บอทเหล่านี้สร้างอัตราการเข้าชมมากกว่า1 GB ต่อชั่วโมงสำหรับเว็บไซต์ของฉัน การจราจรของมนุษย์ที่แท้จริงสำหรับทุกเว็บไซต์เหล่านี้จะน้อยกว่า 100 MB / เดือน
ฉันได้ทำการค้นคว้าอย่างละเอียดเกี่ยวกับไฟล์ robots.txt และ. htaccess เพื่อป้องกันบอทเหล่านี้ แต่วิธีการทั้งหมดล้มเหลว
ฉันได้ใส่รหัสลงในไฟล์ robots.txt เพื่อป้องกันการเข้าถึงไดเรกทอรีสคริปต์ แต่บอท (Google, MS Bing และ Yahoo) เหล่านี้ไม่สนใจกฎและเรียกใช้สคริปต์ต่อไป
ฉันไม่ต้องการบล็อกบ็อต Google, MS Bing และ Yahoo อย่างสมบูรณ์ แต่ฉันต้องการ จำกัด อัตราการรวบรวมข้อมูลที่นั่น การเพิ่มคำสั่งการรวบรวมข้อมูลล่าช้าในไฟล์ robots.txt จะไม่ทำให้บ็อตช้าลง robots.txt และรหัส. htacces ปัจจุบันของฉันสำหรับเว็บไซต์ทั้งหมดระบุไว้ด้านล่าง
ฉันได้ติดตั้งทั้งเครื่องมือของ Microsoft และ Google เว็บมาสเตอร์เพื่อลดอัตราการรวบรวมข้อมูลให้เหลือน้อยที่สุด แต่พวกเขายังคงกดปุ่มเว็บไซต์เหล่านี้ในอัตรา 10 ครั้ง / วินาที
นอกจากนี้ทุกครั้งที่ฉันอัปโหลดไฟล์ที่ทำให้เกิดข้อผิดพลาดเว็บเซิร์ฟเวอร์ VPS ทั้งหมดจะลดลงภายในไม่กี่วินาทีซึ่งฉันไม่สามารถแม้แต่จะเข้าถึงเว็บไซต์ที่แก้ไขปัญหาได้เนื่องจากการโจมตีของบอทเหล่านี้
ฉันจะทำอย่างไรเพื่อหยุดการจราจรบนเว็บไซต์ของฉัน
ฉันพยายามถาม บริษัท เว็บโฮสติ้ง (site5.com) หลายครั้งเกี่ยวกับปัญหานี้ในช่วงหลายเดือนที่ผ่านมาและพวกเขาไม่สามารถช่วยฉันแก้ปัญหานี้ได้
สิ่งที่ฉันต้องการจริงๆคือป้องกันไม่ให้บ็อตรันสคริปต์ rss2html.php ฉันลองทั้งเซสชันและคุกกี้และทั้งสองอย่างล้มเหลว
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
อัปเดตเมื่อต้องการแสดงรหัสตรวจสอบผู้ใช้ของ 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");
}
}
}
?>
ฉันยังเพิ่มต่อไปนี้ไปยังสคริปต์ tss rss2html.php
// 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
ไซต์ของคุณมีการใช้งานอย่างไร ผ่านทาง PHP รวมถึงการเปลี่ยนเส้นทาง Ajax .... ?
file_get_contents
... ? ดูเหมือนจะค่อนข้างแปลก ไฟล์อยู่ในเซิร์ฟเวอร์อื่นหรืออะไร?
robots.txt
ใด อาจต้องใช้เวลาก่อนที่หุ่นยนต์จะอ่านรุ่นที่อัพเดท