先给结论:要保存的是“资源被谁、以什么方式占用”的可复核证据,而不是先急着删日志或封IP。伪原创软件生成的页面如果被批量抓取或反复请求,单看访问量上升无法证明是攻击,也无法证明是正常增长;正确顺序是先固定原始记录、再判断流量性质、最后决定限流或下线,否则后续既难追责,也可能误伤真实用户。
在小规模测试里,伪原创软件产出的页面可能只被少量爬虫访问,服务器负载看不出异常。一旦页面数量放大到几千、几万条,同样一套采集逻辑会变成持续、高频、并发的请求,把数据库连接、带宽或应用进程占满。此时出现一个矛盾现象:单位时间的请求数并不夸张,但正常用户的响应时间明显变长。
这个矛盾通常有两种解释。第一种是资源被低价值请求持续占用,例如大量相似页面被反复抓取,每次都要查询数据库和渲染模板。第二种是正常业务本身在增长,只是恰好与伪原创页面的访问高峰重叠。两者的处理方式完全不同:前者要限制或清理,后者要扩容或优化。不能仅凭“流量涨了”就归因于伪原创软件,也不能仅凭“页面是我生成的”就认定请求恶意。
关键是把请求按来源、路径和资源消耗拆开,而不是只看总量。可以从以下维度留存记录:
如果请求路径高度集中、来源标识单一、且资源消耗与请求量强相关,更支持“低价值请求挤占资源”的解释。如果请求路径分散、来源多样、正常用户指标同步增长,则更可能是业务增长或页面被正常收录后的访问增加。注意:抓取量归零或某项统计消失,并不能单独证明处理正确,也可能是日志轮转、采样丢失或缓存命中导致的假象。
第一步是冻结原始日志,在滚动删除之前把异常时段的应用日志、访问日志、数据库慢查询日志复制到独立存储,保留原始格式,不要先做过滤或聚合。第二步是记录现场状态,包括当时的并发连接数、内存占用、磁盘IO和进程列表,这些能说明资源被占用的程度。第三步才是做一次受控的对照观察:在低峰时段临时限制疑似来源的请求速率,观察正常用户响应是否恢复。
这个动作的结果会直接影响下一步:如果限流后正常服务恢复,说明资源确实被该来源挤占,可以进入清理或规则调整;如果限流后没有改善,说明瓶颈可能在数据库、缓存或应用代码,需要回到性能排查,而不是继续追查伪原创页面。
假设某站点用伪原创软件生成了约五千条产品描述页,某天下午正常用户反馈打开缓慢。运维先保存了当天13:00到15:00的原始访问日志,发现其中约七成请求集中在/product/desc-*.html,来源User-Agent只有两种,且每个请求都触发三次数据库查询。随后在15:10对该URL模式限制为每秒五个请求,正常用户的首屏时间从四秒回落到一秒以内。这个对照说明资源挤占与这批页面高度相关,但不能直接证明对方是恶意——也可能是某个采集器在正常抓取,需要结合robots协议、服务条款和实际影响再决定是否封禁或下线页面。
如果限流后首屏时间没有变化,那么证据指向的是数据库连接池或缓存失效,此时继续保存伪原创页面的访问记录仍有价值,但不应把它当作唯一原因。
直接删除伪原创页面、清空日志或批量封IP,都会让后续无法复核。伪原创软件本身不产生合法流量,也不改变内容质量;如果页面只是重复拼凑,即使没有被异常请求,长期也会带来维护和信任风险。保存证据的目的是让判断有依据,而不是把“流量异常”直接等同于“对方攻击”。在规模化之前,先确认单页面的资源开销和被抓取频率,再决定是否批量生成,比事后补救更可控。