请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站文章手机版 今天是: 2022-12-03    "国际残疾人日"  关爱残疾人
天气与日历 切换到宽版

绵羊优创

 找回密码
 立即注册
搜索
查看: 37|回复: 0

[经验分享] 判断搜索引擎蜘蛛访问正常抓取_用户访问跳转指定页面

[复制链接]
  • 打卡等级:LV5

325

主题

347

帖子

822

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
822

突出贡献荣誉管理论坛元老本科学士学位拥有劳力士宇宙计型迪通拿系列m116515ln-0059拥有欧米茄星座系列131.23.41.21.03.001拥有梅赛德斯-奔驰EQS 580 4MATIC拥有宝马M8四门轿跑车 雷霆版

QQ
sheep 发表于 2022-11-10 19:55:07 | 显示全部楼层 |阅读模式 ip属地: 北京市朝阳区
网站不关站的备案方法:判断搜索引擎蜘蛛访问正常抓取_用户访问跳转指定页面(js和php两种方法)
1、js判断
  1. <script type="text/javascript">
  2. if(window.name != 'ad_app6'){
  3. var r = document.referrer;
  4. r = r.toLowerCase(); //转为小写
  5. var aSites = new Array('google.','baidu.','soso.','so.','360.','yahoo.','youdao.','sogou.','gougou.');
  6. var b = false;
  7. for (i in aSites){
  8. if (r.indexOf(aSites[i]) > 0){
  9. b = true;
  10. break;
  11. }
  12. }

  13. if(b)
  14. {
  15. self.location = '要跳转的网址';
  16. window.adworkergo = 'ad_app6';
  17. }
  18. }
  19. </script>
复制代码

其他方法推荐:《js判断移动端用户正常访问电脑端展示指定页面及内容》http://bbs.shaomingyang.com/thread-459-1-1.html

以下是php判断
2、php判断搜索引擎蜘蛛爬虫还是人为访问代码,摘自Discuz x3.2
  1. <?php
  2. function checkrobot($useragent=''){
  3.     static $kw_spiders = array('bot', 'crawl', 'spider' ,'slurp', 'sohu-search', 'lycos', 'robozilla');
  4.     static $kw_browsers = array('msie', 'netscape', 'opera', 'konqueror', 'mozilla');

  5.     $useragent = strtolower(empty($useragent) ? $_SERVER['HTTP_USER_AGENT'] : $useragent);
  6.     if(strpos($useragent, 'http://') === false && dstrpos($useragent, $kw_browsers)) return false;
  7.     if(dstrpos($useragent, $kw_spiders)) return true;
  8.     return false;
  9. }
  10. function dstrpos($string, $arr, $returnvalue = false) {
  11.     if(empty($string)) return false;
  12.     foreach((array)$arr as $v) {
  13.         if(strpos($string, $v) !== false) {
  14.             $return = $returnvalue ? $v : true;
  15.             return $return;
  16.         }
  17.     }
  18.     return false;
  19. }
  20. if(checkrobot()){
  21.     echo '机器人爬虫';
  22. }else{
  23.     echo '人';
  24. }
  25. ?>
复制代码
实际应用中可以这样判断,直接不是搜索引擎才执行操作
  1. <?php
  2. if(!checkrobot()){
  3. //do something
  4. }
  5. ?>
复制代码
3、使用PHP实现蜘蛛访问日志统计
  1. $useragent = addslashes(strtolower($_SERVER['HTTP_USER_AGENT']));

  2. if (strpos($useragent, 'googlebot')!== false){$bot = 'Google';}
  3. elseif (strpos($useragent,'mediapartners-google') !== false){$bot = 'Google Adsense';}
  4. elseif (strpos($useragent,'baiduspider') !== false){$bot = 'Baidu';}
  5. elseif (strpos($useragent,'sogou spider') !== false){$bot = 'Sogou';}
  6. elseif (strpos($useragent,'sogou web') !== false){$bot = 'Sogou web';}
  7. elseif (strpos($useragent,'sosospider') !== false){$bot = 'SOSO';}
  8. elseif (strpos($useragent,'360spider') !== false){$bot = '360Spider';}
  9. elseif (strpos($useragent,'yahoo') !== false){$bot = 'Yahoo';}
  10. elseif (strpos($useragent,'msn') !== false){$bot = 'MSN';}
  11. elseif (strpos($useragent,'msnbot') !== false){$bot = 'msnbot';}
  12. elseif (strpos($useragent,'sohu') !== false){$bot = 'Sohu';}
  13. elseif (strpos($useragent,'yodaoBot') !== false){$bot = 'Yodao';}
  14. elseif (strpos($useragent,'twiceler') !== false){$bot = 'Twiceler';}
  15. elseif (strpos($useragent,'ia_archiver') !== false){$bot = 'Alexa_';}
  16. elseif (strpos($useragent,'iaarchiver') !== false){$bot = 'Alexa';}
  17. elseif (strpos($useragent,'slurp') !== false){$bot = '雅虎';}
  18. elseif (strpos($useragent,'bot') !== false){$bot = '其它蜘蛛';}
  19. if(isset($bot)){
  20.    $fp = @fopen('bot.txt','a');
  21.    fwrite($fp,date('Y-m-d H:i:s')."\t".$_SERVER["REMOTE_ADDR"]."\t".$bot."\t".'http://'.$_SERVER['SERVER_NAME'].$_SERVER["REQUEST_URI"]."\r\n");
  22.    fclose($fp);
  23. }
复制代码
4、我们可以通过HTTP_USER_AGENT来判断是否是蜘蛛,搜索引擎的蜘蛛都有自己的独特标志,下面列取了一部分。
  1. function is_crawler() {
  2.   $userAgent = strtolower($_SERVER['HTTP_USER_AGENT']);
  3.   $spiders = array(
  4.     'Googlebot', // Google 爬虫
  5.     'Baiduspider', // 百度爬虫
  6.     'Yahoo! Slurp', // 雅虎爬虫
  7.     'YodaoBot', // 有道爬虫
  8.     'msnbot' // Bing爬虫
  9.     // 更多爬虫关键字
  10.   );
  11.   foreach ($spiders as $spider) {
  12.     $spider = strtolower($spider);
  13.     if (strpos($userAgent, $spider) !== false) {
  14.       return true;
  15.     }
  16.   }
  17.   return false;
  18. }
复制代码
下面的php代码附带了更多的蜘蛛标识
  1. function isCrawler() {
  2.     echo $agent= strtolower($_SERVER['HTTP_USER_AGENT']);
  3.     if (!empty($agent)) {
  4.         $spiderSite= array(
  5.             "TencentTraveler",
  6.             "Baiduspider+",
  7.             "BaiduGame",
  8.             "Googlebot",
  9.             "msnbot",
  10.             "Sosospider+",
  11.             "Sogou web spider",
  12.             "ia_archiver",
  13.             "Yahoo! Slurp",
  14.             "YoudaoBot",
  15.             "Yahoo Slurp",
  16.             "MSNBot",
  17.             "Java (Often spam bot)",
  18.             "BaiDuSpider",
  19.             "Voila",
  20.             "Yandex bot",
  21.             "BSpider",
  22.             "twiceler",
  23.             "Sogou Spider",
  24.             "Speedy Spider",
  25.             "Google AdSense",
  26.             "Heritrix",
  27.             "Python-urllib",
  28.             "Alexa (IA Archiver)",
  29.             "Ask",
  30.             "Exabot",
  31.             "Custo",
  32.             "OutfoxBot/YodaoBot",
  33.             "yacy",
  34.             "SurveyBot",
  35.             "legs",
  36.             "lwp-trivial",
  37.             "Nutch",
  38.             "StackRambler",
  39.             "The web archive (IA Archiver)",
  40.             "Perl tool",
  41.             "MJ12bot",
  42.             "Netcraft",
  43.             "MSIECrawler",
  44.             "WGet tools",
  45.             "larbin",
  46.             "Fish search",
  47.         );
  48.         foreach($spiderSite as $val) {
  49.             $str = strtolower($val);
  50.             if (strpos($agent, $str) !== false) {
  51.                 return true;
  52.             }
  53.         }
  54.     } else {
  55.         return false;
  56.     }
  57. }
  58. if (isCrawler()){
  59.     echo "你好蜘蛛精!";
  60. }
  61. else{
  62.    echo "你不是蜘蛛精啊!";
  63. }
复制代码
5、判断蜘蛛跳转
  1. <?php
  2. $flag = false;
  3. $tmp = $_SERVER['HTTP_USER_AGENT'];
  4. if(strpos($tmp, 'Googlebot') !== false){
  5.   $flag = true;
  6. } else if(strpos($tmp, 'Baiduspider') >0){
  7.   $flag = true;
  8. } else if(strpos($tmp, 'Yahoo! Slurp') !== false){
  9.   $flag = true;
  10. } else if(strpos($tmp, 'msnbot') !== false){
  11.   $flag = true;
  12. } else if(strpos($tmp, 'Sosospider') !== false){
  13.   $flag = true;
  14. } else if(strpos($tmp, 'YodaoBot') !== false || strpos($tmp, 'OutfoxBot') !== false){
  15.   $flag = true;
  16. } else if(strpos($tmp, 'Sogou web spider') !== false || strpos($tmp, 'Sogou Orion spider') !== false){
  17.   $flag = true;
  18. } else if(strpos($tmp, 'fast-webcrawler') !== false){
  19.   $flag = true;
  20. } else if(strpos($tmp, 'Gaisbot') !== false){
  21.   $flag = true;
  22. } else if(strpos($tmp, 'ia_archiver') !== false){
  23.   $flag = true;
  24. } else if(strpos($tmp, 'altavista') !== false){
  25.   $flag = true;
  26. } else if(strpos($tmp, 'lycos_spider') !== false){
  27.   $flag = true;
  28. } else if(strpos($tmp, 'Inktomi slurp') !== false){
  29.   $flag = true;
  30. }
  31. if($flag == false){
  32.   header("Location: //www.jb51.net" . $_SERVER['REQUEST_URI']);
  33.   // 自动转到//www.jb51.net 对应的网页
  34.   // $_SERVER['REQUEST_URI'] 为域名后面的路径
  35.   // 或换成header("Location: //www.jb51.net/abc/d.php");
  36.   exit();
  37. }
  38. ?>
复制代码





绵羊优创网 - 专注优质内容创作分享! | 绵羊优创网
回复 论坛版权

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【乱回复纯数字纯字母将禁言】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|社区规范|绵羊优创 ( 京ICP备19037745号-1 )|网站地图

公安备案京公网安备 11011502005086号

GMT+8, 2022-12-3 17:22 , Processed in 0.839485 second(s), 36 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表