功能预览
防采集干扰码和拒绝抓取不是同一件事,它们挡在不同层。拒绝抓取作用于请求准入:靠协议声明和服务端限频,决定要不要让抓取发生。干扰码作用于内容层:让已经被批量抄走的正文不能直接可用。本文讲清两者覆盖对象的差别、各自失效的场景,以及站内在 robots、干扰码与内容审核之间的配置配合。
防采集干扰码和拒绝抓取不是同一件事,它们分别站在内容保护的两层。拒绝抓取管的是「要不要让这次抓取发生」,属于请求准入;干扰码管的是「已经被抄走的内容还能不能用」,属于内容本身。把两者当成一件事,常见后果是该拦的没拦住、该保护的没保护。
拒绝抓取是准入层的动作。它靠两样东西:一是协议声明,在 robots 配置里写明哪些路径不希望被抓;二是服务端限频与识别,对异常高频的抓取请求做节流或直接拒绝。这一层针对的是「请求」,处理的是要不要响应、以什么频率响应。
干扰码是内容层的动作。它在正常正文里混入对真人不可见、对批量采集可见的干扰内容——真人浏览时看不出,整段被搬走时,采到的文本就带着乱序字符、隐藏标记或错乱片段。这一层针对的是「已经拿到手的正文」,处理的是这份内容能不能被原样复用。
| 维度 | 拒绝抓取(准入层) | 干扰码(内容层) |
|---|---|---|
| 作用对象 | 抓取请求 | 被抓走的内容 |
| 生效时机 | 请求到达、返回之前 | 内容被复制、搬运之后 |
| 依赖 | 协议声明 + 服务端限频 | 正文渲染时注入干扰 |
| 失效场景 | 对方无视声明 | 对方只截图或人工转写 |
干扰码的价值在于提高搬运成本。全自动批量采集指望的是「抓下来就能用」,一旦正文里混进对人不可见、对机器照单全收的字符,采集端要么得花力气剥离,要么把乱码一起发出去,直接损害对方站点的可读性。对于以量取胜的搬运,这是性价比很高的防线。
它不解决的是「人肉抄写」或「只存图片」的场景,那类内容干扰码无从生效。所以干扰码是准入控制之外的补充,不是替代。
Robots.txt 这类配置是「意向声明」,写给守规矩的正规抓取方看的。它既不是访问控制也不是安全边界——不守规矩的采集器完全可以无视它照样请求。如果只在 robots 里写「请勿抓取」,而服务端不做任何限频,等于对真正想抄的人没有约束。拒绝抓取想真正生效,得有服务端这一侧的配合,声明只是其中一环。
站内把这一层单独拿出来配置:Robots.txt 由后台管理,抓取放行与屏蔽在这里声明,和「防采集」是分开两件事。搜索引擎的正常收录要放行,恶意批量采集要在服务端限频,两者不能靠同一份声明解决。
AnQiCMS 里这三处各司其职:Robots.txt 配置管抓取准入的声明;防采集干扰码管正文被搬走后的可用性;内容安全设置里的敏感词过滤与关键词替换、内容审核管发布前内容质量。三者对象不同,顺序也不同——审核在写入前,干扰码在渲染时,robots 在响应前。把它们排在一起看,才能想清楚「我到底想挡谁」。
问:只开干扰码不做限频行不行? 答:能保护已抄走的内容,但挡不住抓取本身,服务器仍会被高频请求消耗。两者一层管请求、一层管内容,配合使用覆盖更完整。
问:robots 里屏蔽了,内容就安全了吗? 答:不是。屏蔽声明只对正规抓取方有效,不构成访问控制。私密或不宜公开的内容要落在服务端权限里,而不是只写进 robots。
问:干扰码会影响真人阅读吗? 答:正常设计下对真人不可见,只在批量复制时被带出。上线前建议用自己账号在多种设备核对一遍显示效果。
预览
多站点共用一套后台,天然隔离的是内容与分类,必须手工确认的是域名与跳转、模板与站点参数、接口与高危操作权限这三层。本文按四层拆解隔离边界:内容层按站点分库表或分分类维度、展示层按域名绑定模板、跳转层避免跨域重定向互相覆盖、权限层把全站级操作收紧到显式开启,并给出多品牌与多语言站点场景下的配置检查表。
预览
面向大模型的站点说明文件按 llms.txt 规范写,格式上的硬性要求只有一条:必须有一个包含项目或站点名称的一级标题段落,其余正文段落、列表、说明与链接段都是可选。该规范由 Jeremy Howard 提出,目前仍是开放征求社区意见的提案,不是正式标准。站内支持自动生成这一文件,上线前要核对名称段、重点内容清单与更新时间三项。
预览
内容模型的自定义字段设计不当,常见后果是做到一半就得改表。本文给出三步法:先列出需要被单独引用的答案字段,再定字段类型与是否必填,最后确认批量导入和公开接口能不能读到这些字段。并说明最容易返工的三类点——字段名频繁变更、把展示逻辑塞进字段、忽略接口可读性。