làm thế nào để phát hiện các chương trình công cụ tìm kiếm với php?


118

Làm thế nào người ta có thể phát hiện ra các chương trình công cụ tìm kiếm sử dụng php?

Câu trả lời:


74

Đây là Danh mục Công cụ Tìm kiếm về tên Nhện

Sau đó, bạn sử dụng $_SERVER['HTTP_USER_AGENT'];để kiểm tra xem tác nhân được cho là nhện.

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

if ((("yahoo", $ this-> USER_AGENT)) && (("slurp", $ this-> USER_AGENT))) {$ this-> Browser = "Yahoo! Slurp"; $ this-> Type = "robot"; } cái này sẽ hoạt động tốt chứ ??
tuyệt vời

3
Bởi vì strpos có thể trả về 0 (vị trí), strstr trả về FALSE khi không thành công, bạn có thể sử dụng strpos nếu bạn thêm dấu kiểm! == false vào cuối.
Ólafur Waage

2
Erm, cũng strpostrở về sau FALSEkhi thất bại. Tuy nhiên, nó nhanh hơn và hiệu quả hơn (không xử lý trước và không có bộ nhớ O (m)).
Damon

6
Còn về những chất sử dụng giả ?!

2
Và điều gì sẽ xảy ra nếu ai đó có thể thay đổi tác nhân người dùng của mình bằng tên giả và đặt tên nó như "Googlebot"? Tôi nghĩ rằng việc kiểm tra dải ip đáng tin cậy hơn!
Mojtaba Rezaeian

235

Tôi sử dụng mã sau đây có vẻ như đang hoạt động tốt:

function _bot_detected() {

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

cập nhật 16-06-2017 https://support.google.com/webmasters/answer/1061943?hl=vi

đã thêm người trung gian


2
Điều này có giả định rằng bot tiết lộ bản thân như vậy không?
Jeromie Devera,

2
Bỏ phiếu bác, user agent có thể được thay đổi trong chrome cài đặt, firefox,
barwnikk

24
Có, useragent có thể được thay đổi, nhưng nếu ai đó đang thay đổi nó để chứa "bot", "crawl", "slurp" hoặc "spider" sẽ biết điều gì đang đến với họ. Nó cũng phụ thuộc vào tiện ích. Tôi sẽ không sử dụng điều này để loại bỏ tất cả CSS, nhưng tôi sẽ sử dụng điều này để không lưu trữ cookie, bỏ qua ghi vị trí hoặc bỏ qua trang đích.
JonShipman

2
Có ai không đồng ý với tôi rằng đây là một cách để phạm vi rộng để phù hợp?
Daan

Tôi đã sử dụng chức năng của bạn hơn 1 ngày nay và nó dường như đang hoạt động. Nhưng tôi không chắc. Làm cách nào để gửi bot kiểm tra để kiểm tra xem nó có hoạt động không?
FarrisFahad

19

Kiểm tra $_SERVER['HTTP_USER_AGENT']một số chuỗi được liệt kê ở đây:

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

Hoặc cụ thể hơn cho trình thu thập thông tin:

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

Nếu bạn muốn ghi lại số lượt truy cập của hầu hết các trình thu thập thông tin công cụ tìm kiếm phổ biến, bạn có thể sử dụng

$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

Bạn có thể kiểm tra nếu đó là một công cụ tìm kiếm có chức năng này:

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

Sau đó, bạn có thể sử dụng nó như:

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

2
Tôi nghĩ danh sách này đã lỗi thời, tôi không thấy "slurp", ví dụ như Yahoo đó là spider help.yahoo.com/kb/SLN22600.html
Daan

11

Tôi đang sử dụng cái này để phát hiện các bot:

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
}

Ngoài ra, tôi sử dụng danh sách trắng để chặn các bot không mong muốn:

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
}

Sau đó, một bot không mong muốn (= người dùng dương tính giả) có thể giải mã hình ảnh xác thực để tự bỏ chặn trong 24 giờ. Và vì không ai giải được captcha này, tôi biết nó không tạo ra kết quả dương tính giả. Vì vậy, việc phát hiện bot dường như hoạt động hoàn hảo.

Lưu ý: Danh sách trắng của tôi dựa trên robots.txt của Facebook .


bạn đã quên đóng )đoạn mã đầu tiên của mình.
Ludo - Không có kỷ lục

10

Bởi vì bất kỳ khách hàng nào cũng có thể đặt tác nhân người dùng theo những gì họ muốn, việc tìm kiếm 'Googlebot', 'bingbot', v.v. chỉ là một nửa công việc.

Phần thứ 2 là xác minh IP của khách hàng. Ngày xưa, điều này yêu cầu duy trì danh sách IP. Tất cả các danh sách bạn tìm thấy trực tuyến đã lỗi thời. Các công cụ tìm kiếm hàng đầu chính thức hỗ trợ xác minh thông qua DNS, như được giải thích bởi Google https://support.google.com/webmasters/answer/80553 và Bing http://www.bing.com/webmaster/help/how-to-verify -bingbot-3905dc26

Đầu tiên, thực hiện tra cứu DNS ngược của IP máy khách. Đối với Google, điều này mang tên máy chủ lưu trữ dưới googlebot.com, đối với Bing, nó nằm dưới search.msn.com. Sau đó, vì ai đó có thể đặt một DNS ngược như vậy trên IP của họ, bạn cần xác minh bằng cách tra cứu DNS chuyển tiếp trên tên máy chủ đó. Nếu IP kết quả giống với IP của một trong những khách truy cập trang web, bạn chắc chắn rằng đó là một trình thu thập thông tin từ công cụ tìm kiếm đó.

Tôi đã viết một thư viện bằng Java để thực hiện các kiểm tra này cho bạn. Hãy chuyển nó sang PHP. Nó có trên GitHub: https://github.com/optimaize/webcrawler-verifier


1
Tất cả các câu trả lời khác bằng cách sử dụng chuỗi tác nhân người dùng chỉ ở một nửa ở đó. Chà.
mlissner

1
Có nhiều nhận xét về việc kiểm tra tác nhân người dùng chỉ là một nửa kiểm tra. Điều này đúng, nhưng hãy nhớ rằng việc thực hiện tra cứu DNS đầy đủ và DNS ngược có tác động rất lớn đến hiệu suất. Tất cả phụ thuộc vào mức độ chắc chắn bạn cần có để hỗ trợ trường hợp sử dụng của mình. Điều này là chắc chắn 100% với chi phí của hiệu suất. Bạn phải quyết định số dư phù hợp là gì (và do đó là giải pháp tốt nhất) cho tình huống của bạn.
Brady Emerson

Không có "tác động lớn đến hiệu suất". Đầu tiên, tra cứu dns ngược chỉ được thực hiện trên những khách truy cập được xác định là công cụ tìm kiếm. Tất cả con người không bị ảnh hưởng gì cả. Sau đó, việc tra cứu này chỉ được thực hiện một lần cho mỗi IP. Kết quả được lưu vào bộ nhớ đệm. Các công cụ tìm kiếm tiếp tục sử dụng các dải IP giống nhau trong một thời gian rất dài và thường truy cập vào một trang web chỉ có một hoặc một vài IP. Ngoài ra: bạn có thể thực hiện quá trình xác thực bị trì hoãn. Cho phép yêu cầu đầu tiên thông qua, sau đó xác thực nền. Và nếu tiêu cực, hãy ngăn chặn các yêu cầu liên tiếp. (Tôi khuyên bạn không nên làm điều này bởi vì máy thu hoạch hiện có các khu vực IP lớn ...)
Fabian Kessler

Có một số thư viện mô phỏng được viết bằng PHP?
userlond

8

Tôi sử dụng chức năng này ... một phần của regex đến từ prestashop nhưng tôi đã thêm một số bot vào nó.

    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;
}

Dù sao hãy cẩn thận rằng một số bot sử dụng trình duyệt như tác nhân người dùng để giả mạo danh tính của họ
(Tôi có nhiều ip của Nga có hành vi này trên trang web của tôi)

Một đặc điểm khác biệt của hầu hết bot là chúng không mang theo bất kỳ cookie nào và vì vậy không có phiên nào được gắn vào chúng.
(Tôi không chắc làm thế nào nhưng đây chắc chắn là cách tốt nhất để theo dõi chúng)


6

Bạn có thể phân tích tác nhân người dùng ( $_SERVER['HTTP_USER_AGENT']) hoặc so sánh địa chỉ IP của máy khách ( $_SERVER['REMOTE_ADDR']) với danh sách địa chỉ IP của các bot công cụ tìm kiếm .


2
Danh sách IP an toàn hơn nếu bạn muốn đảm bảo tên tác nhân người dùng thực sự là một bot của công cụ tìm kiếm, vì có thể tạo tác nhân người dùng giả mạo theo tên.
Mojtaba Rezaeian

5

Sử dụng thư viện mã nguồn mở Device Detector, nó cung cấp một hàm isBot (): https://github.com/piwik/device-detector


Lưu ý: Thư viện này chỉ phân tích tác nhân người dùng để quyết định xem khách truy cập có phải là bot hay không.
Philipp

Quá nặng, chỉ để kiểm tra một bot xác minh.
Joel James

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

Đó sẽ là cách lý tưởng để mặc áo choàng cho nhện. Nó từ một tập lệnh mã nguồn mở có tên [YACG] - http://getyacg.com

Cần một chút công việc, nhưng chắc chắn là con đường để đi.


2

Tôi đã tạo một chức năng tốt và nhanh chóng cho việc này

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;
    }

Điều này bao gồm 99% tất cả các bot, công cụ tìm kiếm, v.v.


1

Tôi đang sử dụng mã này, khá tốt. Bạn sẽ rất dễ dàng biết các tác nhân người dùng đã truy cập trang web của bạn. Mã này đang mở một tệp và ghi user_agent xuống tệp. Bạn có thể kiểm tra tệp này mỗi ngày bằng cách truy cập yourdomain.com/useragent.txtvà biết về user_agents mới và đặt chúng vào điều kiện của mệnh đề if.

$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);
    }
}

Đây là nội dung của 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

Đoạn chuỗi (if_clause) của bạn cho việc này là gì? 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
Joe trung bình

1

100% máy dò Bot làm việc. Nó đang hoạt động thành công trên trang web của tôi.

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

Nếu bạn thực sự cần để phát hiện chương trình công cụ GOOGLE bạn nên không bao giờ dựa vào "user_agent" hoặc địa chỉ "IP" bởi vì "user_agent" có thể được thay đổi và theo công gì google nói: Xác minh Googlebot

Để xác minh Googlebot là người gọi:

1. Chạy tra cứu DNS ngược trên địa chỉ IP truy cập từ nhật ký của bạn, sử dụng lệnh máy chủ.

2. Xác minh rằng tên miền nằm trong googlebot.com hoặc google.com

3. Chạy tra cứu DNS chuyển tiếp trên tên miền được truy xuất ở bước 1 bằng cách sử dụng lệnh máy chủ lưu trữ trên tên miền đã truy xuất. Xác minh rằng nó giống với địa chỉ IP truy cập ban đầu từ nhật ký của bạn.

Đây là mã đã thử nghiệm của tôi:

<?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
}

?>

Trong mã này, chúng tôi kiểm tra "tên máy chủ" phải chứa "googlebot.com" hoặc "google.com" ở cuối "tên máy chủ", điều này thực sự quan trọng để kiểm tra tên miền chính xác không phải tên miền phụ. Tôi hy vọng bạn vui ;)


0

Đối với Google, tôi đang sử dụng phương pháp này.

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() );

Tín dụng: 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;
  }
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.