防止采集需要一个组合策略,而不是依赖单一的方法,从简单到复杂,我将为你提供一个多层次、全方位的防护方案。

第一层:基础与常规防护(易实施,效果显著)
这些是首先要做的,门槛低,但能有效挡住大部分低级采集器。
版权声明与robots.txt
- 版权声明:在网站页脚、文章页末尾等显眼位置,用明确的文字声明版权,并警告禁止未经授权的采集,这虽然不能阻止技术采集,但可以起到法律威慑作用,并为日后维权提供证据。
- robots.txt:这是一个位于网站根目录的纯文本文件,用于告诉搜索引擎哪些页面可以抓取,哪些不可以。
- 重要提示:
robots.txt对搜索引擎是“建议”,对恶意采集器基本无效,但可以规范正规爬虫的行为,防止它们抓取你不想被公开的内容(如后台、会员中心等)。 - 示例:
User-agent: * Disallow: /dede/ # 禁止访问后台目录 Disallow: /member/ # 禁止访问会员中心 Disallow: /plus/ # 禁止访问一些动态程序目录 Disallow: /data/ # 禁止访问数据目录 Disallow: /special/ # 禁止访问专题页面(如果不想被收录) Allow: / # 允许抓取根目录下的公开内容
- 重要提示:
关键词密度与内容原创性
这是最根本、最有效的方法,采集器只能抓取已有的内容,无法创造新的。
- 提高原创度:确保你的网站内容是高度原创的,即使主题相同,也要用自己的语言、结构和观点重新组织。
- 控制关键词密度:避免文章中出现关键词的堆砌,原创文章的自然关键词密度通常在2%-8%之间,这样既有利于SEO,也让采集器难以通过简单的关键词匹配来抓取。
- 内容差异化:在文章中加入表格、图片、流程图、代码块、个人观点等非纯文本内容,这些内容结构复杂,采集器抓取后排版会乱七八糟,大大降低了采集的价值。
隐藏或混淆核心内容
- 图片防盗链:防止别人直接盗用你网站的图片,消耗你的服务器带宽。
- 方法:在服务器上配置
.htaccess(Apache) 或nginx.conf(Nginx) 来设置Referer验证。 - Apache .htaccess 示例:
RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ [NC] RewriteCond %{HTTP_REFERER} !yourdomain.com [NC] RewriteCond %{HTTP_REFERER} !google.com [NC] RewriteCond %{HTTP_REFERER} !baidu.com [NC] RewriteRule .*\.(jpg|jpeg|gif|png|bmp)$ http://yourdomain.com/404.jpg [R,NC,L]这段代码的意思是:如果引用图片的来源(Referer)不是你的域名、谷歌或百度,那么就显示一个
jpg图片。
- 方法:在服务器上配置
- 内容部分加载:使用 JavaScript 动态加载文章的部分内容(如“点击加载全文”、“查看更多评论”),采集器默认不执行JS,只能抓取到部分内容。
- 添加随机水印:为文章内容中的图片添加包含网站URL的随机水印,增加盗用的成本。
第二层:技术进阶防护(需要一定技术能力)
这些方法通过修改 DedeCMS 源码或使用插件来实现,能有效对抗更高级的采集器。

修改文章内容发布形式(核心技巧)
这是针对 DedeCMS 最有效的防采集方法之一,采集器通常通过固定的 article.php?id=123 这样的URL来抓取。
- 方法:将文章的URL从动态的
article.php?id=XXX改为静态的/archives/xxx/xxx.html格式,并在HTML内容中不显示文章ID。 - 如何操作:
- 开启伪静态:在 DedeCMS 后台 -> 系统 -> 系统基本参数 -> 核心设置 -> 是否使用伪静态,选择“是”。
- 修改文章模板:打开
templets/default/article_article.htm文件。 - 隐藏文章ID:找到文章标题的链接标签,通常是:
<a href='[field:arcurl/]'>[field:title/]</a>
这个标签生成的URL是静态的,如
/archives/123/456.html,采集器可以通过分析URL规律批量抓取。 - 增加随机字符串:我们可以修改
article_article.htm,在arcurl中加入一个随机或固定的标识,修改为:<a href='/article/[field:id/]/[field:sortid/].html'>[field:title/]</a>
你需要修改
include/helpers/channelunit.helper.php文件,找到GetArcUrl函数,让它生成新的URL规则,生成/article/123/456.html,这样,URL结构变得不那么通用,增加了采集器的识别难度。
添加动态加载和混淆
- 使用JS加载正文:在
article_article.htm中,将文章正文内容([field:body/])用一个<div>包起来,并设置id="article-content",在页面底部用JavaScript动态读取这个div的内容并插入到页面中。<!-- article_article.htm --> <div id="article-content-placeholder">正在加载内容...</div> <script> fetch('/api/get_article_content.php?id=[field:id/]') .then(response => response.text()) .then(html => { document.getElementById('article-content-placeholder').innerHTML = html; }); </script>这需要你创建一个API接口(
get_article_content.php)来返回文章内容,采集器因不执行JS而无法获取正文。
(图片来源网络,侵删) - HTML/CSS 混淆:使用CSS将一些文字颜色设置为与背景色相同,或者将文字打散成多个
<span>标签,并用CSS定位,这会影响SEO,慎用。
登录才能查看全文
- 方法:设置只有登录用户才能查看文章的完整内容。
- 如何操作:
- 在 DedeCMS 后台 -> 系统 -> 系统基本参数 -> 内容选项 -> “游客是否浏览未审核文档”和“游客是否浏览会员专属文档”设置为“否”。
- 在发布文章时,选择“仅会员可见”或类似的属性。
- 缺点:这会严重影响SEO,因为搜索引擎蜘蛛也无法抓取全文,不推荐对普通文章使用。
第三层:高级与主动防御(综合解决方案)
这是最全面的方案,结合了多种技术,能主动发现和阻止采集行为。
部署WAF(Web应用防火墙)
WAF是抵御网络攻击(包括采集)的利器,它可以分析HTTP请求,并根据规则识别并拦截恶意行为。
- 云WAF服务:如阿里云、腾讯云、Cloudflare 等都提供WAF服务,它们有现成的防爬虫规则,可以轻松识别高频请求、异常请求路径等。
- 自建WAF:如果你有技术能力,可以自己基于 Nginx + Lua (OpenResty) 或 ModSecurity 搭建WAF,编写自定义的防采集规则。
限制IP请求频率
这是WAF的核心功能之一,也可以在服务器层面实现。
-
Nginx 示例:
# 限制每个IP每分钟最多请求30次 limit_req_zone $binary_remote_addr zone=one:10m rate=30r/m; server { ... location / { limit_req zone=one burst=5 nodelay; ... } }这个规则可以有效防止一个IP在短时间内大量抓取你的页面。
定期更换模板和结构
采集器通常是针对特定模板编写的,如果你定期更换网站的模板(尤其是文章列表页和内容页的HTML结构),采集器抓取到的内容就会因为无法正确解析而失效。
监控与反制
- 日志监控:定期分析服务器日志(Nginx/Apache的access.log),查找异常的访问模式,比如短时间内大量请求特定目录或特定ID的文章。
- 反向查询:将你的文章标题用引号在搜索引擎中搜索,看看是否有未经授权的转载。
- 法律手段:对于大规模、恶意的商业采集,保存证据后,可以发送律师函或提起诉讼。
总结与推荐方案
对于 DedeCMS 用户,我推荐的组合拳方案如下:
-
基础必做:
- 设置好
robots.txt,屏蔽后台和敏感目录。 - 坚持原创内容,这是所有技术防护的基石。
- 开启伪静态,并将文章URL结构进行微调(如修改
channelunit.helper.php),使其不那么通用。
- 设置好
-
进阶推荐:
- 部署云WAF(如阿里云WAF或Cloudflare),这是性价比最高的主动防御方案,能自动处理大部分恶意请求。
- 为图片添加防盗链,防止资源被直接盗用。
-
可选操作:
- 如果你的网站内容价值极高,可以考虑使用JS动态加载文章正文,但要注意对SEO的影响。
- 定期更换模板,增加采集器的识别成本。
通过以上多层次的防护,你的 DedeCMS 网站将能抵御绝大多数的采集行为,保护你的原创内容。
