前一阵子小编接到一个客户的反映,网站被一个 dedecms 站点采集了,需求小编协助防止网站被采集。当时小编也没有头绪,只好叫客户先把服务器日志发过来分析下了。通过查看服务器日志,小编发现一个空 http_user_agent 的 IP 频繁的对网站发起请求。经过站长工具查询发现该 IP 正式采集客户网站的织梦站点的 IP 。当时小编立即联系客户,叫客户屏蔽这个 IP 。客户屏蔽 IP 后当天立马就看到效果了,可是第三天的时候,该织梦站点换了个 IP 又开始对客户的站点进行采集了。显然封 IP 的方法不是长久之计。正好有个好基友找到小编问如何判断浏览器类型来返回不同 css 。小编立马想到了客户被采集的事,那么也可以通过判断 HTTP_USER_AGENT 来达到防止采集的,代码如下:

if(!$_SERVER['HTTP_USER_AGENT']) { //判断是否为空 AGENT
header("Content-type: text/html; charset=utf-8");
echo '不许采集!因为采集的站长 MJJ!';
exit;
}

客户使用了以上代码之后,直到小编发布此篇文章时也未被再次采集了。

另外可能有人会问代码加到哪?(PS:将以上代码丢到根目录的 index.php 或者 functions.php 文件的<?php 之后即可。当然其他 php 程序也可以使用此方法进行防采集,只需要将此代码加到程序的通用文件或者是入口文件中即可。)

另外利用 apache 的.htaccess 文件也可以对访客的 http_user_agent 进行判断达到防止恶意爬虫以及采集的效果,示例代码如下:(PS:实际运用中需要根据情况进行修改)

RewriteCond %{HTTP_USER_AGENT} ".*EmbeddedWB.*" [OR]
RewriteCond %{HTTP_USER_AGENT} ".*QunarBot.*" [OR]
RewriteCond %{HTTP_USER_AGENT} ".*Windows 98.*" [OR]
RewriteCond %{HTTP_USER_AGENT} "^Mozilla/4.0$"
RewriteRule ^(.*)$ https://www.weixiaoduo.com/213.html

由于网上能下载的大部分的采集程序都是空 agent 的,所以小编的方法可以屏蔽掉绝大多数的采集程序,如果你会分析日志的话,基本上已经没有人能很顺利的采集你网站的内容了。