零基础建站培训介绍

当前位置:

PHP判断控制搜索引擎蜘蛛与普通用户显示内容不一样

PHP判断控制搜索引擎蜘蛛与普通用户看到的内容不一样。

如果只想判断百度蜘蛛,就可以使用以下的代码:


if (ereg("http://www.baidu.com/search/spider.htm", $_SERVER["HTTP_USER_AGENT"])){
$file = file_get_contents('https://www.xuewangzhan.net/');
echo $file;
exit;
}

推荐的一种方法:php判断搜索引擎蜘蛛爬虫还是人为访问代码。


<?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 '普通用户';
}
?>

第二种方法:我们可以通过HTTP_USER_AGENT来判断是否是蜘蛛,搜索引擎的蜘蛛都有自己的独特标志。


<?php
function isCrawler() {
$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()){
?>
是搜索引擎蜘蛛
<?php }else{ ?>
不是搜索引擎蜘蛛
<?php } ?>

第三种方法:


<?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: https://www.xuewangzhan.net" . $_SERVER['REQUEST_URI']);
// 自动转到https://www.xuewangzhan.net 对应的网页
// $_SERVER['REQUEST_URI'] 为域名后面的路径
// 或换成header("Location: https://www.xuewangzhan.net/abc/d.php");
exit();
}
?>
上一课: 下一课:

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关教程

  • PHP dirname(__FILE__)什么意思__FILE__表示当前所在文件的绝对路径包括文件名,dirname(__FILE__)表示当前文件的绝对路径,basename(__FILE__)表
  • 方法一如何创建一个PHP数组$arr=array('one','two','three');如何输出PHP数组foreach($arr as $a){echo $a;}
  • 有一些工具类网站,会使用PHP语言制作一些工具,例如去重复的工具,就可以实现在一个数据集中去除另一个数据集里的元素。它的原理就是利用PHP从一个数
  • 如何将一个PHP数组通过foreach循环把数组打印出来,如何将每一个数组的值之间加一个逗号,但最后一个值后面不加逗号呢?这就是通过PHP foreach循环删
  • PHP有点强大的功能,它可以处理各类数据。今天学做网站论坛介绍一下PHP怎么将一组数据保存为TXT文件,这种在有些应用中非常实用。PHP数据保存为TXT文
  • PHP处理数据时,需要过滤一些垃圾数据字符,下面分享一下操作方法。一、过滤掉数据中所有的非英文数据,只保留英文;$str = "Color(50% OFF
  • 在使用PHP处理数据时,往往需要过滤掉数据所有html标签,怎么过滤呢?可以使用PHP strip_tags函数。方法如下:1.strip_tags(剥去字符串中的 HTML 标
  • PHP实现去除重复数据只保留一个的功能可以将一堆包含了大量重复数据的信息进行过滤,只保留唯一的数据。代码如下:<?php// 删除数组中相同元
  • 做网站时,我们经常需要使用PHP给MYSQL插入新数据或者将MYSQL数据库里的数据进行更新。这都需要使用MYSQL语句。这一节学做网站论坛介绍一下PHP给MYSQL
  • 使用PHP开发网站过程中,可以使用for循环将数字赋值给一个数组。然后对这个数组进行调用,或者将数据应用到其它的循环中。下面介绍一下PHP将for循环结