答案取决于这批外部脚本是否仍被页面引用:仍在引用的,先冻结权限再逐项核对调用链;已不再引用的,先摘除引用再清理权限。两种情况都不应直接删除脚本文件或账号,否则一旦某段旧内容仍在被访问,排查成本会高于保留成本。
整理权限清单的第一步不是打开后台逐个查权限,而是确认脚本当前是否真的被页面请求。做法很直接:在旧页面源码中搜索脚本域名或文件名,再检查模板、公共头部、统计位和组件是否还引用它。如果页面源码里已经找不到引用,但权限列表里还有它的授权,这属于残留;如果源码里仍有引用,只是没人说得清它做什么,这属于仍被加载。
这两类要分开处理。仍被加载的脚本,权限核对的重点是“它现在能读到什么、能写到什么”;只剩残留的脚本,重点是“撤销后会不会影响仍在访问的旧页面”。判断依据可以来自三个地方:页面源码中的引用位置、脚本请求记录中的实际调用、以及脚本对应的账号或密钥是否还有近期活动。三者不一致时,以页面源码为准,因为那是最直接的加载证据。
如果脚本仍在被页面请求,不要先删权限,而是先把它降级为只读或暂停写入类操作,观察一段时间。这样做的原因是:用途不明的脚本往往同时具备读取页面内容和向外部端点发送数据两类能力,直接撤销可能让某个仍被访问的旧页面出现空白或报错,反而掩盖了真实调用关系。
冻结之后,按下面顺序整理权限清单,每一项都要能回答“谁在用、用在哪、撤掉会怎样”:
完成清单后,做一个动作:只撤销一项外部通信权限,再访问仍引用该脚本的页面,记录页面是否正常、请求是否减少。如果页面正常且请求减少,说明这项权限可以继续保留在撤销状态;如果页面异常,恢复该项并把它移到“必须保留”组。这个动作的结果直接决定下一步是继续撤销,还是转为替换脚本。
如果页面源码里已经没有引用,但权限列表里仍有授权,处理顺序要反过来:先确认没有页面再请求它,再撤销授权。判断“没有页面再请求”不能只看首页,要覆盖旧文章、旧专题、旧活动页和可能被外部链接直接访问的深层页面。可以抽取一批旧页面,检查其中是否还出现该脚本的域名或文件名。
确认无引用后,先摘除模板或组件中可能存在的隐藏引用,再撤销账号、密钥和域名白名单。撤销后观察一段时间内是否出现异常请求或报错。如果出现,说明还有未覆盖的引用位置,应恢复授权并回到引用排查,而不是继续扩大撤销范围。
这里有一个容易被忽略的例外:某些旧页面虽然不再被站内导航链接,但仍可能被外部链接或历史收藏直接访问。这类页面如果还引用脚本,撤销授权后可能表现为内容正常但功能失效。处理办法是把这类页面单独列出,决定是保留脚本权限直到页面下线,还是先把页面改为静态内容再撤销。
可以用一个假设例子说明分界:假设某旧专题页仍被外部链接访问,页面源码中还有一段用途不明的脚本引用。此时属于“仍被加载”,应先冻结写入权限、保留读取权限,再逐项核对通信域名。假设另一个旧专题页已经不在任何导航中,源码里也搜不到脚本引用,只是权限列表里还有授权,此时属于“只剩残留”,应先摘引用再撤销授权。
两种条件下的共同动作是:任何撤销之前,先保留一份当前权限快照,记录撤销了哪一项、撤销后访问了哪些页面、页面表现如何。这份记录的作用不是留痕本身,而是让下一步判断有依据——如果后续出现异常,可以快速定位到具体撤销项,而不是重新猜测脚本用途。
需要说明的是,请求量下降或某项统计归零,不能单独证明撤销正确。它也可能来自页面本身访问量下降、缓存变化或请求被其他脚本合并。因此判断依据应同时包含页面功能是否正常、引用位置是否覆盖完整、以及撤销项是否与异常时间对应。只有这几项一致时,才适合继续清理下一项权限。