分享一下WordPress网站防采集的办法和解决代码附上,采集时大多数人都是根据文章栏目和列表获取采集文章的 URL 链接,所以最重要的就是翻页,这也是几乎所有网站暴露网站所有文章的一种方式,那么最简单的解决办法就是让网站列表不能无止境的翻页,这样就算能采集几十篇的内容,也无法把整站的内容都采集走了。
复制放到当前主题的 functions.php 文件中
//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 页面 } }
把以上代码复制放到当前主题的 functions.php 文件中,就可以实现当 WordPress 翻页超过 10 页后就会调用 WordPress 主题的 404 页面,可以通过修改代码的 paged 参数值修改翻页数量来自定义。
另外如果你的翻译使用的是 get_next_posts_link(string $label=null, int $max_page) 来翻页下一页,还可以通过设置最大翻页来避免出现翻页死链的情况出现。
为了更好的防止 WordPress 被采集,那么还可以针对 feed、站点地图 sitemap 等方面做屏蔽,因为 WordPress 的翻页都有 page 参数所以还可以服务器屏蔽路径的方式。让采集获取不到网站完整的列表链接基本就能防止很大一部分采集。