拓展延伸:
如果想通过禁止某些 User Agent 特征,同时达成防主流采集、垃圾爬虫、部分 SQL 注入和防网站被恶意镜像,可以通过以下方法实现。
PS:以下三个方法是上文“通过禁止某些 User Agent 特征防恶意镜像”的拓展延伸,所以只能二选一,不能同时使用。
特别声明:以下三个方法的代码来自(或修改自)张戈博客的《服务器反爬虫攻略:Apache/Nginx/PHP 禁止某些 User Agent 抓取网站》。
1、Ngnix代码
进入到 nginx 安装目录下的 conf 目录,将如下代码保存为 agent_deny.conf。
cd /usr/local/nginx/conf
vim agent_deny.conf
- #禁止 Scrapy 等工具的抓取
- if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) {
- return 403;
- }
- #禁止指定 UA 及 UA 为空的访问
- if ($http_user_agent ~ " PHP|FeedDemon|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|HttpClient|MJ12bot|heritrix|EasouSpider|Ezooms|^$" ) {
- return 403;
- }
- #禁止非 GET|HEAD|POST 方式的抓取
- if ($request_method !~ ^(GET|HEAD|POST)$) {
- return 403;
- }
然后,在网站相关配置中的 location / { 之后插入如下代码:
- include agent_deny.conf;
如张戈博客的配置:
- [marsge@Mars_Server ~]$ cat /usr/local/nginx/conf/zhangge.conf
- location / {
- try_files $uri $uri/ /index.php?$args;
- #这个位置新增 1 行:
- include agent_deny.conf;
- rewrite ^/sitemap_360_sp.txt$ /sitemap_360_sp.php last;
保存后,执行如下命令,平滑重启 nginx 即可:
- /usr/local/nginx/sbin/nginx -s reload
2、PHP代码
将如下代码放到 PHP 网站根目录 index.php 中的第一个 <?php 之后即可:
- //获取 UA 信息
- $ua = $_SERVER['HTTP_USER_AGENT'];
- //将恶意 USER_AGENT 存入数组
- $now_ua = array('PHP','FeedDemon ','BOT/0.1 (BOT for JCE)','CrawlDaddy ','Java','Feedly','UniversalFeedParser','ApacheBench','Swiftbot','ZmEu','Indy Library','oBot','jaunty','YandexBot','AhrefsBot','MJ12bot','WinHttp','EasouSpider','HttpClient','Microsoft URL Control','YYSpider','jaunty','Python-urllib','lightDeckReports Bot');
- //禁止空 USER_AGENT,dedecms 等主流采集程序都是空 USER_AGENT,部分 sql 注入工具也是空 USER_AGENT
- if(!$ua) {
- header("Content-type: text/html; charset=utf-8");
- wp_die('请勿采集本站,因为采集的站长木有小 JJ!');
- }else{
- foreach($now_ua as $value )
- //判断是否是数组中存在的 UA
- if(eregi($value,$ua)) {
- header("Content-type: text/html; charset=utf-8");
- wp_die('请勿采集本站,因为采集的站长木有小 JJ!');
- }
- }
3、WordPress专用版
将以下代码添加到主题 functions.php 文件最后一个?>即可。
- if(!is_admin()) {
- add_action('init', 'deny_mirrored_request', 0);
- }
- function deny_mirrored_request()
- {
- //获取 UA 信息
- $ua = $_SERVER['HTTP_USER_AGENT'];
- //将恶意 USER_AGENT 存入数组
- $now_ua = array('PHP','FeedDemon ','BOT/0.1 (BOT for JCE)','CrawlDaddy ','Java','Feedly','UniversalFeedParser','ApacheBench','Swiftbot','ZmEu','Indy Library','oBot','jaunty','YandexBot','AhrefsBot','MJ12bot','WinHttp','EasouSpider','HttpClient','Microsoft URL Control','YYSpider','jaunty','Python-urllib','lightDeckReports Bot');
- //禁止空 USER_AGENT,dedecms 等主流采集程序都是空 USER_AGENT,部分 sql 注入工具也是空 USER_AGENT
- if(!$ua) {
- header("Content-type: text/html; charset=utf-8");
- wp_die('请勿采集本站,因为采集的站长木有小 JJ!');
- }else{
- foreach($now_ua as $value )
- //判断是否是数组中存在的 UA
- if(eregi($value,$ua)) {
- header("Content-type: text/html; charset=utf-8");
- wp_die('请勿采集本站,因为采集的站长木有小 JJ!');
- }
- }
- }
你可能感兴趣的文章
boke112导航 ,版权归原作者所有!转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请发邮件至[email protected],确认后马上更正、删除,谢谢!
版权声明:本文为转载文章,来源于
发表于2016-09-22 11:32 沙发
女站长根本不怕骂,因为她根本就没有小JJ。
@Koolight[呲牙] 这个其实也就是防君子而已,我们添加上只是求一个心理安慰而已
@Koolight呵呵,说的很有趣~
发表于2016-09-22 13:28 板凳
[偷笑] 现在我不怎么关心这个了,主要是这个代码不断在改进中,我都懒得花时间折腾了。
发表于2016-09-23 15:40 地板
那如果输入title,出现很多一样的,都是自己的域名,但是都做了301跳转到想要优化的域名,会不会有影响,会不会被百度判断作弊
@摩天之星如果出现很多一样的标题,都是自己域名的,应该是没有进行robots优化站点,如果了解的可以看看这篇文章《利用Robots.txt优化你的WordPress站点》
发表于2016-09-30 18:35 4楼
最近发现我另一个站www.hbgynj.com被别人镜像了,用php版本的在index.php里插入代码的那个办法有用,不过返回错误是
Fatal error: Call to undefined function wp_die() in /www/web/hbgynj_com/public_html/index.php on line 15,这个是不是正常的呢!
最纳闷的是我的云锁怎么没起作用呢!!!
@南通SEO没用过云锁,对于这种镜像站点,能够让用户访问镜像站跳转会到我们站点,或者直接访问不了就成功了,其他的我倒很少关注
@懿古今有道理,没必要折腾太多,目的达到了就行
@南通SEO把wp_die换成die试试~ 貌似wp_die是用于wordpress的 [流汗]
发表于2016-10-17 20:25 5楼
经过我近半个月的努力终于算是把恶意镜像的嚣张气焰给整治下去了!
@明月登楼[强] 我的也差不多打下去了,现在搜索还有一个,不过点击都是跳转回来的,感觉还行
@懿古今按照上面的方法进行设置了 镜像站会跳到我们站的404页面,这样正常吗,是不是成功了? 还有问题,就是点击查看百度或者谷歌网页快照的时候,不会正常显示网站页面了,网页快照页面也是跳到我们站的404页面,这样有没有影响?
@我是谁使用了这个快照页面确实是不正常,所以如果没有被镜像的话,可以不折腾
发表于2017-08-15 15:45 6楼
我是来看图片的. [哈哈]
先学习一下备用,这几天折腾的百度都不收录我了。
@肉松[偷笑] 我现在也不敢折腾了,还是老老实实更新内容吧