मेरे वेबसर्वर को मारने से बॉट को रोकने की आवश्यकता है


9

मुझे अपने होस्टिंग खाते के भीतर अपनी कुछ वेबसाइटों पर एक्सट्रीम बॉट की समस्या हो रही है। बॉट मेरे सीपीयू संसाधनों का 98% और मेरे पूरे होस्टिंग खाते के लिए 99% बैंडविड्थ का उपयोग करते हैं। ये बॉट मेरी साइटों के लिए प्रति घंटे 1 GB से अधिक ट्रैफ़िक उत्पन्न कर रहे हैं । इन सभी साइटों के लिए वास्तविक मानव यातायात 100 एमबी / माह से कम है

मैंने इन बॉट्स को ब्लॉक करने के लिए robots.txt और .htaccess फाइल दोनों पर गहन शोध किया है लेकिन सभी तरीके विफल रहे।

मैंने लिपियों निर्देशिकाओं तक पहुँच को ब्लॉक करने के लिए robots.txt फ़ाइलों में कोड भी डाला है, लेकिन ये बॉट्स (Google, MS Bing, और Yahoo) नियमों की अनदेखी करते हैं और स्क्रिप्ट्स को वैसे भी चलाते हैं।

मैं Google, MS Bing, और Yahoo बॉट्स को पूरी तरह से ब्लॉक नहीं करना चाहता, लेकिन मैं क्रॉल रेट को सीमित करना चाहता हूं। इसके अलावा, robots.txt फ़ाइल में क्रॉल-विलंब स्टेटमेंट जोड़ने से बॉट्स धीमा नहीं होता है। सभी साइटों के लिए मेरे वर्तमान robots.txt और .htacces कोड नीचे दिए गए हैं।

मेरे पास Microsoft और Google वेबमास्टर टूल दोनों को क्रॉल दर को पूरी तरह से धीमा करने के लिए सेटअप है, लेकिन वे अभी भी इन साइटों को 10 हिट / सेकंड की दर से मार रहे हैं।

इसके अलावा, हर बार जब मैं एक फ़ाइल अपलोड करता हूं, जो एक त्रुटि का कारण बनता है, तो पूरे वीपीएस वेबसर्वर सेकंड के भीतर नीचे चला जाता है जैसे कि मैं इन बॉट द्वारा हिट के हमले के कारण समस्या को सही करने के लिए साइट तक भी नहीं पहुंच सकता।

मैं अपनी वेबसाइट पर ट्रैफ़िक के ऑन-स्लॉट को रोकने के लिए क्या कर सकता हूं?

मैंने अपनी वेब होस्टिंग कंपनी (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

अद्यतन करने के लिए उपयोग किया जाता है कि उपयोगकर्ता को बहुत सी चीज़ कोड मिलाया जाता है

<?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");}

आपने अपना अपडेट कब दिया robots.txt? रोबोट को अपडेटेड वर्जन को पढ़ने में समय लग सकता है।
इलैंको

कुछ दिन पहले। मुझे वास्तव में क्या जरूरत है कि बॉट्स को rss2html.php स्क्रिप्ट को चलाने से रोका जाए। मैंने सत्र और कुकीज़ दोनों की कोशिश की और दोनों विफल रहे।

rss2html.phpआपकी साइट द्वारा कैसे उपयोग किया जा रहा है? PHP के माध्यम से शामिल हैं, पुनर्निर्देश, अजाक्स ....?
cHao

Rss2html.php फाइलों को file_get_contents () कमांड के जरिए बुलाया जाता है

file_get_contents...? बल्कि अजीब लगता है। फ़ाइल किसी अन्य सर्वर या कुछ और पर है?
cHao

जवाबों:


3

यदि rss2html.phpक्लाइंट द्वारा सीधे उपयोग नहीं किया जा रहा है (यानी, यदि यह PHP हमेशा लिंक या कुछ होने के बजाय इसका उपयोग करता है), तो बॉट्स को ब्लॉक करने की कोशिश करना भूल जाएं। आपको बस इतना करना है कि मुख्य पृष्ठ में एक निरंतर या कुछ परिभाषित करना है, फिर includeदूसरी स्क्रिप्ट। अन्य स्क्रिप्ट में, जांचें कि क्या निरंतर परिभाषित है, और 403 त्रुटि या खाली पृष्ठ या जो भी परिभाषित नहीं है, उसे बाहर थूक दें।

अब इसे काम करने के लिए, आपको इसके includeबजाय उपयोग करना होगा file_get_contents, क्योंकि उत्तरार्द्ध या तो फ़ाइल में पढ़ा जाएगा (यदि आप एक स्थानीय पथ का उपयोग कर रहे हैं), या एक पूरी अन्य प्रक्रिया में चलाएं (यदि आप ' URL का उपयोग करके पुनः)। लेकिन यह विधि है कि सामान जूमला की तरह है! एक स्क्रिप्ट को सीधे शामिल होने से रोकने के लिए उपयोग करता है। और URL के बजाय फ़ाइल पथ का उपयोग करें, ताकि इसे चलाने का प्रयास करने से पहले PHP कोड पहले से पार्स न हो।

इससे भी बेहतर होगा rss2html.phpकि डॉक्यूमेंट रूट के नीचे से बाहर जाएं , लेकिन कुछ मेजबान ऐसा करना मुश्किल बनाते हैं। चाहे वह विकल्प आपके सर्वर / होस्ट के सेटअप पर निर्भर करता हो।


1
चाओ, धन्यवाद। वर्तमान में, मैं इसके बजाय शामिल करने के लिए file_get_contents को परिवर्तित करने के लिए अपना कोड लिख रहा हूं।
सैमी

4

बॉट द्वारा प्रदान किए गए उपयोगकर्ता एजेंट स्ट्रिंग के आधार पर आप 404 त्रुटि को फेंकने के लिए अपनी स्क्रिप्ट सेट कर सकते हैं - वे जल्दी से संकेत प्राप्त करेंगे और आपको अकेला छोड़ देंगे।

if(isset($_SERVER['HTTP_USER_AGENT'])){
   $agent = $_SERVER['HTTP_USER_AGENT'];
}

if(preg_match('/^Googlebot/i',$agent)){
   http_response_code(301);
   header("HTTP/1.1 301 Moved Permanently");
   header("Location: http://www.google.com/");
   exit;
}

अपने लॉग के माध्यम से उठाओ और एक ही तरीके से बिंगबॉट, आदि को अस्वीकार करें - यह अनुरोधों को रोक नहीं पाएगा, लेकिन कुछ बैंडविड्थ को बचा सकता है - Googlebot को इसकी स्वयं की दवा का स्वाद दे - मवहाहा!

अपडेट किया गया

आपके कोड को देखते हुए, मुझे लगता है कि आपकी समस्या यहाँ है:

if (preg_match("/$bot[1]/i",$hostname) && $ipaddress == $iphostname)

यदि वे दुर्भावनापूर्ण बॉट हैं तो वे कहीं से भी आ सकते हैं, उस $ipaddressखंड को बाहर निकालें और उन पर 301 या 404 प्रतिक्रिया दें।

बॉक्स के किनारे सही सोच रहा था

  1. Googlebot कभी भी कुकीज़ स्वीकार नहीं करता है , इसलिए यह उन्हें संग्रहीत नहीं कर सकता है। वास्तव में, यदि आपको सभी उपयोगकर्ताओं के लिए कुकीज़ की आवश्यकता होती है, तो संभवत: यह आपके पृष्ठ तक पहुंचने से बॉट को रखने वाला है।
  2. Googlebot रूपों - या - जावास्क्रिप्ट को नहीं समझता है, इसलिए आप अपने लिंक को गतिशील रूप से उत्पन्न कर सकते हैं या उपयोगकर्ताओं को आपके कोड तक पहुँचने के लिए एक बटन क्लिक करना होगा (उपयुक्त टोकन संलग्न के साथ)।

    <a href="#" onclick="document.location='rss2html.php?validated=29e0-27fa12-fca4-cae3';">Rss2html.php</a>

    • rss2html.php? सत्यापित? = 29e0-27fa12-fca4-cae3 - मानव
    • rss2html.php - bot

1
जितनी जल्दी आप सोच सकते हैं उतनी जल्दी नहीं। मैंने देखा है कि बॉट्स ने महीनों तक एक ही बिना पृष्ठ वाले पेज को हिट किया, कभी-कभी तो पेज डिलीट होने के सालों बाद भी। निर्भर करता है कि बॉट कितना अच्छा व्यवहार करता है और इसके बाद क्या है।
cHao

मानव आगंतुकों के लिए काम करने का तरीका यह है कि index.php फ़ाइल rss2html.php स्क्रिप्ट को कॉल करती है। बॉट्स index.php स्क्रिप्ट से बचते हैं और सीधे rss2html.php स्क्रिप्ट चलाते हैं। अगर यह index.php स्क्रिप्ट के माध्यम से एक्सेस नहीं किया गया तो मैं उस rss2html.php फ़ाइल को कैसे सुरक्षित रख सकता हूं?

कुछ और करने के लिए rss2html.php का नाम बदलने की कोशिश करें और नए नाम को संदर्भित करने के लिए अपने index.php को अपडेट करें।
BluesRockAddict

मैंने फ़ाइल का नाम बदलने की कोशिश की, लेकिन यह कुछ दिनों के बाद विफल हो जाती है। मैं इस धागे का उपयोग करने वाला कोड कैसे जोड़ सकता हूं? मैं तुम्हें दिखाने की कोशिश करता हूं कि मैंने क्या कोशिश की है।

1
ठीक है - मुझे पता है कि आप एक चाल खींच सकते हैं :) - अपनी वेबसाइट के बाहर rss2html.php स्क्रिप्ट कोड डालें (उत्तर अपडेट करेंगे)

2

मकड़ियों / बॉट्स / ग्राहकों आदि के लिए PHP सीमा / ब्लॉक वेबसाइट अनुरोध

यहां मैंने एक PHP फ़ंक्शन लिखा है जो आपकी वेबसाइट-ट्रैफ़िक को कम करने के लिए अवांछित अनुरोधों को रोक सकता है। मकड़ियों, बॉट्स और कष्टप्रद ग्राहकों के लिए अच्छा है।

ग्राहक / बॉट अवरोधक

DEMO: http://szczepan.info/9-webdesign/php/1-php-limit-block-website-requests-for-spiders-bots-clients-etc.html

कोड:

/* Function which can Block unwanted Requests
 * @return array of error messages
 */
function requestBlocker()
{
        /*
        Version 1.0 11 Jan 2013
        Author: Szczepan K
        http://www.szczepan.info
        me[@] szczepan [dot] info
        ###Description###
        A PHP function which can Block unwanted Requests to reduce your Website-Traffic.
        God for Spiders, Bots and annoying Clients.

        */

        # Before using this function you must 
        # create & set this directory as writeable!!!!
        $dir = 'requestBlocker/';

        $rules   = array(
                #You can add multiple Rules in a array like this one here
                #Notice that large "sec definitions" (like 60*60*60) will blow up your client File
                array(
                        //if >5 requests in 5 Seconds then Block client 15 Seconds
                        'requests' => 5, //5 requests
                        'sek' => 5, //5 requests in 5 Seconds
                        'blockTime' => 15 // Block client 15 Seconds
                ),
                array(
                        //if >10 requests in 30 Seconds then Block client 20 Seconds
                        'requests' => 10, //10 requests
                        'sek' => 30, //10 requests in 30 Seconds
                        'blockTime' => 20 // Block client 20 Seconds
                ),
                array(
                        //if >200 requests in 1 Hour then Block client 10 Minutes
                        'requests' => 200, //200 requests
                        'sek' => 60 * 60, //200 requests in 1 Hour
                        'blockTime' => 60 * 10 // Block client 10 Minutes
                )
        );
        $time    = time();
        $blockIt = array();
        $user    = array();

        #Set Unique Name for each Client-File 
        $user[] = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : 'IP_unknown';
        $user[] = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '';
        $user[] = strtolower(gethostbyaddr($user[0]));

        # Notice that I use files because bots do not accept Sessions
        $botFile = $dir . substr($user[0], 0, 8) . '_' . substr(md5(join('', $user)), 0, 5) . '.txt';


        if (file_exists($botFile)) {
                $file   = file_get_contents($botFile);
                $client = unserialize($file);

        } else {
                $client                = array();
                $client['time'][$time] = 0;
        }

        # Set/Unset Blocktime for blocked Clients
        if (isset($client['block'])) {
                foreach ($client['block'] as $ruleNr => $timestampPast) {
                        $elapsed = $time - $timestampPast;
                        if (($elapsed ) > $rules[$ruleNr]['blockTime']) {
                                unset($client['block'][$ruleNr]);
                                continue;
                        }
                        $blockIt[] = 'Block active for Rule: ' . $ruleNr . ' - unlock in ' . ($elapsed - $rules[$ruleNr]['blockTime']) . ' Sec.';
                }
                if (!empty($blockIt)) {
                        return $blockIt;
                }
        }

        # log/count each access
        if (!isset($client['time'][$time])) {
                $client['time'][$time] = 1;
        } else {
                $client['time'][$time]++;

        }

        #check the Rules for Client
        $min = array(
                0
        );
        foreach ($rules as $ruleNr => $v) {
                $i            = 0;
                $tr           = false;
                $sum[$ruleNr] = 0;
                $requests     = $v['requests'];
                $sek          = $v['sek'];
                foreach ($client['time'] as $timestampPast => $count) {
                        if (($time - $timestampPast) < $sek) {
                                $sum[$ruleNr] += $count;
                                if ($tr == false) {
                                        #register non-use Timestamps for File 
                                        $min[] = $i;
                                        unset($min[0]);
                                        $tr = true;
                                }
                        }
                        $i++;
                }

                if ($sum[$ruleNr] > $requests) {
                        $blockIt[]                = 'Limit : ' . $ruleNr . '=' . $requests . ' requests in ' . $sek . ' seconds!';
                        $client['block'][$ruleNr] = $time;
                }
        }
        $min = min($min) - 1;
        #drop non-use Timestamps in File 
        foreach ($client['time'] as $k => $v) {
                if (!($min <= $i)) {
                        unset($client['time'][$k]);
                }
        }
        $file = file_put_contents($botFile, serialize($client));


        return $blockIt;

}


if ($t = requestBlocker()) {
        echo 'dont pass here!';
        print_R($t);
} else {
        echo "go on!";
}

1

यह संभावना है कि आपकी साइट नकली google bot (s) द्वारा अनुक्रमित की जा रही है। आप सभी फर्जी गूगल बॉट अनुरोधों के लिए एक चेक जोड़ने और 404 परोसने का प्रयास कर सकते हैं।

यहां एक लेख है जो बताता है कि Googlebot कैसे सत्यापित करें: http://googlewebmastercentral.blogspot.com/2006/09/how-to-verify-googlebot.html

इसके अलावा, आप ज्ञात नकली बॉट के खिलाफ अपने रिकॉर्ड की जांच कर सकते हैं: http ://stopmal अंतर्दृष्टि.com / security / fake-google- bbs.html


धन्यवाद, लेकिन वास्तव में मैंने यह भी कोशिश की कि उपयोगकर्ता एजेंटों का निर्धारण किया जाए और बॉट्स को एक लॉगिन पृष्ठ पर भेजा जाए। यह भी विफल रहा।

लगता है जैसे आप बिंदु को याद कर रहे हैं - बॉट प्रामाणिकता का निर्धारण करने के लिए उपयोगकर्ता एजेंट पर भरोसा करना पर्याप्त नहीं है।
ब्लूसरॉकएडक्ट

1

आपको वास्तव में पहली जगह में यह सुनिश्चित करना चाहिए कि आपके पास जो भी अपमानजनक क्रॉलर है, उसके उपयोगकर्ता पृष्ठ से अनुरोध किया गया है, जिसे एक स्थैतिक पृष्ठ पर काम किया जाएगा।

एक अपाचे mod_rewrite एक शर्त के साथ या अपने http सर्वर से लैस है। अपाचे के लिए, कुछ इस तरह से:

RewriteCond  %{HTTP_USER_AGENT}  ^GoogleBot [OR]
RewriteCond  %{HTTP_USER_AGENT}  ^OtherAbusiveBot
RewriteRule  ^/$                 /static_page_for_bots.html  [L]

धन्यवाद, लेकिन मैं पूरी तरह से Google, एमएस बिंग और याहू बॉट्स को ब्लॉक नहीं करना चाहता, लेकिन मैं rss2html.php स्क्रिप्ट फ़ाइल पर सीधे हिट को सीमित करना चाहता हूं। मुझे बस rss2html.php स्क्रिप्ट की शुरुआत में कुछ जोड़ने की ज़रूरत है जो इसे चलाने से रोक देगा अगर इसे index.php स्क्रिप्ट के माध्यम से एक्सेस नहीं किया गया। बॉट्स वर्तमान में index.php फ़ाइल को दरकिनार कर rss2html.php स्क्रिप्ट चला रहे हैं।
सैमी

यह उन्हें ब्लॉक नहीं करता है .. आप बस अपने php के कैश्ड संस्करण की सेवा करते हैं .. यह एक सर्वर टूडू के लिए बहुत आसान है, यह एक कम PHP उदाहरण / एक कम अपाचे बच्चे की प्रक्रिया है। => लागत (स्थिर फ़ाइल) <लागत (PHP उदाहरण)।
12:56

मैं पृष्ठों को कैसे कैश करूंगा? चूँकि पेज RSS हैं, क्या ताज़ा डेटा प्रदान करने के लिए कैश्ड पृष्ठों को अक्सर ताज़ा किया जाएगा?
सैमी १

बेशक ... एक क्रोनजोब लिखो जो आपके लिए करता है। यदि आप कहते हैं कि वे सर्वर 10req / s से टकराते हैं, यदि आप 1 मिनट के लिए पृष्ठों को कैश करते हैं, तो आपने अपने सर्वर को 599 अतिरिक्त php इंस्टेंस (जिसमें निश्चित रूप से db कनेक्शन / क्वेरी शामिल हैं) को सहेजा है .. और एक बार एक मिनट से बहुत अधिक है जो मैं वोट करूँगा के लिए: 10/15 मिनट।
स्मैसी

1

स्मैसी की पोस्ट जारी रखने के लिए, आप कई शर्तें रख सकते हैं:

RewriteCond  %{HTTP_USER_AGENT}  ^GoogleBot [OR]
RewriteCond  %{HTTP_USER_AGENT}  ^OtherAbusiveBot
RewriteRule  ^rss2html\.php$     /static.html  [L]

इस तरह से, बॉट अभी भी आपके पृष्ठों तक पहुंचता है, लेकिन सिर्फ एक ही नहीं। जैसा कि यह अजीब है कि (वैध) बॉट नियमों को नहीं रख रहे हैं, क्या आपके पास कोई संदर्भकर्ता है जो बॉट को अन्य स्रोतों (डोमेन नाम अग्रेषण, ...) से आपके पृष्ठ पर धकेलता है


1

मैंने http://perishablepress.com/blackhole-bad-bots/ पर उपलब्ध स्क्रिप्ट के साथ एक ही समस्या हल की है । इस ब्लैकहोल दृष्टिकोण के साथ मैंने दुर्भावनापूर्ण आईपी की एक सूची एकत्र की, और फिर .htaccess का उपयोग करके उन्हें अस्वीकार कर दिया। (जो अनिवार्य नहीं है, क्योंकि स्क्रिप्ट स्वयं ही प्रतिबंध लगाती है। लेकिन मुझे ज्ञात अवांछित ips के लिए php पार्सिंग से बचने के लिए सर्वर लोड को कम करने की आवश्यकता है) तीन दिनों में मेरा ट्रैफ़िक 5GB प्रति दिन से घटकर 300MB हो गया, जो कि अपेक्षित है।

कई ज्ञात जंक बॉट्स को ब्लॉक करने के लिए htaccess नियमों की पूरी सूची के लिए इस पृष्ठ को भी देखें। http://www.askapache.com/htaccess/blocking-bad-bots-and-scrapers-with-htaccess.html


0
// 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");}

यह स्क्रिप्ट वह नहीं करती जो टिप्पणी कहती है, वास्तव में यह पूरी तरह से विपरीत करता है। यह हमेशा बॉट्स के माध्यम से जाने देगा , क्योंकि बॉट आपकी स्क्रिप्ट का अनुरोध करते समय सत्र चर को कभी भी सेट नहीं करेगा। यह सब संभावित रूप से स्क्रिप्ट को एक से अधिक बार कॉल करने से वैध अनुरोधों (index.php या mobile.php से) को रोक देगा।

किसी बॉट को अपनी स्क्रिप्ट तक पहुंचने से रोकने के लिए आपको केवल तभी एक्सेस की अनुमति देनी चाहिए यदि सत्र चर (या कुकी) वास्तव में सेट है। यह मानते हुए कि (दुर्भावनापूर्ण) बॉट कुकीज़ को स्वीकार नहीं करता है। (हम जानते हैं कि वास्तविक Googlebot नहीं करता है)

जैसा कि पहले ही उल्लेख किया गया है, वेब रूट के ऊपर rss2html.php (सार्वजनिक वेबस्पेस के बाहर) रखने से एक बॉट को सीधे स्क्रिप्ट तक पहुंचने से रोका जा सकेगा - लेकिन आप कहते हैं कि यह अन्य समस्याओं का कारण बनता है? या, इसे एक निर्देशिका में रखें और उस निर्देशिका को .htaccess के साथ सुरक्षित रखें। या आप भी सीधे अनुरोधों से .htaccess में सिर्फ फ़ाइल की रक्षा करने में सक्षम हो सकता है?


0

Cloudflare पर अपना डोमेन सेट करें (इसके लिए निःशुल्क सेवा)। वे आपके सर्वर को हिट करने से पहले डोमेन स्तर पर दुर्भावनापूर्ण बॉट को रोकते हैं। लगभग 20 मिनट लगते हैं, कभी भी कोड के साथ बंदर नहीं करना चाहिए।

मैं अपनी सभी साइटों और सभी क्लाइंट साइटों पर इस सेवा का उपयोग करता हूं। वे लीवरेजिंग प्रोजेक्ट हनी पॉट सहित कई तकनीकों के आधार पर दुर्भावनापूर्ण बॉट्स की पहचान करते हैं।


0

आपको अपाचे / nginx / ईमेल / ftp के लिए अपने सर्वर पर एक SSL प्रमाणपत्र स्थापित करने की आवश्यकता है। HSTS सक्षम करें और आपको अपनी ssl.conf फ़ाइल को भी संपादित करने की आवश्यकता है ताकि SSLv2 SSLv3 TLSv1 अक्षम हो और आने वाले कनेक्शनों को अनुमति न दे। अपने सर्वर को सही तरीके से मजबूत करें और आपके पास बॉट्स से कोई समस्या नहीं होगी।


यह मेरे लिए स्पष्ट नहीं है कि इस मामले में एसएसएल / टीएलएस क्या समस्या हल कर रहा है। ऐसा लगता है कि आप प्रश्न को भीख माँग रहे हैं और परिणाम पर पहुँच रहे हैं। कृपया बताएं कि यह समाधान समस्या को कैसे नियंत्रित करता है।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.