一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - PHP判斷來訪是搜索引擎蜘蛛還是普通用戶的代碼小結

PHP判斷來訪是搜索引擎蜘蛛還是普通用戶的代碼小結

2020-07-30 17:44PHP教程網 PHP教程

這篇文章主要介紹了PHP判斷來訪是搜索引擎蜘蛛還是普通用戶的代碼小結,多種方法總有一種適合你,防止搜索引擎蜘蛛拖死搜索引擎

1、推薦的一種方法:php判斷搜索引擎蜘蛛爬蟲還是人為訪問代碼,摘自Discuz x3.2

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
function checkrobot($useragent=''){
    static $kw_spiders = array('bot', 'crawl', 'spider' ,'slurp', 'sohu-search', 'lycos', 'robozilla');
    static $kw_browsers = array('msie', 'netscape', 'opera', 'konqueror', 'mozilla');
 
    $useragent = strtolower(empty($useragent) ? $_SERVER['HTTP_USER_AGENT'] : $useragent);
    if(strpos($useragent, 'http://') === false && dstrpos($useragent, $kw_browsers)) return false;
    if(dstrpos($useragent, $kw_spiders)) return true;
    return false;
}
function dstrpos($string, $arr, $returnvalue = false) {
    if(empty($string)) return false;
    foreach((array)$arr as $v) {
        if(strpos($string, $v) !== false) {
            $return = $returnvalue ? $v : true;
            return $return;
        }
    }
    return false;
}
if(checkrobot()){
    echo '機器人爬蟲';
}else{
    echo '人';
}
?>

實際應用中可以這樣判斷,直接不是搜索引擎才執行操作

?
1
2
3
4
5
<?php
if(!checkrobot()){
//do something
}
?>

2、第二種方法:

使用PHP實現蜘蛛訪問日志統計

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$useragent = addslashes(strtolower($_SERVER['HTTP_USER_AGENT']));
 
 if (strpos($useragent, 'googlebot')!== false){$bot = 'Google';}
 elseif (strpos($useragent,'mediapartners-google') !== false){$bot = 'Google Adsense';}
 elseif (strpos($useragent,'baiduspider') !== false){$bot = 'Baidu';}
 elseif (strpos($useragent,'sogou spider') !== false){$bot = 'Sogou';}
 elseif (strpos($useragent,'sogou web') !== false){$bot = 'Sogou web';}
 elseif (strpos($useragent,'sosospider') !== false){$bot = 'SOSO';}
 elseif (strpos($useragent,'360spider') !== false){$bot = '360Spider';}
 elseif (strpos($useragent,'yahoo') !== false){$bot = 'Yahoo';}
 elseif (strpos($useragent,'msn') !== false){$bot = 'MSN';}
 elseif (strpos($useragent,'msnbot') !== false){$bot = 'msnbot';}
 elseif (strpos($useragent,'sohu') !== false){$bot = 'Sohu';}
 elseif (strpos($useragent,'yodaoBot') !== false){$bot = 'Yodao';}
 elseif (strpos($useragent,'twiceler') !== false){$bot = 'Twiceler';}
 elseif (strpos($useragent,'ia_archiver') !== false){$bot = 'Alexa_';}
 elseif (strpos($useragent,'iaarchiver') !== false){$bot = 'Alexa';}
 elseif (strpos($useragent,'slurp') !== false){$bot = '雅虎';}
 elseif (strpos($useragent,'bot') !== false){$bot = '其它蜘蛛';}
 if(isset($bot)){
   $fp = @fopen('bot.txt','a');
   fwrite($fp,date('Y-m-d H:i:s')." ".$_SERVER["REMOTE_ADDR"]." ".$bot." ".'http://'.$_SERVER['SERVER_NAME'].$_SERVER["REQUEST_URI"]." ");
   fclose($fp);
 }

第三種方法:

我們可以通過HTTP_USER_AGENT來判斷是否是蜘蛛,搜索引擎的蜘蛛都有自己的獨特標志,下面列取了一部分。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function is_crawler() {
  $userAgent = strtolower($_SERVER['HTTP_USER_AGENT']);
  $spiders = array(
    'Googlebot', // Google 爬蟲
    'Baiduspider', // 百度爬蟲
    'Yahoo! Slurp', // 雅虎爬蟲
    'YodaoBot', // 有道爬蟲
    'msnbot' // Bing爬蟲
    // 更多爬蟲關鍵字
  );
  foreach ($spiders as $spider) {
    $spider = strtolower($spider);
    if (strpos($userAgent, $spider) !== false) {
      return true;
    }
  }
  return false;
}

下面的php代碼附帶了更多的蜘蛛標識

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
function isCrawler() {
    echo $agent= strtolower($_SERVER['HTTP_USER_AGENT']);
    if (!empty($agent)) {
        $spiderSite= array(
            "TencentTraveler",
            "Baiduspider+",
            "BaiduGame",
            "Googlebot",
            "msnbot",
            "Sosospider+",
            "Sogou web spider",
            "ia_archiver",
            "Yahoo! Slurp",
            "YoudaoBot",
            "Yahoo Slurp",
            "MSNBot",
            "Java (Often spam bot)",
            "BaiDuSpider",
            "Voila",
            "Yandex bot",
            "BSpider",
            "twiceler",
            "Sogou Spider",
            "Speedy Spider",
            "Google AdSense",
            "Heritrix",
            "Python-urllib",
            "Alexa (IA Archiver)",
            "Ask",
            "Exabot",
            "Custo",
            "OutfoxBot/YodaoBot",
            "yacy",
            "SurveyBot",
            "legs",
            "lwp-trivial",
            "Nutch",
            "StackRambler",
            "The web archive (IA Archiver)",
            "Perl tool",
            "MJ12bot",
            "Netcraft",
            "MSIECrawler",
            "WGet tools",
            "larbin",
            "Fish search",
        );
        foreach($spiderSite as $val) {
            $str = strtolower($val);
            if (strpos($agent, $str) !== false) {
                return true;
            }
        }
    } else {
        return false;
    }
}
if (isCrawler()){
    echo "你好蜘蛛精!";
}
else{
   echo "你不是蜘蛛精啊!";
}

第四種方法:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
$flag = false;
$tmp = $_SERVER['HTTP_USER_AGENT'];
if(strpos($tmp, 'Googlebot') !== false){
  $flag = true;
} else if(strpos($tmp, 'Baiduspider') >0){
  $flag = true;
} else if(strpos($tmp, 'Yahoo! Slurp') !== false){
  $flag = true;
} else if(strpos($tmp, 'msnbot') !== false){
  $flag = true;
} else if(strpos($tmp, 'Sosospider') !== false){
  $flag = true;
} else if(strpos($tmp, 'YodaoBot') !== false || strpos($tmp, 'OutfoxBot') !== false){
  $flag = true;
} else if(strpos($tmp, 'Sogou web spider') !== false || strpos($tmp, 'Sogou Orion spider') !== false){
  $flag = true;
} else if(strpos($tmp, 'fast-webcrawler') !== false){
  $flag = true;
} else if(strpos($tmp, 'Gaisbot') !== false){
  $flag = true;
} else if(strpos($tmp, 'ia_archiver') !== false){
  $flag = true;
} else if(strpos($tmp, 'altavista') !== false){
  $flag = true;
} else if(strpos($tmp, 'lycos_spider') !== false){
  $flag = true;
} else if(strpos($tmp, 'Inktomi slurp') !== false){
  $flag = true;
}
if($flag == false){
  header("Location: http://www.ythuaji.com.cn" . $_SERVER['REQUEST_URI']);
  // 自動轉到http://www.ythuaji.com.cn 對應的網頁
  // $_SERVER['REQUEST_URI'] 為域名后面的路徑
  // 或換成header("Location: http://www.ythuaji.com.cn/tags.html");
  exit();
}
?>

 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 极致堕落(高h)| 四虎影院在线免费播放 | 四虎永久在线精品国产馆v视影院 | 办公室出轨秘书高h | 亚洲国产精品久久丫 | ady成人映画网站官网 | 欧美帅老头oldmangay | 国产高清在线视频一区二区三区 | www.色.con| 欧美日韩国产成人综合在线 | 欧美午夜精品久久久久久黑人 | 69日本人xxxx16—18 | 很黄的孕妇a级黄毛片 | 国产亚洲欧美在线中文bt天堂网 | 国产成人精选免费视频 | 国产成人久视频免费 | tobu8中国在线播放免费 | a级影视 | 美女把小内内脱个精光打屁屁 | 免费观看视频网站 | 波多野结衣快播 | 福利视频一区二区牛牛 | 地址二地址三2021变更 | 风间由美被义子中文字幕 | cosplay 极品videos| 女人张开腿 让男人桶个爽 免费观看 | 国产精品露脸国语对白99 | 免费看美女被靠到爽的视频 | 91香蕉在线| 亚洲高清无码在线 视频 | 亚洲国产精品自在现线让你爽 | 99久久精品免费看国产一区 | heyzo在线观看 | 国产一区风间由美在线观看 | 97大香伊在人人线色 | 91中文字幕yellow字幕网 | 亚洲精品国产精品麻豆99 | 四虎影音在线 | 国产精品视频免费观看 | 亚洲精品福利你懂 | 精品一区二区三区中文 |