先给有条件的结论:如果异常流量已经挤占正常服务资源,最小可行动作是先做“只读快照”,再决定是否限流或封禁。快照要同时保留访问日志、服务端资源曲线和请求特征三类证据,且尽量在原始数据被轮转覆盖前完成。缺少完整权限或全量数据时,这个动作仍然可做,但只能支撑“当时确实存在异常压力”的判断,不能直接推出是谁在操纵、也不能证明排名因此变化。
异常流量挤占资源时,最自然的反应是立刻封IP或加验证。但清理动作会改变现场:被拒的请求不再写入访问日志,连接数曲线随之回落,之后再想区分“攻击停止”还是“被自己挡掉了”就缺少依据。证据保存的价值在于,它把“当时的资源状态”和“当时的请求形态”固定在同一时间窗里,让后续判断有可比对的基准。
一个实际动作是:在限流规则生效前,先把最近一段时间的访问日志、限流命中计数、后端响应时间导出到独立存储。结果会直接影响下一步——如果快照显示异常请求集中在少数路径且并发极高,优先做资源隔离;如果异常请求分散在大量正常路径上、单IP请求量并不突出,贸然按IP封禁会误伤真实用户,此时更该先观察请求指纹而非直接拦截。
没有服务器root权限、拿不到全量日志、也看不到上游清洗设备的数据,是常见处境。此时可保存的最小证据集包括三类,按可得性排序:
这些材料不需要完整,但时间必须对齐。假设某站点在14:00—14:10出现响应变慢,而访问日志只覆盖14:05之后,那么“变慢从14:00开始”就缺少直接证据,只能作为待验证的推测。可执行的动作是记录采集时刻和日志覆盖范围,明确标注缺口,避免把推测当成结论使用。
请求量、抓取量或某项统计突然归零,常被当成“异常已处理”的证据,但这不成立。归零还有几种合理解释:日志轮转把旧记录覆盖了、监控采样周期变长、上游节点切换导致数据源改变、或者限流规则本身把记录入口关掉了。同样,单看CPU冲高也不能证明是恶意流量,正常促销、缓存失效、数据库慢查询都可能造成类似曲线。
一个反例足以让前面的结论失效:如果异常时段恰好与一次正常的版本发布或缓存预热重合,那么资源曲线和请求峰值都可能由正常业务引起,此时保存下来的“异常证据”其实混入了发布流量。判断时需要至少一条能区分两者的线索,例如发布只影响特定新路径,而异常请求集中在旧接口上。
证据的作用不是直接给出结论,而是缩小下一步的排查范围。可参考这样的顺序:先确认资源压力是否与请求量同步上升;若同步,再看请求是否集中在少数来源或少数路径;若集中,才考虑针对性的限流或验证;若分散,则应先检查自身服务是否存在放大效应,例如某个接口每次请求都触发昂贵查询。
假设某站点在异常期间带宽翻倍,但访问日志显示请求数只增加一成,那么压力可能来自单次响应体积变大或大文件被反复拉取,而非请求数量本身。这个对比会改变处理方向:前者要查响应内容和缓存策略,后者才考虑来源拦截。数字仅用于说明比较方法,不代表任何实际站点的真实表现。
保存证据的目的是还原事实、保护正常服务,而不是反过来用于操纵流量或规避平台规则。不要尝试通过伪造身份、批量请求或购买点击来“对冲”异常流量,这类做法既无法解决资源挤占,也会让日志失去可信度。需要长期防护时,正规替代路径是完善访问控制、缓存策略和容量监控,并在必要时联系托管或CDN服务方协助定位。
证据保存只是排查链条的起点,它不能承诺任何排名、收录或收益结果,也不应被当作已经找到原因的标志;在时间窗对齐、来源可区分、且排除了正常业务干扰之后,再进入限流或修复动作,才不会让后续判断建立在被自己改动过的现场之上。