功能预览

功能介绍

草稿的预览链接会不会被抓走,预览参数该怎么收口

草稿或待发布内容带预览参数的链接会不会被爬虫抓到,取决于三件事:地址能不能被猜到、抓取规则有没有覆盖它、服务端读详情时是否校验状态。抓取排除规则只是建议,挡不住已经被分享出去的地址;真正的收口要落在状态校验与预览参数只在授权会话里生效这两条上,改完再用搜索引擎站点信息核对有没有漏页。

可见性 草稿预览

功能介绍

草稿或待发布内容带预览参数的链接会不会被爬虫抓到,这个问题不能只看抓取规则,要拆成三层看:地址能不能被猜到、抓取层面有没有挡住、服务端读这篇文档时有没有校验状态。三层里只有第三层是真正的访问控制,前两层都是降低暴露概率。

预览链接是怎么外泄的

预览链接的外泄路径通常不是爬虫主动扫到的,而是被人发出去的:把带参数的地址贴进聊天窗口、写进公开文章、发到社交平台,或者在分享环节被转发。一旦离开内网语境,它就成了一个普通可访问地址,任何抓取程序顺着外链都能拿到。另一条路径是地址可猜:如果预览参数是简短递增的数字或者能枚举的形式,遍历成本很低。所以收口的起点不是「爬虫会不会来」,而是「这个地址被拿到之后,服务端认不认它」。

抓取规则能挡住的和挡不住的

后台的 Robots 配置项能下发排除规则,它的作用是让遵守规则的抓取程序不去请求指定路径。它的边界要清楚:一是它按路径与程序标识表达意图,管不到已经带在 URL 里的单个预览地址,除非整个目录都被排除;二是它是建议而不是强制,不遵守的抓取方照样能请求;三是把敏感路径写进排除规则本身等于公开声明「这里有后台目录」,反而给探测指了路。所以排除规则适合挡整类目录,不适合当某一篇草稿的保护锁。

状态校验该落在哪一层

站内文档分成正式文档、草稿、待发布、回收站几种状态,删除正式文档是移入回收站而不是物理删除,这意味着「能不能读到」这件事必须按状态判断,而不是按地址判断。合理做法是把校验放在读详情的那一步:状态不是正式文档时,只有携带有效授权会话的请求才返回内容;匿名请求一律走不可见处理。预览参数只在授权会话里生效,链接被转发出去也就只是一个打不开的地址。这一层和伪静态规则无关——伪静态只决定地址长什么样,不决定谁有权看到内容,两者不要混为一谈。

三层各自的失效方式

收口层 起作用的方式 典型失效
地址不可猜 预览参数难以枚举 参数短、可递增遍历
抓取排除 遵守规则的抓取方不请求 已被外链带出、不遵守者照样抓
状态校验 服务端按状态与身份返回 只靠参数放行,匿名可读

表里第三行是能兜住前两行的那一层,前两层失效时它仍然生效。

上线前的三步验证

第一步用未登录的新会话打开预览地址,确认返回的不是正文;第二步登录后台后取同一地址,确认预览可见;第三步在搜索引擎侧查站点信息,看有没有草稿标题被收录的痕迹。发现已被收录时,除了改配置,还要处理外链来源,把带参数的地址从公开页面撤掉。

常见问题

问:把后台目录整个写进排除规则安全吗? 答:不更安全。排除规则是抓取建议,同时向外部标明了这个路径存在,入口防护要靠服务端鉴权。

问:草稿没发布,评论和留言能不能被匿名读到? 答:这属于同一类状态校验问题,要按文档状态判断可见性,而不是按链接有没有人知道。

问:预览参数换个长随机串就够了吗? 答:不够。长随机串只提高猜测成本,转发出去仍然可读;要不要给内容,得由服务端按会话与状态决定。

问:删掉的草稿需要额外处理吗? 答:删除是移入回收站,恢复能力保留,但预览地址应当随着状态变化一并失效。