कैसे php के साथ खोज इंजन बॉट का पता लगाने के लिए?


118

Php का उपयोग करके खोज इंजन बॉट का पता कैसे लगाया जा सकता है?

जवाबों:


74

यहां स्पाइडर नामों की एक खोज इंजन निर्देशिका है

फिर आप $_SERVER['HTTP_USER_AGENT'];यह जांचने के लिए उपयोग करते हैं कि एजेंट मकड़ी है या नहीं।

if(strstr(strtolower($_SERVER['HTTP_USER_AGENT']), "googlebot"))
{
    // what to do
}

if ((eregi ("याहू", $ यह-> USER_AGENT)) && (eregi ("slurp", $ यह-> USER_AGENT))) {$ इस-> ब्राउज़र = "स्लरप"; $ यह-> प्रकार = "रोबोट"; } क्या यह काम ठीक रहेगा ??
भयानक

3
क्योंकि स्ट्रैप 0 (स्थिति) को लौटा सकता है, विफलता पर FALSE रिटर्न देता है, यदि आप अंत में एक! == गलत चेक जोड़ते हैं, तो आप स्ट्रैप का उपयोग कर सकते हैं।
लाफुर वेज

2
ईआरएम, विफलता पर भी strposलौटता FALSEहै। यह तेज़ और अधिक कुशल है, हालांकि (कोई प्रीप्रोसेसिंग नहीं है, और कोई ओ (एम) भंडारण नहीं है)।
डेमॉन

6
नकली useragents के बारे में क्या ?!

2
और क्या होगा अगर कोई अपने उपयोगकर्ता एजेंट को नकली नाम के साथ बदल सकता है और इसे "Googlebot" की तरह नाम दे सकता है? मुझे लगता है कि आईपी रेंज की जाँच करना अधिक भरोसेमंद है!
मोजतबा रेज़ियन

235

मैं निम्नलिखित कोड का उपयोग करता हूं जो लगता है कि ठीक काम कर रहा है:

function _bot_detected() {

  return (
    isset($_SERVER['HTTP_USER_AGENT'])
    && preg_match('/bot|crawl|slurp|spider|mediapartners/i', $_SERVER['HTTP_USER_AGENT'])
  );
}

अपडेट 16-06-2017 https://support.google.com/webmasters/answer/1061943?hl=en

जोड़े गए मध्यस्थ


2
क्या यह मान लिया जाता है कि बॉट्स खुद को इस तरह से प्रकट करते हैं?
जेरोमी देवेरा

2
वोट डाउन करें, यूजर एजेंट को क्रोम सेटिंग्स, फायरफॉक्स में बदला जा सकता है,
बड़वानीक

24
हां उपयोगकर्ता को बदला जा सकता है, लेकिन अगर कोई इसे "बॉट", "क्रॉल", "स्लरप", या "स्पाइडर" को बदलने के लिए बदल रहा है, तो उन्हें पता है कि उनके पास क्या आ रहा है। यह उपयोगिता पर भी निर्भर करता है। मैं इसका उपयोग सभी CSS को अलग करने के लिए नहीं करूंगा, लेकिन मैं इसका उपयोग कुकीज़ को स्टोर करने, स्थान लॉगिंग को अनदेखा करने या लैंडिंग पृष्ठ को छोड़ने के लिए नहीं करूंगा।
जॉनशिपमैन

2
क्या कोई मेरे साथ सहमत नहीं है कि यह मैच करने के लिए व्यापक रेंज का एक तरीका है?
दान

मैंने अब 1 दिन से अधिक समय तक आपके फ़ंक्शन का उपयोग किया है और यह काम करने लगता है। किंतु मुझे यकीन नहीं है। अगर यह काम करता है तो मैं परीक्षण बॉट कैसे भेज सकता हूं?
फ़ारिसफहाद

19

$_SERVER['HTTP_USER_AGENT']यहाँ सूचीबद्ध तार में से कुछ के लिए जाँच करें:

http://www.useragentstring.com/pages/useragentstring.php

या अधिक विशेष रूप से क्रॉलर के लिए:

http://www.useragentstring.com/pages/useragentstring.php?typ=Crawler

यदि आप -say- सबसे सामान्य खोज इंजन क्रॉलर की विज़िट की संख्या लॉग इन करना चाहते हैं, तो आप उपयोग कर सकते हैं

$interestingCrawlers = array( 'google', 'yahoo' );
$pattern = '/(' . implode('|', $interestingCrawlers) .')/';
$matches = array();
$numMatches = preg_match($pattern, strtolower($_SERVER['HTTP_USER_AGENT']), $matches, 'i');
if($numMatches > 0) // Found a match
{
  // $matches[1] contains an array of all text matches to either 'google' or 'yahoo'
}

16

आप चेकआउट कर सकते हैं कि क्या यह इस फ़ंक्शन के साथ एक खोज इंजन है:

<?php
function crawlerDetect($USER_AGENT)
{
$crawlers = array(
'Google' => 'Google',
'MSN' => 'msnbot',
      'Rambler' => 'Rambler',
      'Yahoo' => 'Yahoo',
      'AbachoBOT' => 'AbachoBOT',
      'accoona' => 'Accoona',
      'AcoiRobot' => 'AcoiRobot',
      'ASPSeek' => 'ASPSeek',
      'CrocCrawler' => 'CrocCrawler',
      'Dumbot' => 'Dumbot',
      'FAST-WebCrawler' => 'FAST-WebCrawler',
      'GeonaBot' => 'GeonaBot',
      'Gigabot' => 'Gigabot',
      'Lycos spider' => 'Lycos',
      'MSRBOT' => 'MSRBOT',
      'Altavista robot' => 'Scooter',
      'AltaVista robot' => 'Altavista',
      'ID-Search Bot' => 'IDBot',
      'eStyle Bot' => 'eStyle',
      'Scrubby robot' => 'Scrubby',
      'Facebook' => 'facebookexternalhit',
  );
  // to get crawlers string used in function uncomment it
  // it is better to save it in string than use implode every time
  // global $crawlers
   $crawlers_agents = implode('|',$crawlers);
  if (strpos($crawlers_agents, $USER_AGENT) === false)
      return false;
    else {
    return TRUE;
    }
}
?>

तब आप इसका उपयोग कर सकते हैं जैसे:

<?php $USER_AGENT = $_SERVER['HTTP_USER_AGENT'];
  if(crawlerDetect($USER_AGENT)) return "no need to lang redirection";?>

2
मुझे लगता है कि इस सूची में पुरानी है, मैं "slurp" दिखाई नहीं देता उदाहरण जो याहू है के लिए यह मकड़ी है help.yahoo.com/kb/SLN22600.html
दान

11

मैं बॉट का पता लगाने के लिए इसका उपयोग कर रहा हूं:

if (preg_match('/bot|crawl|curl|dataprovider|search|get|spider|find|java|majesticsEO|google|yahoo|teoma|contaxe|yandex|libwww-perl|facebookexternalhit/i', $_SERVER['HTTP_USER_AGENT'])) {
    // is bot
}

इसके अलावा मैं अवांछित बॉट्स को ब्लॉक करने के लिए एक श्वेतसूची का उपयोग करती हूं:

if (preg_match('/apple|baidu|bingbot|facebookexternalhit|googlebot|-google|ia_archiver|msnbot|naverbot|pingdom|seznambot|slurp|teoma|twitter|yandex|yeti/i', $_SERVER['HTTP_USER_AGENT'])) {
    // allowed bot
}

एक अवांछित बॉट (= गलत-सकारात्मक उपयोगकर्ता) फिर 24 घंटों के लिए खुद को अनब्लॉक करने के लिए कैप्चा को हल करने में सक्षम है। और जैसा कि कोई भी इस कैप्चा को हल नहीं करता है, मुझे पता है कि यह गलत-सकारात्मक का उत्पादन नहीं करता है। तो बॉट डिटेक्शन पूरी तरह से काम करने लगता है।

नोट: मेरा श्वेतसूची Facebooks robots.txt पर आधारित है ।


आप )कोड के अपने पहले टुकड़े में एक समापन भूल गए ।
लूडो - ऑफ रिकॉर्ड

10

क्योंकि कोई भी ग्राहक उपयोगकर्ता-एजेंट को जो कुछ भी चाहते हैं, उसे 'Googlebot', 'bingbot' इत्यादि की तलाश में सेट कर सकता है।

दूसरा भाग क्लाइंट के आईपी का सत्यापन कर रहा है। पुराने दिनों में यह आईपी सूचियों को बनाए रखना आवश्यक था। ऑनलाइन मिलने वाली सभी सूचियां पुरानी हो चुकी हैं। शीर्ष खोज इंजन आधिकारिक तौर पर DNS के माध्यम से सत्यापन का समर्थन करते हैं, जैसा कि Google https://support.google.com/webmasters/answer/80553 और Bing http://www.bing.com/webmaster/help/how-to-verify द्वारा समझाया गया है -bingbot-3905dc26

सबसे पहले क्लाइंट IP का रिवर्स DNS लुकअप करें। Google के लिए यह googlebot.com के तहत एक होस्ट नाम लाता है, बिंग के लिए यह search.msn.com के अंतर्गत है। फिर, क्योंकि कोई व्यक्ति अपने आईपी पर इस तरह के रिवर्स DNS को सेट कर सकता है, आपको उस होस्टनाम पर फॉरवर्ड DNS लुकअप के साथ सत्यापित करने की आवश्यकता है। यदि परिणामी आईपी साइट के विज़िटर में से एक के समान है, तो आपको यकीन है कि यह उस खोज इंजन से क्रॉलर है।

मैंने जावा में एक लाइब्रेरी लिखी है जो आपके लिए ये चेक करती है। इसे PHP में पोर्ट करने के लिए स्वतंत्र महसूस करें। यह GitHub पर है: https://github.com/optimaize/webcrawler-verifier


1
उपयोगकर्ता-एजेंट स्ट्रिंग्स का उपयोग करने वाले सभी अन्य उत्तर केवल आधे रास्ते में हैं। वाह।
mlissner

1
उपयोगकर्ता-एजेंट की जाँच के बारे में कई टिप्पणियां हैं जो केवल आधा चेक है। यह सच है, लेकिन ध्यान रखें, पूर्ण DNS और रिवर्स DNS लुकअप करने के लिए एक बड़ा प्रदर्शन प्रभाव है। यह सब आपके उपयोग के मामले का समर्थन करने के लिए निश्चितता के स्तर पर निर्भर करता है। यह प्रदर्शन की कीमत पर 100% निश्चितता के लिए है। आपको यह तय करना होगा कि आपकी स्थिति के लिए सही संतुलन (और इसलिए सबसे अच्छा समाधान) क्या है।
ब्रैडी एमर्सन

कोई "विशाल प्रदर्शन प्रभाव" नहीं है। सबसे पहले, रिवर्स डीएनएस लुकअप केवल खोज इंजन के रूप में पहचान करने वाले आगंतुकों पर किया जाता है। सभी इंसान इससे प्रभावित नहीं होते हैं। फिर, यह लुकअप केवल एक बार IP के अनुसार किया जाता है। परिणाम कैश्ड है। खोज इंजन बहुत लंबे समय तक एक ही आईपी रेंज का उपयोग करते रहते हैं, और आमतौर पर केवल एक या कुछ आईपी के साथ एक साइट को हिट करते हैं। इसके अलावा: आप विलंबित सत्यापन कर सकते हैं। पहले अनुरोध के माध्यम से जाने दो, फिर पृष्ठभूमि-मान्य करें। और अगर नकारात्मक है, तो लगातार अनुरोधों को रोकें। (मैं इसके खिलाफ सलाह दूंगा क्योंकि हार्वेस्टर के पास अब बड़े आईपी पूल हैं ...)
फेबियन केसलर

क्या PHP में कुछ simular पुस्तकालय लिखा है?
userlond

8

मैं इस फ़ंक्शन का उपयोग करता हूं ... रेगेक्स का हिस्सा प्रेस्टैसोप से आता है लेकिन मैंने इसमें कुछ और बॉट जोड़ा है।

    public function isBot()
{
    $bot_regex = '/BotLink|bingbot|AhrefsBot|ahoy|AlkalineBOT|anthill|appie|arale|araneo|AraybOt|ariadne|arks|ATN_Worldwide|Atomz|bbot|Bjaaland|Ukonline|borg\-bot\/0\.9|boxseabot|bspider|calif|christcrawler|CMC\/0\.01|combine|confuzzledbot|CoolBot|cosmos|Internet Cruiser Robot|cusco|cyberspyder|cydralspider|desertrealm, desert realm|digger|DIIbot|grabber|downloadexpress|DragonBot|dwcp|ecollector|ebiness|elfinbot|esculapio|esther|fastcrawler|FDSE|FELIX IDE|ESI|fido|H�m�h�kki|KIT\-Fireball|fouineur|Freecrawl|gammaSpider|gazz|gcreep|golem|googlebot|griffon|Gromit|gulliver|gulper|hambot|havIndex|hotwired|htdig|iajabot|INGRID\/0\.1|Informant|InfoSpiders|inspectorwww|irobot|Iron33|JBot|jcrawler|Teoma|Jeeves|jobo|image\.kapsi\.net|KDD\-Explorer|ko_yappo_robot|label\-grabber|larbin|legs|Linkidator|linkwalker|Lockon|logo_gif_crawler|marvin|mattie|mediafox|MerzScope|NEC\-MeshExplorer|MindCrawler|udmsearch|moget|Motor|msnbot|muncher|muninn|MuscatFerret|MwdSearch|sharp\-info\-agent|WebMechanic|NetScoop|newscan\-online|ObjectsSearch|Occam|Orbsearch\/1\.0|packrat|pageboy|ParaSite|patric|pegasus|perlcrawler|phpdig|piltdownman|Pimptrain|pjspider|PlumtreeWebAccessor|PortalBSpider|psbot|Getterrobo\-Plus|Raven|RHCS|RixBot|roadrunner|Robbie|robi|RoboCrawl|robofox|Scooter|Search\-AU|searchprocess|Senrigan|Shagseeker|sift|SimBot|Site Valet|skymob|SLCrawler\/2\.0|slurp|ESI|snooper|solbot|speedy|spider_monkey|SpiderBot\/1\.0|spiderline|nil|suke|http:\/\/www\.sygol\.com|tach_bw|TechBOT|templeton|titin|topiclink|UdmSearch|urlck|Valkyrie libwww\-perl|verticrawl|Victoria|void\-bot|Voyager|VWbot_K|crawlpaper|wapspider|WebBandit\/1\.0|webcatcher|T\-H\-U\-N\-D\-E\-R\-S\-T\-O\-N\-E|WebMoose|webquest|webreaper|webs|webspider|WebWalker|wget|winona|whowhere|wlm|WOLP|WWWC|none|XGET|Nederland\.zoek|AISearchBot|woriobot|NetSeer|Nutch|YandexBot|YandexMobileBot|SemrushBot|FatBot|MJ12bot|DotBot|AddThis|baiduspider|SeznamBot|mod_pagespeed|CCBot|openstat.ru\/Bot|m2e/i';
    $userAgent = empty($_SERVER['HTTP_USER_AGENT']) ? FALSE : $_SERVER['HTTP_USER_AGENT'];
    $isBot = !$userAgent || preg_match($bot_regex, $userAgent);

    return $isBot;
}

वैसे भी इस बात का ख्याल रखें कि कुछ बॉट अपनी पहचान को नकली बनाने के लिए यूजर एजेंट जैसे ब्राउज़र का उपयोग करते हैं
(मुझे कई रूसी आईपी मिले हैं, जो मेरी साइट पर यह व्यवहार करते हैं)

अधिकांश बॉट की एक विशिष्ट विशेषता यह है कि वे कोई कुकी नहीं ले जाते हैं और इसलिए उनके साथ कोई सत्र नहीं जुड़ा होता है।
(मुझे यकीन नहीं है कि कैसे लेकिन यह सुनिश्चित करने के लिए है कि उन्हें ट्रैक करने का सबसे अच्छा तरीका है)


6

आप उपयोगकर्ता एजेंट ( $_SERVER['HTTP_USER_AGENT']) का विश्लेषण कर सकते हैं या खोज इंजन बॉट के आईपी पते की सूची के$_SERVER['REMOTE_ADDR'] साथ ग्राहक के आईपी पते ( ) की तुलना कर सकते हैं ।


2
यदि आप उपयोगकर्ता एजेंट नाम के बारे में सुनिश्चित करना चाहते हैं तो आईपी सूची अधिक सुरक्षित है, क्योंकि यह वास्तव में एक खोज इंजन बॉट है, क्योंकि नाम से नकली उपयोगकर्ता-एजेंट बनाना संभव है।
मोजतबा रेज़ियन

5

डिवाइस डिटेक्टर ओपन सोर्स लाइब्रेरी का उपयोग करें, यह एक isBot () फ़ंक्शन प्रदान करता है: https://github.com/piwik/device.ditector


नोट: यह लाइब्रेरी केवल यह तय करने के लिए उपयोगकर्ता एजेंट का विश्लेषण करती है कि आगंतुक बॉट है या नहीं।
फिलिप

बहुत भारी, बस एक सत्यापित बॉट की जांच करने के लिए।
जोएल जेम्स

4
 <?php // IPCLOACK HOOK
if (CLOAKING_LEVEL != 4) {
    $lastupdated = date("Ymd", filemtime(FILE_BOTS));
    if ($lastupdated != date("Ymd")) {
        $lists = array(
        'http://labs.getyacg.com/spiders/google.txt',
        'http://labs.getyacg.com/spiders/inktomi.txt',
        'http://labs.getyacg.com/spiders/lycos.txt',
        'http://labs.getyacg.com/spiders/msn.txt',
        'http://labs.getyacg.com/spiders/altavista.txt',
        'http://labs.getyacg.com/spiders/askjeeves.txt',
        'http://labs.getyacg.com/spiders/wisenut.txt',
        );
        foreach($lists as $list) {
            $opt .= fetch($list);
        }
        $opt = preg_replace("/(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+/", "\n", $opt);
        $fp =  fopen(FILE_BOTS,"w");
        fwrite($fp,$opt);
        fclose($fp);
    }
    $ip = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '';
    $ref = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';
    $agent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '';
    $host = strtolower(gethostbyaddr($ip));
    $file = implode(" ", file(FILE_BOTS));
    $exp = explode(".", $ip);
    $class = $exp[0].'.'.$exp[1].'.'.$exp[2].'.';
    $threshold = CLOAKING_LEVEL;
    $cloak = 0;
    if (stristr($host, "googlebot") && stristr($host, "inktomi") && stristr($host, "msn")) {
        $cloak++;
    }
    if (stristr($file, $class)) {
        $cloak++;
    }
    if (stristr($file, $agent)) {
        $cloak++;
    }
    if (strlen($ref) > 0) {
        $cloak = 0;
    }

    if ($cloak >= $threshold) {
        $cloakdirective = 1;
    } else {
        $cloakdirective = 0;
    }
}
?>

यह मकड़ियों के लिए लबादा लगाने का आदर्श तरीका होगा। यह एक ओपन सोर्स स्क्रिप्ट से है जिसे [YACG] - http://getyacg.com कहा जाता है

थोड़ा काम चाहिए, लेकिन निश्चित रूप से जाने का रास्ता।


2

मैंने इसके लिए एक अच्छा और तेज कार्य किया

function is_bot(){

        if(isset($_SERVER['HTTP_USER_AGENT']))
        {
            return preg_match('/rambler|abacho|acoi|accona|aspseek|altavista|estyle|scrubby|lycos|geona|ia_archiver|alexa|sogou|skype|facebook|twitter|pinterest|linkedin|naver|bing|google|yahoo|duckduckgo|yandex|baidu|teoma|xing|java\/1.7.0_45|bot|crawl|slurp|spider|mediapartners|\sask\s|\saol\s/i', $_SERVER['HTTP_USER_AGENT']);
        }

        return false;
    }

यह 99% सभी संभावित बॉट, सर्च इंजन आदि को कवर करता है।


1

मैं इस कोड का उपयोग कर रहा हूँ, बहुत अच्छा। आपको यह जानकर बहुत आसानी होगी कि उपयोगकर्ता-एजेंट आपकी साइट को देख चुके हैं। यह कोड एक फाइल खोल रहा है और फाइल को नीचे user_agent लिखें। आप प्रत्येक दिन इस फ़ाइल को चेक करके जा सकते हैं yourdomain.com/useragent.txtऔर नए user_agents के बारे में जान सकते हैं और यदि खंड में हैं तो उन्हें अपनी स्थिति में रख सकते हैं।

$user_agent = strtolower($_SERVER['HTTP_USER_AGENT']);
if(!preg_match("/Googlebot|MJ12bot|yandexbot/i", $user_agent)){
    // if not meet the conditions then
    // do what you need

    // here open a file and write the user_agent down the file. You can check each day this file useragent.txt and know about new user_agents and put them in your condition of if clause
    if($user_agent!=""){
        $myfile = fopen("useragent.txt", "a") or die("Unable to open file useragent.txt!");
        fwrite($myfile, $user_agent);
        $user_agent = "\n";
        fwrite($myfile, $user_agent);
        fclose($myfile);
    }
}

यह useragent.txt की सामग्री है

Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
Mozilla/5.0 (compatible; MJ12bot/v1.4.6; http://mj12bot.com/)Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.96 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)mozilla/5.0 (compatible; yandexbot/3.0; +http://yandex.com/bots)
mozilla/5.0 (compatible; yandexbot/3.0; +http://yandex.com/bots)
mozilla/5.0 (compatible; yandexbot/3.0; +http://yandex.com/bots)
mozilla/5.0 (compatible; yandexbot/3.0; +http://yandex.com/bots)
mozilla/5.0 (compatible; yandexbot/3.0; +http://yandex.com/bots)
mozilla/5.0 (iphone; cpu iphone os 9_3 like mac os x) applewebkit/601.1.46 (khtml, like gecko) version/9.0 mobile/13e198 safari/601.1
mozilla/5.0 (windows nt 6.1; wow64) applewebkit/537.36 (khtml, like gecko) chrome/53.0.2785.143 safari/537.36
mozilla/5.0 (compatible; linkdexbot/2.2; +http://www.linkdex.com/bots/)
mozilla/5.0 (windows nt 6.1; wow64; rv:49.0) gecko/20100101 firefox/49.0
mozilla/5.0 (windows nt 6.1; wow64; rv:33.0) gecko/20100101 firefox/33.0
mozilla/5.0 (windows nt 6.1; wow64; rv:49.0) gecko/20100101 firefox/49.0
mozilla/5.0 (windows nt 6.1; wow64; rv:33.0) gecko/20100101 firefox/33.0
mozilla/5.0 (windows nt 6.1; wow64; rv:49.0) gecko/20100101 firefox/49.0
mozilla/5.0 (windows nt 6.1; wow64; rv:33.0) gecko/20100101 firefox/33.0
mozilla/5.0 (windows nt 6.1; wow64; rv:49.0) gecko/20100101 firefox/49.0
mozilla/5.0 (windows nt 6.1; wow64; rv:33.0) gecko/20100101 firefox/33.0
mozilla/5.0 (windows nt 6.1; wow64) applewebkit/537.36 (khtml, like gecko) chrome/53.0.2785.143 safari/537.36
mozilla/5.0 (windows nt 6.1; wow64) applewebkit/537.36 (khtml, like gecko) chrome/53.0.2785.143 safari/537.36
mozilla/5.0 (compatible; baiduspider/2.0; +http://www.baidu.com/search/spider.html)
zoombot (linkbot 1.0 http://suite.seozoom.it/bot.html)
mozilla/5.0 (windows nt 10.0; wow64) applewebkit/537.36 (khtml, like gecko) chrome/44.0.2403.155 safari/537.36 opr/31.0.1889.174
mozilla/5.0 (windows nt 10.0; wow64) applewebkit/537.36 (khtml, like gecko) chrome/44.0.2403.155 safari/537.36 opr/31.0.1889.174
sogou web spider/4.0(+http://www.sogou.com/docs/help/webmasters.htm#07)
mozilla/5.0 (windows nt 10.0; wow64) applewebkit/537.36 (khtml, like gecko) chrome/44.0.2403.155 safari/537.36 opr/31.0.1889.174

इसके लिए आपका (if_clause) स्ट्रिंग पीस क्या होगा? mozilla / 5.0 (iphone; cpu iphone os 9_3 like mac os x) applewebkit / 601.1.46 (khtml, जेको की तरह) संस्करण / 9.0 मोबाइल / 13e198 सफारी / 601.1
औसतन

1

100% वर्किंग बॉट डिटेक्टर। यह मेरी वेबसाइट पर सफलतापूर्वक काम कर रहा है।

function isBotDetected() {

    if ( preg_match('/abacho|accona|AddThis|AdsBot|ahoy|AhrefsBot|AISearchBot|alexa|altavista|anthill|appie|applebot|arale|araneo|AraybOt|ariadne|arks|aspseek|ATN_Worldwide|Atomz|baiduspider|baidu|bbot|bingbot|bing|Bjaaland|BlackWidow|BotLink|bot|boxseabot|bspider|calif|CCBot|ChinaClaw|christcrawler|CMC\/0\.01|combine|confuzzledbot|contaxe|CoolBot|cosmos|crawler|crawlpaper|crawl|curl|cusco|cyberspyder|cydralspider|dataprovider|digger|DIIbot|DotBot|downloadexpress|DragonBot|DuckDuckBot|dwcp|EasouSpider|ebiness|ecollector|elfinbot|esculapio|ESI|esther|eStyle|Ezooms|facebookexternalhit|facebook|facebot|fastcrawler|FatBot|FDSE|FELIX IDE|fetch|fido|find|Firefly|fouineur|Freecrawl|froogle|gammaSpider|gazz|gcreep|geona|Getterrobo-Plus|get|girafabot|golem|googlebot|\-google|grabber|GrabNet|griffon|Gromit|gulliver|gulper|hambot|havIndex|hotwired|htdig|HTTrack|ia_archiver|iajabot|IDBot|Informant|InfoSeek|InfoSpiders|INGRID\/0\.1|inktomi|inspectorwww|Internet Cruiser Robot|irobot|Iron33|JBot|jcrawler|Jeeves|jobo|KDD\-Explorer|KIT\-Fireball|ko_yappo_robot|label\-grabber|larbin|legs|libwww-perl|linkedin|Linkidator|linkwalker|Lockon|logo_gif_crawler|Lycos|m2e|majesticsEO|marvin|mattie|mediafox|mediapartners|MerzScope|MindCrawler|MJ12bot|mod_pagespeed|moget|Motor|msnbot|muncher|muninn|MuscatFerret|MwdSearch|NationalDirectory|naverbot|NEC\-MeshExplorer|NetcraftSurveyAgent|NetScoop|NetSeer|newscan\-online|nil|none|Nutch|ObjectsSearch|Occam|openstat.ru\/Bot|packrat|pageboy|ParaSite|patric|pegasus|perlcrawler|phpdig|piltdownman|Pimptrain|pingdom|pinterest|pjspider|PlumtreeWebAccessor|PortalBSpider|psbot|rambler|Raven|RHCS|RixBot|roadrunner|Robbie|robi|RoboCrawl|robofox|Scooter|Scrubby|Search\-AU|searchprocess|search|SemrushBot|Senrigan|seznambot|Shagseeker|sharp\-info\-agent|sift|SimBot|Site Valet|SiteSucker|skymob|SLCrawler\/2\.0|slurp|snooper|solbot|speedy|spider_monkey|SpiderBot\/1\.0|spiderline|spider|suke|tach_bw|TechBOT|TechnoratiSnoop|templeton|teoma|titin|topiclink|twitterbot|twitter|UdmSearch|Ukonline|UnwindFetchor|URL_Spider_SQL|urlck|urlresolver|Valkyrie libwww\-perl|verticrawl|Victoria|void\-bot|Voyager|VWbot_K|wapspider|WebBandit\/1\.0|webcatcher|WebCopier|WebFindBot|WebLeacher|WebMechanic|WebMoose|webquest|webreaper|webspider|webs|WebWalker|WebZip|wget|whowhere|winona|wlm|WOLP|woriobot|WWWC|XGET|xing|yahoo|YandexBot|YandexMobileBot|yandex|yeti|Zeus/i', $_SERVER['HTTP_USER_AGENT'])
    ) {
        return true; // 'Above given bots detected'
    }

    return false;

} // End :: isBotDetected()

1

यदि आपको वास्तव में GOOGLE इंजन बॉट्स का पता लगाने की आवश्यकता है, तो आपको "user_agent" या "IP" पते पर कभी भी भरोसा नहीं करना चाहिए क्योंकि "user_agent" को बदला जा सकता है और जो Google में कहा गया है उसके अनुसार हो सकता है: Googlebot सत्यापित करना

Googlebot को कॉलर के रूप में सत्यापित करने के लिए:

1. होस्ट कमांड का उपयोग करके अपने लॉग से एक्सेस आईपी पते पर रिवर्स डीएनएस लुकअप करें।

2. सत्यापित करें कि डोमेन नाम या तो googlebot.com या google.com में है

3. पुनः प्राप्त डोमेन नाम पर होस्ट कमांड का उपयोग करके चरण 1 में प्राप्त डोमेन नाम पर एक आगे डीएनएस लुकअप । सत्यापित करें कि यह आपके लॉग से मूल एक्सेस करने वाले आईपी पते के समान है।

यहाँ मेरा परीक्षण कोड है:

<?php
$remote_add=$_SERVER['REMOTE_ADDR'];
$hostname = gethostbyaddr($remote_add);
$googlebot = 'googlebot.com';
$google = 'google.com';
if (stripos(strrev($hostname), strrev($googlebot)) === 0 or stripos(strrev($hostname),strrev($google)) === 0 ) 
{
//add your code
}

?>

इस कोड में हम "hostname" की जांच करते हैं, जिसमें "hostname" के अंत में "googlebot.com" या "google.com" होना चाहिए जो कि सटीक डोमेन की जांच करने के लिए वास्तव में महत्वपूर्ण है न कि उप डोमेन। मैं आशा करता हु की आप आनंद लोगे ;)


0

Google के लिए मैं इस विधि का उपयोग कर रहा हूँ।

function is_google() {
    $ip   = $_SERVER['REMOTE_ADDR'];
    $host = gethostbyaddr( $ip );
    if ( strpos( $host, '.google.com' ) !== false || strpos( $host, '.googlebot.com' ) !== false ) {

        $forward_lookup = gethostbyname( $host );

        if ( $forward_lookup == $ip ) {
            return true;
        }

        return false;
    } else {
        return false;
    }

}

var_dump( is_google() );

क्रेडिट: https://support.google.com/webmasters/answer/80553


-1
function bot_detected() {

  if(preg_match('/bot|crawl|slurp|spider|mediapartners/i', $_SERVER['HTTP_USER_AGENT']){
    return true;
  }
  else{
    return false;
  }
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.