如何设置php禁止抓取网站

  介绍

如何设置php禁止抓取网站?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

php禁止抓取的实现方法:首先通过“$ _SERVER [& # 39; HTTP_USER_AGENT& # 39;],”方法获取UA信息,然后将恶意“USER_AGENT”存入数组;最后禁止空“USER_AGENT”等主流采集程序即可。

我们都知道网络上的爬虫非常多,有对网站收录有益的,比如百度蜘蛛(Baiduspider),也有不但不遵规守机器人则对服务器造成压力,还不能为网站带来流量的无用爬的虫,比如宜搜蜘蛛(YisouSpider)(<强>最新补充:宜搜蜘蛛已被加州大学神马搜索收购!所以本文已去掉宜搜蜘蛛的禁封! ==祝辞相关文章)。最近张戈发现nginx日志中出现了好多宜搜等垃圾的抓取记录,于是整理收集了网络上各种禁止垃圾蜘蛛爬站的方法,在给自己网做设置的同时,也给各位站长提供参考。

一、Apache

①,通过修改。htaccess文件

二,nginx代码

进入到nginx安装目录下的设计目录,将如下代码保存为agent_deny。参看
cd/usr/local/nginx/conf
vim agent_deny。参看

 #禁止Scrapy等工具的抓取
  如果($ http_user_agent ~ * (Scrapy | |旋度HttpClient)) {
  返回403;
  }
  #禁止指定UA及UA为空的访问
  if ($ http_user_agent ~ *“FeedDemon |印第安纳·琼斯图书馆| Alexa工具条| AskTbFXTV | AhrefsBot | CrawlDaddy | CoolpadWebkit Java | | Feedly | UniversalFeedParser | ApacheBench |微软URL控制| Swiftbot | ZmEu | oBot |洋洋得意的| Python-urllib | lightDeckReports机器人| YYSpider | DigExt | HttpClient | MJ12bot | heritrix | EasouSpider | Ezooms | ^ $“){
  返回403;
  }
  #禁止非GET | |头POST方式的抓取
  如果($ request_method ! ~ ^ (GET | |头POST)美元){
  返回403;
  }

然后,在网站相关配置中的,位置/{,之后插入如下代码:
包括agent_deny.conf;
如张戈博客的配置:
[marsge@Mars_Server ~]猫/usr/local/nginx/conf/zhangge.美元参看

位置/{
  try_files uri uri//index . php ?美元美元参数;
  #这个位置新增1行:
  包括agent_deny.conf;
  重写^/sitemap_360_sp。txt/sitemap_360_sp美元。php去年;
  重写^/sitemap_baidu_sp。xml/sitemap_baidu_sp美元。php去年;
  重写^/sitemap_m。xml/sitemap_m美元。php去年;
  保存后,执行如下命令,平滑重启nginx即可:/usr/local/nginx/sbin/nginx - s重载

三,PHP代码

将如下方法放到贴到网站入口文件索引。php中的第一个& lt; ?php之后即可:
//获取UA信息

 $ ua=$ _SERVER [& # 39; HTTP_USER_AGENT& # 39;];//将恶意USER_AGENT存入数组
  $ now_ua=阵列(& # 39;FeedDemon & # 39; & # 39; BOT/0.1 (BOT JCE) & # 39;, & # 39; CrawlDaddy & # 39;, & # 39; java # 39;, & # 39; feedly # 39;, & # 39; UniversalFeedParser& # 39;, & # 39; ApacheBench& # 39;, & # 39; Swiftbot& # 39;, & # 39; ZmEu& # 39;, & # 39;印第安纳·琼斯图书馆# 39;,& # 39;oBot& # 39;, & # 39;活泼的# 39;,& # 39;YandexBot& # 39;, & # 39; AhrefsBot& # 39;, & # 39; MJ12bot& # 39;, & # 39; WinHttp& # 39;, & # 39; EasouSpider& # 39;, & # 39; httpclient # 39;, & # 39;微软URL控制# 39;,& # 39;YYSpider& # 39;, & # 39;活泼的# 39;,& # 39;Python-urllib& # 39;, & # 39; lightDeckReports机器人# 39;);

//禁止空USER_AGENT, dedecms等主流采集程序都是空USER_AGENT,部分sql注入工具也是空USER_AGENT

如果(! $ ua) {   头(“内容类型:text/html;charset=utf-8");   死(& # 39;请勿采集本站,因为采集的站长木有小JJ ! & # 39;);   其他}{   foreach (now_ua美元美元值)//判断是否是数组中存在的UA   如果(eregi(价值,ua美元)){   头(“内容类型:text/html;charset=utf-8");   死(& # 39;请勿采集本站,因为采集的站长木有小JJ ! & # 39;);   }   }

四、测试效果

如果是vps,那非常简单,使用curl——模拟抓取即可,比如:
模拟宜搜蜘蛛抓取:
curl - i - & # 39; YisouSpider& # 39;张。通用电气
模拟UA为空的抓取:
curl - - & # 39; & # 39;张。通用电气
模拟百度蜘蛛的抓取:
curl - - & # 39; Baiduspider& # 39;zhang.ge

修改网站目录下的。htaccess,添加如下代码即可(2种代码任选):三次抓取结果截图如下:

如何设置php禁止抓取网站

可以看的出,宜搜蜘蛛和UA为空的返回是403年禁止访问标识,而百度蜘蛛则成功返回200年,说明生效!

如何设置php禁止抓取网站