知识

工作日、周末、假期:拦截率如何随日历变化

没有人会公布按星期几统计的爬虫拦截率。数据来自机器人、假期和高峰事件,揭示了拦截率变化的原因,以及如何衡量你自己的日历规律。

Matt Brown

Matt Brown

2026年9月24日 · 2 分钟阅读

任何长时间运行爬虫的人都会注意到:同样的任务,针对同样的网站,用同样的代码,在某些天失败得比其他天更多。周二没问题。周六更差。十一月的最后一周则完全是另一个世界。人们很容易把这称为噪音。但通常并非如此。

诚实的出发点是,没有任何公开数据集按星期几或节假日来衡量爬虫的封锁率。关于机器人封锁的最新大型研究,来自班贝格大学,发表于2026年,只是2026年初四天内的一次单次扫描,没有观察封锁如何随时间变化。真正存在的数据,是关于驱动封锁率的因素的大量信息:当人类流量变化时,机器人流量的占比如何变化;在高峰事件中防御措施会发生什么;以及负责调整这些防御措施的人何时停止调整。把这些拼在一起,就能解释爬虫运营者所看到的大部分现象。

关键要点

  • 目前没有按星期或节假日发布的爬虫封锁率测量数据。任何引用此类数据的人都应被要求说明方法。
  • 当人类流量下降时,机器人占比会上升。Cloudflare测得周末总流量下降约4%,但经过验证的机器人流量仅下降约1%。
  • 购物高峰事件会带来更多机器人和更严格的防御。Imperva测得恶意机器人在节假日购物季零售流量中占26.3%,而全年平均值为22.7%。
  • 最糟糕的机器人日不一定是那个最有名的日子。Queue-it的零售样本显示,2024年12月11日非人类流量达到访问量的83%,而不是黑色星期五。
  • 变更冻结是围绕高峰季节和年末的既定做法,因此防御措施通常在期间之前和之后变化,而不是在期间之中。

为什么日历会影响封锁率

在大多数现代系统中,网站决定是否质询或封锁某个请求时,是根据当前流量做出判断的。日历上有三件事会改变这种判断:

  1. 流量构成。 当人类离开时,留下的自动化流量在总量中的占比就更大,而占比往往正是让防御者和模型感到警觉的因素。
  2. 风险高低。 在促销日或抢票日,网站更关心黄牛、撞库和囤货行为,因此愿意容忍更多摩擦来阻止它们。
  3. 人的因素。 规则是由团队编写和调整的,而这些团队会在最关键的时刻休假并冻结变更。

每一点都有证据支持。

周末:人类离开,机器人大多不离开

人类互联网流量有明显的每周节律。英国国家统计局数据科学园对伦敦互联网交换中心流量的分析发现,“周末往往流量较低,而周中几天流量最高”,银行假日前后的流量平均低约7.8%,圣诞节期间流量更低。

自动化流量则更为平稳。Cloudflare对2020年1月至7月的分析发现,虽然典型工作日流量略高于平均值,但周末显示”总流量下降约4%“,而这种模式”并不完全适用于经过验证的机器人,它们仅出现约1%的小幅下降”。同一分析还发现,人类流量在协调世界时00:00至05:00之间约低15%,在14:00至17:00之间最高可高出25%。

如果一个网站的自动化流量保持稳定,而人类流量下降,那么自动化流量的占比就会上升,任何一个自动化请求看起来异常的概率也随之增加。这是周末和夜间封锁率变差背后最合理的机制,也是为什么持续、无固定时间表的爬取在周日比在周二更容易引人注目。

有一个重要的反例。Integral Ad Science在391天内测量广告展示中的机器人流量,发现其追踪的机器人呈现相反的模式:工作日机器人流量比周末高约21.2%,而人类流量仅高6.9%。并非所有自动化都是平稳的。模仿人类作息的欺诈操作,其行为方式与爬虫不同,而网站的防御系统会同时看到所有这些流量。你自己的封锁率是否存在每周效应,是一个针对每个目标的实证问题。

高峰事件:更多机器人,更多摩擦

购物日历将问题的两端都集中在一起。

发现来源
2023年恶意机器人在节假日购物季零售流量中占26.3%,而全年平均值为22.7%;黑色星期五的账户盗用攻击上升85%Imperva,2023年11月
2024年黑色星期五,机器人流量在电商流量中最高占19%,人类占81%;机器人占登录尝试的63%,较一个月前略有下降,原因是人类登录增加Cloudflare,2024年12月
在2025年”网络五日”期间,28%的请求来自机器人或数据中心,低于2024年的36%;97%被展示质询的可疑访客未能通过质询Queue-it,138家零售商,2025年12月
在2024年购物季,46%的访问被标记为机器人或数据中心流量;最糟糕的一天是12月11日,达到83%Queue-it,2024年12月
2025年样本中的零售商部署了787个候客室,整个季节激活超过2000次Queue-it,2025年12月

有两个细节值得指出。首先,Cloudflare的数据显示,在最大的高峰日,人类流量的增长实际上可能稀释机器人占比,因为人类到访的数量要多得多。高峰日不一定是你的自动化流量占比看起来最糟糕的一天。其次,Queue-it的数据显示,非人类流量最糟糕的一天出现在12月中旬,而不是黑色星期五。为某个已知事件收紧防御的网站,可能会将这种收紧状态维持数周之久。

实际的结论是,任何针对零售、票务或旅游行业的爬虫,都应该预计从11月中旬到12月,无论其自身行为如何,都会遇到更多质询、更多候客室以及更低的容忍度。

节假日:更安静,有时也更平和

节假日的影响是双向的。人类流量下降:Cloudflare测得2023年感恩节美国流量比前一周低约10%。看起来,某些攻击流量也是如此。同一分析发现,感恩节当月”被归类为针对美国的DDoS攻击的流量占比最低”。

对爬虫来说,目标所在国家的公共假日结合了两方面:人类流量降低会推高自动化流量占比,而防御方的人手也更少。对你封锁率的净影响取决于具体目标。可以确定的是,节假日是具有地域性的。一个国家的周二,在另一个国家可能是节假日,这也是为什么应该按目标、按市场分别测量,而不是采用全局数据的又一个理由。

变更冻结:防御措施何时停止变化

规则的变化由人来决定,而人会在可预测的时刻冻结变更。这是有据可查的做法,而不是传闻。

  • Shopify工程团队描述了一个功能冻结,“在BFCM前几周开始”,以及在活动前几天和期间的代码冻结,“此时只能部署关键修复”。
  • GitLab将生产变更锁定定义为”在团队可用性降低的时期(例如重大节假日)对所有生产变更的完全暂停”。
  • Cloudflare的WAF托管规则遵循”七天发布周期,通常在周一或周二(根据公共假日调整)”。

冻结机制使得高峰季节一旦开始就显得异常稳定:防御措施在此前数周被收紧,然后基本保持不变。这也使得一月成为变化频发的季节。假期期间被推迟的规则会在团队返岗后上线,这时一个整个十二月都运行正常的爬虫,可能在自身没有任何变化的情况下突然失效。

测量你自己的日历

由于没有公开数据集能针对你的目标回答这个问题,唯一可靠的答案来自你自己的日志。方法很简单:按目标、按星期几和小时(使用目标所在地的当地时区)计算封锁率,并将每个时段与该目标的整体封锁率进行比较。

from collections import defaultdict
from datetime import datetime


def block_rate_by_slot(rows, tz=None, min_requests=50):
    """rows: (target, iso_timestamp, blocked). Block rate per target, weekday and hour."""
    counts = defaultdict(lambda: [0, 0])
    for target, ts, blocked in rows:
        t = datetime.fromisoformat(ts)
        if tz is not None:
            t = t.astimezone(tz)
        slot = (target, t.strftime("%a"), t.hour)
        counts[slot][0] += 1
        counts[slot][1] += int(blocked)
    return {
        slot: round(b / n, 3)
        for slot, (n, b) in counts.items()
        if n >= min_requests
    }

将软封锁也计入封锁,而不仅仅是错误代码,因为以成功状态码提供的质询页面仍然是一种拒绝;静默失败率介绍了如何检测这类情况。在得出结论之前,至少保留几周的历史数据,并标记已知事件和当地节假日,以免一次糟糕的黑色星期五成为你对所有星期五的模型。

据此安排调度

一旦你了解了目标的日历规律,一些调整就会自然而然地出现。

  • 按星期几设定基准,而不是按天。 一个将周六与工作日平均值进行比较的健康评分,每个周末都会发出错误警报。应该进行同类比较,详见构建目标健康评分。
  • 将灵活的工作调度到合适的时段。 不需要在特定日期运行的刷新任务,可以转移到目标容忍度最高的时段和日期。成本感知的爬取调度已经按成本权衡每次访问;更高的预期封锁率意味着更高的成本。
  • 在目标的高峰期放缓节奏。 在最大促销日,零售商正在承受真实负载下保护真实客户。在已知事件期间降低并发数、拉长间隔,既是礼貌之举,也是明智之举,背压机制应该在封锁率上升时自动完成这一调整。
  • 留意一月份。 预计防御措施会随着冻结解除而变化,并保持金丝雀监测运行,以便在数小时而非数周内察觉变化。
  • 从市场自身的时区和视角采集数据。 节假日和每日节律都是地域性的,网站提供的内容也是如此。使用针对特定国家的住宅出口节点,例如Shifter网关上的country-de,可以让爬虫像德国当地访客在德国节假日那样看到德国网站。

结论

封锁率随日历变化是有可以理解的原因的:自动化流量比人类流量更平稳,因此当人们下线时,其占比会上升;高峰事件会在其前后数周内带来更多机器人和更严格的防御;而负责这些防御的团队会在最繁忙的时期冻结变更,并在之后恢复调整。这些现象都没有在任何公开数据集中针对爬虫直接测量过,而且证据并不一致:某些机器人流量会紧密遵循人类作息。

这意味着日历问题需要每个团队根据自己的数据来回答。按目标、星期几和小时拆解你的封锁率,标记节假日和促销事件,并据此调度。你所发现的模式将是针对你自身目标的特定规律,远比任何全局平均值更有用。

来源与参考文献

准备好开始了吗?

试用 Shifter 住宅代理,205M+ 个 IP,195+ 个国家,低至 $0.10/GB。

立即开始