Saya mengalami masalah bot EXTREME di beberapa situs web saya dalam akun hosting saya. Bot menggunakan lebih dari 98% sumber daya CPU saya dan 99% dari bandwidth saya untuk seluruh akun hosting saya. Bot ini menghasilkan lebih dari 1 GB lalu lintas per jam untuk situs saya. Lalu lintas manusia nyata untuk semua situs ini kurang dari 100 MB / bulan .
Saya telah melakukan penelitian ekstensif pada file robots.txt dan .htaccess untuk memblokir bot ini tetapi semua metode gagal.
Saya juga telah meletakkan kode di file robots.txt untuk memblokir akses ke direktori skrip, tetapi bot ini (Google, MS Bing, dan Yahoo) mengabaikan aturan dan menjalankan skrip itu.
Saya tidak ingin sepenuhnya memblokir Google, MS Bing, dan bot Yahoo, tapi saya ingin membatasi laju perayapan di sana. Juga, menambahkan pernyataan Penelusuran-jeda di file robots.txt tidak memperlambat bot. Kode robots.txt dan .htacces saya saat ini untuk semua situs dinyatakan di bawah ini.
Saya telah menyiapkan alat webmaster Microsoft dan Google untuk memperlambat tingkat perayapan ke minimum absolut, tetapi mereka masih memukul situs-situs ini dengan kecepatan 10 hit / detik.
Selain itu, setiap kali saya mengunggah file yang menyebabkan kesalahan, seluruh server web VPS turun dalam hitungan detik sehingga saya bahkan tidak dapat mengakses situs memperbaiki masalah karena serangan hit oleh bot ini.
Apa yang dapat saya lakukan untuk menghentikan slot lalu lintas ke situs web saya?
Saya mencoba bertanya kepada perusahaan hosting web saya (site5.com) berkali-kali tentang masalah ini dalam beberapa bulan terakhir dan mereka tidak dapat membantu saya dengan masalah ini.
Yang benar-benar saya butuhkan adalah untuk mencegah Bot menjalankan skrip rss2html.php. Saya mencoba kedua sesi dan cookie dan keduanya gagal.
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
PEMBARUAN UNTUK MENUNJUKKAN KODE AGEN PENGGUNA TAMBAH BOT CHECK
<?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");
}
}
}
?>
Saya juga menambahkan yang berikut ini ke bagian atas skrip 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");}
sumber
robots.txt
? Robot perlu waktu untuk membaca versi yang diperbarui.rss2html.php
cara digunakan oleh situs Anda? via PHP termasuk, redirect, Ajax ....?file_get_contents
...? Agak aneh. File ada di server lain atau sesuatu?Jawaban:
Jika
rss2html.php
tidak digunakan secara langsung oleh klien (yaitu, jika itu PHP selalu menggunakannya daripada sebagai tautan atau semacamnya), maka lupakan mencoba memblokir bot. Yang harus Anda lakukan adalah menentukan konstanta atau sesuatu di halaman utama, laluinclude
skrip lainnya. Di skrip lain, periksa apakah konstanta didefinisikan, dan keluarkan kesalahan 403 atau halaman kosong atau apa pun jika tidak didefinisikan.Sekarang, agar ini berfungsi, Anda harus menggunakan
include
alih-alihfile_get_contents
, karena yang terakhir hanya akan membaca dalam file (jika Anda menggunakan jalur lokal), atau berjalan di seluruh proses lain (jika Anda ' sedang menggunakan URL). Tapi itu metode yang mirip Joomla! digunakan untuk mencegah agar skrip tidak dimasukkan secara langsung. Dan gunakan path file daripada URL, sehingga kode PHP belum diuraikan sebelum Anda mencoba menjalankannya.Bahkan lebih baik untuk
rss2html.php
keluar dari bawah root dokumen, tetapi beberapa host membuat hal itu sulit dilakukan. Apakah itu pilihan tergantung pada pengaturan server / host Anda.sumber
Anda dapat mengatur skrip Anda untuk melemparkan kesalahan 404 berdasarkan string agen pengguna yang disediakan oleh bot - mereka akan dengan cepat mendapatkan petunjuk dan meninggalkan Anda sendirian.
Pilih log Anda dan tolak Bingbot, dll. Dengan cara yang serupa - itu tidak akan menghentikan permintaan, tetapi mungkin menghemat bandwidth - beri googlebot rasa obatnya sendiri - Mwhahahahaha!
Diperbarui
Melihat kode Anda, saya pikir masalah Anda ada di sini:
Jika mereka bot jahat maka mereka bisa datang dari mana saja,
$ipaddress
keluarkan klausa itu dan berikan respons 301 atau 404 pada mereka.Berpikir tepat di sisi kotak
Googlebot tidak memahami bentuk - atau - javascript, sehingga Anda dapat membuat tautan secara dinamis atau meminta pengguna mengklik tombol untuk mencapai kode Anda (dengan token yang sesuai terpasang).
<a href="#" onclick="document.location='rss2html.php?validated=29e0-27fa12-fca4-cae3';">Rss2html.php</a>
sumber
Batas PHP / Blokir permintaan Situs Web untuk Spider / Bot / Klien, dll.
Di sini saya telah menulis fungsi PHP yang dapat Memblokir Permintaan yang tidak diinginkan untuk mengurangi Lalu Lintas Situs Web Anda. Baik untuk Laba-laba, Bot, dan Klien yang mengganggu.
CLIENT / Bots Blocker
DEMO: http://szczepan.info/9-webdesign/php/1-php-limit-block-website-requests-for-spiders-bots-clients-etc.html
KODE:
sumber
Kemungkinan situs Anda diindeks oleh bot google palsu. Anda dapat mencoba menambahkan tanda centang dan melayani 404 untuk semua permintaan google bot palsu.
Berikut adalah artikel yang menjelaskan cara memverifikasi Googlebot: http://googlewebmastercentral.blogspot.com/2006/09/how-to-verify-googlebot.html
Anda juga dapat memeriksa catatan Anda terhadap bot palsu yang diketahui: http://stopmalvertising.com/security/fake-google-bots.html
sumber
Anda harus benar-benar memastikan bahwa setiap halaman yang diminta dari agen pengguna, dari perayap yang Anda miliki, akan disajikan sebagai halaman statis.
Sebuah mod_rewrite apache dengan kondisi atau equiv dengan server http Anda. Untuk apache, kira-kira seperti ini:
sumber
Untuk melanjutkan posting smassey, Anda dapat menempatkan beberapa kondisi:
Dengan cara ini, bot masih mengakses halaman Anda, tetapi tidak hanya itu. Karena aneh bahwa bot (sah) tidak mematuhi aturan, apakah Anda memiliki referer yang mendorong bot ke halaman Anda dari sumber lain (penerusan nama domain, ...)
sumber
Saya telah memecahkan masalah yang sama dengan skrip yang tersedia di http://perishablepress.com/blackhole-bad-bots/ . Dengan pendekatan lubang hitam ini saya mengumpulkan daftar ip berbahaya, dan kemudian menggunakan .htaccess menolaknya. (Yang tidak wajib, karena skrip itu sendiri yang melarang. Tapi saya perlu mengurangi beban server dengan menghindari parsing php untuk ips yang tidak diketahui yang dikenal) dalam tiga hari lalu lintas saya turun dari 5GB per hari menjadi 300MB, yang diharapkan tenang.
Periksa halaman ini juga untuk daftar lengkap aturan htaccess untuk memblokir banyak bot sampah yang dikenal. http://www.askapache.com/htaccess/blocking-bad-bots-and-scrapers-with-htaccess.html
sumber
Skrip ini tidak melakukan apa yang dikatakan komentar, bahkan sebaliknya. Ini akan selalu membiarkan bot lewat, karena variabel sesi tidak akan pernah ditetapkan ketika bot meminta skrip Anda. Yang berpotensi dilakukan adalah mencegah permintaan yang sah (dari index.php atau mobile.php) memanggil skrip lebih dari satu kali.
Untuk mencegah bot mengakses skrip Anda, Anda hanya boleh mengizinkan akses jika variabel sesi (atau cookie) benar-benar disetel. Dengan asumsi tentu saja bahwa bot (jahat) tidak menerima cookie. (Kami tahu bahwa Googlebot yang asli tidak.)
Seperti yang telah disebutkan, menempatkan rss2html.php di atas root web (di luar ruang publik) akan mencegah bot mengakses skrip secara langsung - tetapi Anda mengatakan ini menyebabkan masalah lain? Atau, letakkan di direktori dan lindungi direktori itu dengan .htaccess. Atau Anda bahkan mungkin dapat melindungi file itu sendiri di .htaccess dari permintaan langsung?
sumber
Siapkan domain Anda di Cloudflare (layanan gratis untuk ini). Mereka memblokir bot jahat di tingkat domain sebelum memukul server Anda. Butuh waktu sekitar 20 menit, tidak perlu kera dengan kode.
Saya menggunakan layanan ini di semua situs saya dan semua situs klien. Mereka mengidentifikasi bot jahat berdasarkan sejumlah teknik termasuk meningkatkan proyek pot Madu.
sumber
Yang perlu Anda lakukan adalah menginstal Sertifikat SSL di server Anda untuk apache / nginx / email / ftp. Aktifkan HSTS dan Anda juga perlu mengedit file ssl.conf Anda sehingga SSLv2 SSLv3 TLSv1 dinonaktifkan dan tidak memungkinkan koneksi masuk. Perkuat server Anda dengan cara yang benar dan Anda tidak akan mendapatkan masalah dari bot.
sumber