wordpress原创独立博客防止被爬虫采集-文章抄袭

NO.1
取消feed全文

想要防止爬虫的第一个步骤就是取消全文feed

wordpress博客本身是开放的,默认是全文,也就是在一开始就给了互联网一个正式的内容入口

蜘蛛可以爬取,订阅的读者也可以及时获取最新内容

但防君子,难防小人,只能取消主动开放的入口,才能防止内容被抄袭

如图,放feed改为摘要

NO.2
关闭rss订阅

通过代码完全的关闭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

安装wordfence插件,设置防火墙firewall

不允许agent为空的请求访问

新手爬虫的特征就是固定ip和没有请求头信息的agent标识,禁止此类请求访问,能够过滤一大部分抄袭和攻击

限制每分钟登录次数,每分钟ip访问频次,每分钟访问页面次数等等等(防止暴力破解和自动化爬取)

NO.4
设置.htaccess文件

阻止特定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配置

从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');

?>

img

NO.7
会员可见

还有一个伤敌一千自损八百的方法,就是设置会员可见

也就是只有当用户为注册登录用户情况下,才可以看见内容,而爬虫,是没有账户的.

END.