Code phát hiện google crawler đang duyệt web trong php

Thảo luận trong 'Ngôn ngữ lập trình web PHP' bắt đầu bởi admin, 11/10/14.

  1. admin
    Tham gia ngày:
    22/5/13
    Bài viết:
    4,997
    Đã được thích:
    1,216
    Điểm thành tích:
    113
    Giới tính:
    Nam
    • Code php phát hiện các công cụ tìm kiếm đang crawler duyệt web hay người dùng đang duyệt web.
    • Code giúp bạn tránh chặn các công cụ này khi sử dụng các tường lửa code trong web để chống ddos và flood web bạn.
    • Khi bạn xây dựng 1 tường lửa cho web bạn rất lo sợ chặn nhầm các ip của google và các công cụ bot spider bing, yahoo và nhiều công cụ khác.
    • Nay ITSEOVN sẽ hướng dẫn code các bạn nếu làm tường lửa thì tránh đừng chặn các ip và spider bot của các công cụ tìm kiếm này.
    • CODE như sau :
    PHP:
    function crawlerDetectWeb($USER_AGENT)
    {
        
    $crawlers = array(
        array(
    'Google''Google'),
        array(
    'msnbot''MSN'),
        array(
    'Rambler''Rambler'),
        array(
    'Yahoo''Yahoo'),
        array(
    'AbachoBOT''AbachoBOT'),
        array(
    'accoona''Accoona'),
        array(
    'AcoiRobot''AcoiRobot'),
        array(
    'ASPSeek''ASPSeek'),
        array(
    'CrocCrawler''CrocCrawler'),
        array(
    'Dumbot''Dumbot'),
        array(
    'FAST-WebCrawler''FAST-WebCrawler'),
        array(
    'GeonaBot''GeonaBot'),
        array(
    'Gigabot''Gigabot'),
        array(
    'Lycos''Lycos spider'),
        array(
    'MSRBOT''MSRBOT'),
        array(
    'Scooter''Altavista robot'),
        array(
    'AltaVista''Altavista robot'),
        array(
    'IDBot''ID-Search Bot'),
        array(
    'eStyle''eStyle Bot'),
        array(
    'Scrubby''Scrubby robot')
        );

        foreach (
    $crawlers as $c)
        {
            if (
    stristr($USER_AGENT$c[0]))
            {
                return(
    $c[1]);
            }
        }

        return 
    false;
    }


    $crawlerweb crawlerDetectWeb($_SERVER['HTTP_USER_AGENT']);

    if(
    $crawlerweb ==false)
    {
        
    //nếu không phải là các công cụ tìm kiếm thì chặn hoặc làm gì đó.
    }
    • Chúc các bạn thành công.
     
    Cảm ơn đã xem bài:

    Code phát hiện google crawler đang duyệt web trong php

  2. admin
    Tham gia ngày:
    22/5/13
    Bài viết:
    4,997
    Đã được thích:
    1,216
    Điểm thành tích:
    113
    Giới tính:
    Nam
    Hoặc nhều khi, google bot đọc mảng rất kém, khiến việc kiểm tra nhiều khi bị sai thì bạn dùng lênh if như sau

    PHP:
    function crawlerDetect($USER_AGENT)
    {

      if(
    stristr($USER_AGENT'Google') != false)
      {
          return 
    'Google';
      }
      elseif(
    stristr($USER_AGENT'msnbot') != false)
      {
          return 
    'msnbot';
      }
      elseif(
    stristr($USER_AGENT'bingbot') != false)
      {
          return 
    'bingbot';
      }
      elseif(
    stristr($USER_AGENT'facebook') != false)
      {
          return 
    'facebook';
      }
      elseif(
    stristr($USER_AGENT'Rambler') != false)
      {
          return 
    'Rambler';
      }
      elseif(
    stristr($USER_AGENT'Yahoo') != false)
      {
          return 
    'Yahoo';
      }
      elseif(
    stristr($USER_AGENT'AbachoBOT') != false)
      {
          return 
    'AbachoBOT';
      }
      elseif(
    stristr($USER_AGENT'accoona') != false)
      {
          return 
    'accoona';
      }
      elseif(
    stristr($USER_AGENT'AcoiRobot') != false)
      {
          return 
    'AcoiRobot';
      }
      elseif(
    stristr($USER_AGENT'ASPSeek') != false)
      {
          return 
    'ASPSeek';
      }
      elseif(
    stristr($USER_AGENT'CrocCrawler') != false)
      {
          return 
    'CrocCrawler';
      }
      elseif(
    stristr($USER_AGENT'Dumbot') != false)
      {
          return 
    'Dumbot';
      }
      elseif(
    stristr($USER_AGENT'FAST-WebCrawler') != false)
      {
          return 
    'FAST-WebCrawler';
      }
      elseif(
    stristr($USER_AGENT'GeonaBot') != false)
      {
          return 
    'GeonaBot';
      }
      elseif(
    stristr($USER_AGENT'Gigabot') != false)
      {
          return 
    'Gigabot';
      }
      elseif(
    stristr($USER_AGENT'Lycos') != false)
      {
          return 
    'Lycos';
      }
      elseif(
    stristr($USER_AGENT'MSRBOT') != false)
      {
          return 
    'MSRBOT';
      }
      elseif(
    stristr($USER_AGENT'Scooter') != false)
      {
          return 
    'Scooter';
      }
      elseif(
    stristr($USER_AGENT'AltaVista') != false)
      {
          return 
    'AltaVista';
      }
      elseif(
    stristr($USER_AGENT'IDBot') != false)
      {
          return 
    'IDBot';
      }
      elseif(
    stristr($USER_AGENT'eStyle') != false)
      {
          return 
    'eStyle';
      }
      elseif(
    stristr($USER_AGENT'Scrubby') != false)
      {
          return 
    'Scrubby';
      }
      return 
    false;
    }

    // search bot id

    $crawler crawlerDetect($_SERVER['HTTP_USER_AGENT']);

    if(
    $crawler==false)
    {
        /
    neu không phải bot thì làm gì đó.
    }
    else
    {
        
    // nếu là bot thì làm gì đó.
    }

     
  3. admin
    Tham gia ngày:
    22/5/13
    Bài viết:
    4,997
    Đã được thích:
    1,216
    Điểm thành tích:
    113
    Giới tính:
    Nam
    Theo mình, thì các bạn nên sử dụng cách 2 đó là kiểm tra bằng lệnh if việc kiểm tra sẽ hoàn hảo 100% hơn là sử dụng vòng for như cách 1 ở trên
     
  4. saudom
    Tham gia ngày:
    7/3/14
    Bài viết:
    11
    Đã được thích:
    0
    Điểm thành tích:
    1
    à. hóa ra mới biết cái HTTP_USER_AGENT để phát hiện con bot nữa
     
  5. chuyengiainfo
    Tham gia ngày:
    2/4/17
    Bài viết:
    4
    Đã được thích:
    0
    Điểm thành tích:
    1
    Giới tính:
    Nữ
    chuyengia(dot)info chúc bạn một ngày tốt lành

    Yêu xa xôi nhớ nhung là vậy
    Chẳng được gần mong hãy hiểu nhau
    Đừng hờn ghen để nước mắt trào
    Không bên cạnh thõa bao nhung nhớ