NO.1
想要防止爬虫的第一个步骤就是取消全文feed
wordpress
博客本身是开放的,默认是全文,也就是在一开始就给了互联网一个正式的内容入口
蜘蛛可以爬取,订阅的读者也可以及时获取最新内容
但防君子,难防小人,只能取消主动开放的入口,才能防止内容被抄袭
如图,放feed改为摘要
NO.2
通过代码完全的关闭rss订阅
在外观->主题编辑器->function.php文件中
设置代码
//关闭rss feed功能 function disable_all_feeds() { wp_die(__('<h1>本博客不提供Feed,请访问网站<a href="'.get_bloginfo('url').'">首页</a>!</h1>')); } add_action('do_feed', 'disable_all_feeds', 1); add_action('do_feed_rdf', 'disable_all_feeds', 1); add_action('do_feed_rss', 'disable_all_feeds', 1); add_action('do_feed_rss2', 'disable_all_feeds', 1); add_action('do_feed_atom', 'disable_all_feeds', 1); // 删除feed标记 remove_action( 'wp_head', 'feed_links_extra', 3 ); remove_action( 'wp_head', 'feed_links', 2 );
NO.3
安装wordfence插件,设置防火墙firewall
不允许agent为空的请求访问
新手爬虫的特征就是固定ip和没有请求头信息的agent标识,禁止此类请求访问,能够过滤一大部分抄袭和攻击
限制每分钟登录次数,每分钟ip访问频次,每分钟访问页面次数等等等(防止暴力破解和自动化爬取)
NO.4
阻止特定ip访问(尤其是已知的爬虫)
wordpress网站根目录文件夹下有一个.htaccess文件
通过此文件也可以禁止指定ip访问
在文件中编辑添加以下代码即可,ip为想要阻止的ip
order allow,deny deny from 117.40.197.98 deny from 113.104.208.0 deny from 155.235.130.189 allow from all
NO.5
如果网站是nginx代理,则可以设置nginx配置
从nginx防止ip攻击和访问
server:{ location / { deny 45.141.101.217; deny 155.235.130.189; } }
NO.6
在wordpress钩子函数中,对显示的内容做过滤处理
如果为指定域名下访问则正常显示,如果其他域名则返回空或者特定内容(原创声明或者恶搞之类)
使用钩子函数
add_filter('the_content', 'add_after_post_content');
以下内容为自制插件
<?php /* Plugin Name: filter Plugin URI: https://dsx2016.com Description: filter Author: dsx2016 Version: 1.0.0 Author URI: https://dsx2016.com */ ?> <?php // 渲染内容前操作 function add_after_post_content($content) { // 获取当前域名 $domain=$_SERVER['SERVER_NAME']; // 设置自定义内容(默认为空) $diy=""; // 如果当前包括dsx2016的域名 // localhost bG9jYWxob3N0 // dsx2016 ZHN4MjAxNg== // base64_decode() 解码 // base64_encode() 加密 if(substr_count($domain,base64_decode("ZHN4MjAxNg=="))>0){ // 啥也不做 // $diy="<span class='https://dsx2016.com'></span>"; // $content=$diy; }else{ // 返回自定义内容(不允许别人采集内容,避免别的网站内容被搜索引擎收录) $diy="<div>block</div>"; $content=$diy; } // 返回处理后的内容 return $content; } // 渲染内容前执行操作 add_filter('the_content', 'add_after_post_content'); ?>
NO.7
也就是只有当用户为注册登录用户情况下,才可以看见内容,而爬虫,是没有账户的.