PHP 检测机器人,屏蔽内页

<?php
// SpiderHelper::rewrite301();
// SpiderHelper::showRobotTxt();
class SpiderHelper { /**
* 如果是爬虫,301跳转到某个地址
* @param string $location
*/
public static function rewrite301($location = '/') {
if(self::isSpider()){
header('HTTP/1.1 301 Moved Permanently');
header('Location: '.$location);
exit();
}
} /**
* 显示文件内容
* @var unknown
*/
public static function showRobotTxt() {
if(self::isSpider()){
echo "User-agent: *\r\n".
"Disallow: /";
exit();
}
} /**
* 检查是否是爬虫
* @param string $userAgent 客户端类型
* @return boolean
*/
public static function isSpider($userAgent = '') {
static $kwSpiders = array('bot', 'crawl', 'spider' ,'slurp', 'sohu-search', 'lycos', 'robozilla');
static $kwBrowsers = array('msie', 'netscape', 'opera', 'konqueror', 'mozilla'); $userAgent = strtolower(empty($userAgent) ? $_SERVER['HTTP_USER_AGENT'] : $userAgent);
if(strpos($userAgent, 'http://') === false && self::checkStrpos($userAgent, $kwBrowsers)){ // 浏览器
return false;
}
if(self::checkStrpos($userAgent, $kwSpiders)){ // 蜘蛛
return true;
}
return false;
} /**
* 是否存在数组中的关键字
* @param unknown $needle 字符串
* @param unknown $haystack 关键字数组
* @param string $returnValue 是否返回匹配到的值
* @return boolean|Ambigous <boolean, unknown>
*/
private static function checkStrpos($needle, $haystack, $returnValue = false) {
if(empty($needle)){
return false;
}
foreach((array)$haystack as $v) {
if(strpos($needle, $v) !== false) {
$return = $returnValue ? $v : true;
return $return;
}
}
return false;
}
}

PHP 检测机器人,屏蔽内页的更多相关文章

  1. Apache服务器网站访问伪静态内页出现No input file specified.的完美解决方案

    原文地址:Apache服务器网站访问伪静态内页出现No input file specified.的完美解决方案 启用REWRITE的伪静态功能的时候,首页可以访问,而访问内页的时候,就提示:&quo ...

  2. nginx的内页跳转总结

      刚进公司的时候老大一直在要求php做内页跳转,当时也不太了解细节所以一直没有说话.后来php问我你会不会做内页跳转,我说会一点就做了几个,从此搞内页跳转搞了两个星期.至于为什么做内页跳转哪就暂时不 ...

  3. SEO之网站关键词的优化 :首页,内页关键字,长尾关键字

    这篇文章主要讲的是SEO之网站关键词的优化 :首页,内页关键字,长尾关键字. 为了查找方便,小A汇总了所有SEO优化的相关教程,方便大家查找到自己想要的SEO优化技巧: SEO优化教程汇总. 网站关键 ...

  4. h5微信支付在微信内页使用微信公众号支付

    由于app的迭代,原本的微信支付是使用原生写的 然后h5这边做交互,现在需要修改使用h5的微信支付,于是就有了现在的这个例子,微信支付其实对于我们前端来说就是调用接口然后,根据链接进行支付,其中有点坑 ...

  5. IIS7.5全站301跳转,内页+带参数url,这才是真正的全站跳转

    说好的转型安全领域,可是我还是忍不住要给大家分享这个教程.因为这个问题很常见,大部分人都遇到了(可能你没注意),困扰了我很久,相信这是一篇真正适合你的IIS301跳转教程. 背景 说到301跳转,作为 ...

  6. <dedecms>织梦内页调用会员信息

    1.织梦CMS v5.7调用文章所属会员信息标签 打开官方默认模板article_artcile.htm,我们可以提取出如下代码:  {dede:memberinfos}   会员头像:<a h ...

  7. dedecms文章内页获取缩略图的调用标签

    点评:文章内容页缩略图的调用,图片集内容页缩略图的调用很容易混淆,内页想调用缩略图用[filed:picname/]来实现是错误的 文章内容页缩略图的调用,图片集内容页缩略图的调用,相信大家都想找这个 ...

  8. 织梦dedecms内页分类频道友情链接实现方法

    本文介绍了织梦dedecms中内页分类频道加友情链接的三种方法,有需要的朋友参考下. 织梦dedecms中内页分类频道加友情链接,方法有三种: 先讲方法,后讲原理: 方法:先找到首页模版index.h ...

  9. 在iframe内页触发顶层页面body的blur事件

    //在iframe内页触发顶层页面body的blur事件. if (window != top) { $(document.body).click(function () { $(top.docume ...

随机推荐

  1. WCF服务创建与抛出强类型SOAP Fault

    原创地址:http://www.cnblogs.com/jfzhu/p/4060666.html 转载请注明出处 前面的文章<WCF服务的异常消息>中介绍过,如果WCF Service发生 ...

  2. maven仓库信息分析站点推荐

    maven是java的一个依赖,打包管理的工具,稍微大一点的java项目都需要使用maven. 随着java的壮大,maven仓库越来越大,仓库中的jar包有60多万,各种group,各种构件,各种版 ...

  3. C语言 · 出现次数最多的数

    问题描述 编写一个程序,读入一组整数,这组整数是按照从小到大的顺序排列的,它们的个数N也是由用户输入的,最多不会超过20.然后程序将对这个数组进行统计,把出现次数最多的那个数组元素值打印出来.如果有两 ...

  4. xamarin UWP自定义圆角按钮

    uwp自带的button本身不支持圆角属性,所以要通过自定义控件实现. 通过设置Button的Background=“{x:Null}”设置为Null使背景为空,再设置Button.Content中的 ...

  5. html 生成pdf

    HTML生成PDF(c#) 最近因为工作需要,小小的研究了一下HTML生成PDF的方法,这方面的内容很多,但要么是不尽如人意的方法,要么就是那种收费的类库!为了广大.neter的福利,把自己的一点小小 ...

  6. SSIS Design7:数据类型的选择

    对于SSIS的数据类型,容易遗漏精度的是DateTime,不正确的使用DateTime,time,decimal 等数据类型,可能导致溢出或数据丢失. 1,Variable 和 Parameter的D ...

  7. Security4:Role 和 Permission

    Grants permissions on a securable to a principal.  The general concept is to GRANT <some permissi ...

  8. Owin的URL编码怎么搞?以前都是HttpUtility.UrlEncode之类的,现在连system.web都没了,肿么办?

    Owin的URL编码怎么搞?以前都是HttpUtility.UrlEncode之类的,现在连system.web都没了,肿么办? 编码: Uri.EscapeDataString(name) 解码: ...

  9. SVN:服务器资源删掉,本地添加时和删掉的名字同名出现One or more files are in a conflicted state.

    异常处理汇总-开发工具  http://www.cnblogs.com/dunitian/p/4522988.html

  10. 伪静态下Post无法响应的问题

    页面进行伪静态,Post的地址就不要写相对路径了,这样容易出错. 原来路径为,/SC/ProductDetail.aspx?id=110 用相对路径, 那么post的地址为:/SC/ProductDe ...