Wordpress教程 2024年02月2日
0 收藏 0 点赞 54 浏览 4100 个字

要想防止网站被恶意采集,那么就需要了解大多数的采集方式和规则,这样才能够反其道而行之的去屏蔽和防采集,有时候我们辛辛苦苦写的一些文章或者大批量的文章内容成为了别人的嫁衣,同时别人采集还增加服务器负担,想想就觉得不值得啊。

20024年最新干货教程WordPress防采集最佳方法分享

之所以决定要做这个防采集的想法有很久了,是因为前段时间有个网站不断的换 IP 来采集我们的问答内容,我禁用一个 IP,他换一个 IP,我后来把那个地区所有的 IP 段都屏蔽了,这才基本到止为止。我这么忙的人总不能每天把时间都花在去看服务器 IP,去屏蔽 IP 这件事情上吧?

于是终于下定决心来做这件事情了,以前是想通过随机给 WordPress 正文内容中插入网站名称的字词,然后通过内链样式隐藏,但是这样别人依旧能把内容采集过去,所以也迟迟没有这样做,后来突然反应过来,采集最重要的就是采集规则,而想要更好的采集就需要获取到文章列表,这下子就很好做了。

简单的来科普一下,采集时大多数人都是根据文章栏目和列表获取采集文章的 URL 链接,所以最重要的就是翻页,这也是几乎所有网站暴露网站所有文章的一种方式,那么最简单的解决办法就是让网站列表不能无止境的翻页,这样就算能采集几十篇的内容,也无法把整站的内容都采集走了。

 

//WordPress 禁止翻页屏蔽/防采集
add_filter('pre_get_posts','fanly_basic_query_posts');
function fanly_basic_query_posts($wp_query) {
	if($wp_query->is_admin || !$wp_query->is_main_query()) return;
	if ($wp_query->is_home || $wp_query->is_archive || $wp_query->is_search) {
		$paged = 10;//超过 10 页后就显示 404
		if($paged && $wp_query->get('paged') > $paged){
			//404 页面
			$wp_query->set_404();
			status_header(404);
			nocache_headers();
			include(get_query_template('404'));//需要主题的 404.php
			die();
			//404 页面
		}
	}
}

 

如果需要指定ID分类可以修改成这样

add_filter('pre_get_posts', 'fanly_basic_query_posts');

function fanly_basic_query_posts($wp_query) {
    if ($wp_query->is_admin || !$wp_query->is_main_query()) return;

    // 指定分类ID数组
    $specified_category_ids = array(24172, 24173, 24192, 24188, 24193, 24191, 24187, 24190, 24189, 24186, 24184, 24182, 24183, 24180, 24181, 24185, 24050, 24179, 24171, 24175, 24176, 24174, 24177, 4, 192, 195, 199, 193);

    if ($wp_query->is_category && in_array($wp_query->get_queried_object_id(), $specified_category_ids)) {
        $paged = 10; // 在指定分类下,超过 10 页后就显示 404
        if ($paged && $wp_query->get('paged') > $paged) {
            // 404 页面
            $wp_query->set_404();
            status_header(404);
            nocache_headers();
            include(get_query_template('404')); // 需要主题的 404.php
            die();
            // 404 页面
        }
    }
}

 

教程拓展,这个做任务客户网站分页,记录下来,大家可以忽略这个代码。

 如果当前分类是指定分类,则只显示1到10的分页。

function mo_paging() {
    $p = 3;
    global $wp_query, $paged;
    $max_page = $wp_query->max_num_pages;

    // 指定的分类ID数组
    $specified_category_ids = array(24172, 24173, 24192, 24188, 24193, 24191, 24187, 24190, 24189, 24186, 24184, 24182, 24183, 24180, 24181, 24185, 24050, 24179, 24171, 24175, 24176, 24174, 24177, 4, 192, 195, 199, 193);

    echo '<div class="theme_pagination"><ul>';
    if (empty($paged)) $paged = 1;
    echo '<li class="prev-page">'; previous_posts_link('上一页'); echo '</li>';
    
    // 如果当前分类是指定分类,则只显示1到10的分页
    if (is_category($specified_category_ids)) {
        for ($i = 1; $i <= 10; $i++) {
            $i == $paged ? print "<li class=\"active\"><span>{$i}</span></li>" : _paging_link($i);
        }
        echo '<li><span>共 10 页</span></li>';
        // 下一页
        echo '<li class="next-page">'; next_posts_link('下一页'); echo '</li>';
    } else {
        // 默认情况下的分页显示
        if ($paged > $p + 1) _paging_link(1, '<li>第一页</li>');
      
        for ($i = $paged - $p; $i <= $paged + $p; $i++) {
            if ($i > 0 && $i <= $max_page) $i == $paged ? print "<li class=\"active\"><span>{$i}</span></li>" : _paging_link($i);
        }
        echo '<li><span>共 ' . $max_page . ' 页</span></li>';
      
        // 下一页
        echo '<li class="next-page">'; next_posts_link('下一页'); echo '</li>';
    }
    
    echo '</ul></div>';
}

function _paging_link($i, $title = '') {
    if ($title == '') $title = "第 {$i} 页";
    echo "<li><a href='", esc_html(get_pagenum_link($i)), "'>{$i}</a></li>";
}

 

把以上代码复制放到当前主题的 functions.php 文件中,就可以实现当 WordPress 翻页超过 10 页后就会调用 WordPress 主题的 404 页面,可以通过修改代码的 paged 参数值修改翻页数量来自定义。

代码中会对所有的列表页面都生效,首页、文章归档(分类、标签、日期)、搜索页面等都一视同仁,还可以根据自己需要添加判断,根据不同的列表做不同的限制,子凡这里就不展开分享了。

另外如果你的翻译使用的是 get_next_posts_link(string $label=null, int $max_page) 来翻页下一页,还可以通过设置最大翻页来避免出现翻页死链的情况出现。

别看上面代码行数多,其实 404 页面那整段可以直接使用跳转到首页,甚至直接使用 die 结束,我这里分享只是为了漂亮的结束为 404 页面而已。

如果为了更好的防止 WordPress 被采集,那么还可以针对 feed、站点地图 sitemap 等方面做屏蔽,因为 WordPress 的翻页都有 page 参数所以还可以服务器屏蔽路径的方式。让采集获取不到网站完整的列表链接基本就能防止很大一部分采集。

由于我们 WordPress 交流群有人在问具体的栏目自定义屏蔽页数怎么办,所以就再来稍微修整一下,一下代码中的数字“10”就是可以自定义的,根据后面的备注修改就可以了。

//WordPress 禁止翻页屏蔽/防采集(自动版本)
add_filter('pre_get_posts','fanly_basic_query_posts');
function fanly_basic_query_posts($wp_query) {
	if($wp_query->is_admin || !$wp_query->is_main_query()) return;
	$paged = $wp_query->get('paged');
	if (($wp_query->is_home && $paged > 10)//首页
		|| ($wp_query->is_category('news') && $paged > 10)//指定分类
		|| ($wp_query->is_category && $paged > 10)//分类
		|| ($wp_query->is_tag && $paged > 10)//标签
		|| ($wp_query->is_author && $paged > 10)//作者
		|| ($wp_query->is_archive && $paged > 10)//归档
		|| ($wp_query->is_search && $paged > 10)//搜索
	) {
		//404 页面
		$wp_query->set_404();
		status_header(404);
		nocache_headers();
		include(get_query_template('404'));//需要主题的 404.php
		die();
		//404 页面
	}
}

好啦,以上就是针对 WordPress 防采集提供的一段代码,自我感觉最实用最佳的防止采集的办法及解决思路。如果您遇到网站问题,需要二次开发可以联系我们。微信:wxmbxzb

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.mizhanw.com/blog/4554.html

相关推荐
最新Wp Rocket设置教程, 含插件下载+常见问题解决方法
最新Wp Rocket设置教程(超详细), 附GPL版本插件下载链接。图文并茂详细解释每一个设置的含义以及优缺点+兼容性排除,找到最合适的设…
日期:2024-02-24 点赞:0 阅读:9
WordPress破解版插件/主题(开心版, GPL, Nulled)安全吗?有啥缺点?如何获取?
解版插件产业链,安全与否,以及如何下载安全高质量破解版插件,避免下载有病毒主题/插件。 WordPress破解版插件/主题安全吗?这是绝大多…
日期:2024-02-24 点赞:0 阅读:10
终极WordPress速度优化教程, 秒开页面! 优化思路+方法+工具
终极WordPress速度优化教程,全面讲解影响速度的因素和原理。FCP, LCP, TTFB, TBT, CLS,Wp corn, Mar…
日期:2024-02-24 点赞:0 阅读:10
WordPress 的最佳 Cloudflare 设置(边缘涡轮增压)
无论您的 WordPress 主机有多快都无关紧要;您永远无法克服网络延迟。像 Cloudflare 这样的内容分发网络 (CDN) 通过将…
日期:2024-02-24 点赞:0 阅读:9
使用国外主题/插件后网站变很卡响应速度很慢的问题
变卡的原因 由于国内GFW的限制,有些资源被挡在海外无法加载,或者有些资源服务器延迟太高,导致网站加载速度缓慢,解决办法如下,二选一即可。 …
日期:2024-02-21 点赞:0 阅读:31
如何使用 SearchWP 改进 WordPress 搜索(简单快捷)
你想使用 SearchWP 改进 WordPress 搜索吗? 通过改进 WordPress 的内置搜索功能,你可以帮助用户找到他们想要的内…
日期:2024-02-20 点赞:0 阅读:27
发表评论
暂无评论

还没有评论呢,快来抢沙发~