クローラーを十分長く運用していれば、誰でも気づくことがある。同じジョブを、同じサイトに対して、同じコードで実行しても、ある日は他の日よりも失敗が多い。火曜日は問題ない。土曜日は状況が悪い。11月の最終週はまったく別の世界になる。それをノイズと呼びたくなるが、通常はそうではない。
正直な出発点は、スクレイパーのブロック率を曜日別や祝日別に測定した公開データセットは存在しないということだ。ボットブロッキングに関する最新の大規模研究は、University of Bambergによる2026年のもので、2026年初頭のわずか4日間の単発スキャンにすぎず、時間経過によるブロッキングの変化を見るものではなかった。存在するのは、ブロック率を左右する要因についての相当なデータだ。人間のトラフィックが変動するときにボットトラフィックの比率がどう動くか、ピークイベント時に防御がどうなるか、そしてその防御を変更する人々がいつ変更を止めるか、といったことだ。これらを組み合わせると、クローラー運用者が目にする現象の大半が説明できる。
主な要点
- スクレイパーのブロック率を曜日や祝日別に測定した公開データは存在しない。それを引用する人には手法を尋ねるべきだ。
- 人間のトラフィックが減少するとボットの比率は上昇する。Cloudflareの測定では、週末の全体トラフィックの減少は約4%だったが、検証済みボットではわずか約1%だった。
- ピークショッピングイベントは、より多くのボットとより厳しい防御をもたらす。Impervaの測定では、悪性ボットはホリデーシーズンの小売トラフィックの26.3%を占め、年間平均の22.7%を上回った。
- 最悪のボットの日は、必ずしも有名な日ではない。Queue-itの小売サンプルでは、2024年12月11日に非人間トラフィックが訪問の83%に達したが、これはブラックフライデーではなかった。
- 変更凍結(チェンジフリーズ)は、ピークシーズンや年末の前後で文書化された慣行であり、そのため防御はその期間中ではなく、前後に変更される傾向がある。
カレンダーがブロック率をそもそも動かす理由
リクエストをチャレンジするかブロックするかを決定するサイトは、多くの現代的な仕組みにおいて、現在のトラフィックに対する判断を行っている。カレンダー上の3つの要素がこの判断を変える。
- トラフィックの構成。 人間が離脱すると、残った自動化トラフィックが全体の中で占める比率が大きくなり、その比率こそが防御側やモデルを警戒させることが多い。
- 利害の大きさ。 セールの日やチケット発売の日には、サイトはスキャルパー、クレデンシャルスタッフィング、在庫の買い占めをより強く懸念し、それらを止めるためのフリクションをより多く許容する。
- 人々。 ルールは、最も重要な瞬間に休暇を取り、変更を凍結するチームによって書かれ、調整されている。
それぞれに裏付けとなる証拠がある。
週末:人間は離脱するが、ボットは概して離脱しない
人間のインターネットトラフィックには強い週次のリズムがある。UK Office for National StatisticsのData Science Campusによる、London Internet Exchangeのトラフィック分析では、「週末は一般的にトラフィックが低く、週半ばの日々が最も多い」ことが判明し、公的祝日周辺のトラフィックは平均で約7.8%低く、クリスマス期間はさらに低かった。
自動化トラフィックはより安定している。Cloudflareによる2020年1月から7月の分析では、典型的な平日は平均をわずかに上回るが、週末には「全体トラフィックで約4%の減少」が見られ、このパターンは「検証済みボットには完全には当てはまらず、その減少はわずか1%にとどまる」ことが判明した。同じ分析では、人間のトラフィックは協定世界時0時から5時の間で約15%低く、14時から17時の間では最大25%高いことも判明した。
サイトの自動化トラフィックが安定している一方で人間のトラフィックが減少すれば、自動化トラフィックの比率は上昇し、それに伴って任意の自動化リクエストが異常に見える可能性も高まる。これは、週末や夜間のブロック率が悪化する最も説得力のあるメカニズムであり、決まったスケジュールのない定常的なクローリングが、火曜日よりも日曜日に目立ちやすい理由でもある。
重要な反証もある。Integral Ad Scienceは、広告インプレッションにおけるボットトラフィックを391日間にわたって測定し、自らが追跡するボットについては逆のパターンを見出した。平日のボットトラフィックは週末に比べて約21.2%高かったのに対し、人間ではわずか6.9%だった。すべての自動化が安定しているわけではない。人間のスケジュールを模倣する不正操作は、クローラーとは異なる振る舞いをし、サイトの防御はそのすべてを同時に見ている。自分自身のブロック率に対する週次の影響は、対象ごとに実証的に確認すべき問題だ。
ピークイベント:ボットも増え、フリクションも増える
ショッピングカレンダーは、問題の両側を集中させる。
| 発見 | 出典 |
|---|---|
| 2023年、悪性ボットはホリデーシーズンの小売トラフィックの26.3%を占め、年間平均の22.7%を上回った。アカウント乗っ取り攻撃はブラックフライデーに85%増加した | Imperva、2023年11月 |
| 2024年のブラックフライデーには、ボットはEコマーストラフィックの最大19%、人間は81%を占めた。ボットはログイン試行の63%を占め、1ヶ月前よりわずかに低下し、人間のログインが増加した | Cloudflare、2024年12月 |
| 2025年のCyber Five期間全体で、リクエストの28%がボットまたはデータセンターからのもので、2024年の36%から低下した。疑わしい訪問者にチャレンジを表示した場合、97%が失敗した | Queue-it、138の小売業者、2025年12月 |
| 2024年シーズン全体で、訪問の46%がボットまたはデータセンタートラフィックとフラグ付けされた。最悪の日は12月11日で、83%だった | Queue-it、2024年12月 |
| 2025年のサンプルにおける小売業者は787の待合室を展開し、シーズン中に2,000回以上作動させた | Queue-it、2025年12月 |
2つの詳細を取り上げる価値がある。第一に、Cloudflareの数値は、最大のピーク日には人間の増加がむしろボットの比率を薄める可能性を示している。なぜなら人間ははるかに多い人数で来訪するからだ。ピーク日が必ずしも自動化トラフィックの比率が最悪に見える日とは限らない。第二に、Queue-itの数値は、非人間トラフィックの最悪の日が12月中旬に落ち込むことを示しており、ブラックフライデーではない。既知のイベントに向けて防御を強化するサイトは、その強化を数週間維持し続ける場合がある。
実務上の結果として、小売、チケット販売、旅行を対象とするクローラーは、自身の振る舞いにかかわらず、11月中旬から12月にかけて、より多くのチャレンジ、より多くの待合室、より低い許容度を予想すべきだ。
祝日:静かで、時には落ち着いている
祝日は両方向に作用する。人間のトラフィックは減少する。Cloudflareの測定では、2023年の感謝祭における米国のトラフィックは前週より約10%低かった。どうやら、一部の攻撃トラフィックも同様だ。同じ分析では、その月の中で感謝祭が「米国を標的としたDDoS攻撃と分類されるトラフィックの割合が最も低かった」ことが判明した。
クローラーにとって、対象国の公的祝日は、人間のトラフィックの減少(これは自動化トラフィックの比率を上昇させる)と、防御側の人員の薄さとが組み合わさる。ブロック率への net の影響は対象によって異なる。一貫しているのは、祝日は地域固有だということだ。ある国での火曜日は、別の国では祝日になる。これは、グローバルにではなく対象ごと、市場ごとに測定すべきもう一つの理由だ。
変更凍結:防御が動きを止めるとき
ルールは人が変更するときに変わり、人は予測可能なタイミングで変更を凍結する。これは伝聞ではなく、文書化された慣行だ。
- Shopify Engineeringは、「BFCMの数週間前に始まる」機能凍結と、イベントの数日前および期間中に「重大な修正のみをデプロイできる」コード凍結について説明している。
- GitLabは、プロダクション変更ロックを「主要な祝日など、チームの稼働が減少する期間中の、プロダクションへのすべての変更の完全な停止」と定義している。
- Cloudflareのマネージドルール(WAF)は「通常、月曜日または火曜日を基準とする7日間のリリースサイクル(公的祝日に応じて調整)」に従う。
凍結によって、ピークシーズンは始まった後は奇妙なほど安定する。防御は事前の数週間で強化され、その後はほぼそのまま放置される。また、凍結は1月を変化のシーズンにもする。祝日の間に延期されたルールは、チームが復帰したときにリリースされ、そのタイミングで、12月中はずっと機能していたクローラーが、自分側には何の変更もないまま突然壊れることがある。
自分のカレンダーを測定する
自分の対象について公開データセットが答えを示さない以上、唯一信頼できる答えは自分自身のログだ。手法は単純だ。対象ごと、曜日ごと、時間ごとのブロック率を、対象のローカルタイムゾーンで計算し、各スロットを対象全体の率と比較する。
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
}
ソフトブロックはエラーコードだけでなくブロックとしてカウントすべきだ。成功ステータスで提供されたチャレンジページも、実質的な拒否であることに変わりはないからだ。the silent failure rateでは、それらを検出する方法を扱っている。結論を出す前に少なくとも数週間分の履歴を保持し、既知のイベントや地域の祝日をマークしておくことで、1回のひどいブラックフライデーがすべての金曜日のモデルになってしまうのを防ぐこと。
それに合わせたスケジューリング
対象のカレンダーがわかれば、いくつかの調整が自然に導かれる。
- 日ごとではなく曜日ごとに基準を設定する。 土曜日を平日平均と比較するヘルススコアは、毎週末に誤検知を起こす。同種同士を比較すること。詳細はbuilding a target health scoreを参照。
- 柔軟な作業を良いスロットに移動する。 特定の日に実行する必要のない更新処理は、対象が最も許容度の高い時間帯や日に移すことができる。Cost-aware crawl schedulingは、すでに各アクセスをコストで重み付けしている。ブロック率の期待値が高いことは、コストが高いことを意味する。
- 対象のピーク時には手を緩める。 最大セール日の小売業者は、実際の負荷の下で実際の顧客を保護している。既知のイベント期間中の同時実行数の低減とインターバルの延長は、良識であり、良識的な判断でもある。backpressureは、ブロック率が上昇したときにこれを自動的に行うべきだ。
- 1月に注意する。 凍結が解除されるにつれて防御が変化することを予想し、カナリアを稼働させ続けて、数週間ではなく数時間以内に気づけるようにすること。
- 市場自体のタイムゾーンと視点から収集する。 祝日と日次のリズムは地域固有であり、サイトが提供する内容もそうだ。Shifterのゲートウェイの
country-deのような国別ターゲティングのレジデンシャル出口を使えば、クローラーはドイツのサイトを、ドイツの祝日にドイツの訪問者が見るのと同じように見ることができる。
結論
ブロック率がカレンダーとともに変動するのには理解可能な理由がある。自動化トラフィックは人間のトラフィックより安定しているため、人々がログオフすればその比率が上昇する。ピークイベントはその周辺の数週間にわたって、より多くのボットとより厳しい防御をもたらす。そして、そうした防御を支えるチームは、最も繁忙な期間に変更を凍結し、その後に再開する。これらのいずれも、スクレイパーについて公開データセットで直接測定されたものはなく、証拠は一様ではない。一部のボットトラフィックは人間のスケジュールに密接に従う。
そのため、カレンダーは各チームが自分自身のデータから答えを出すべき問題となる。ブロック率を対象、曜日、時間ごとに分解し、祝日とセールイベントをマークし、それに応じてスケジュールを組むこと。見つかったパターンは自分の対象に特有のものであり、どんなグローバルな平均よりも、はるかに有用だろう。
出典と参考文献
- Gundelach, Mühlhauser and Herrmann, Detecting Bot Detection, arXiv, 12 June 2026. Scans 27 February to 2 March 2026.
- Cloudflare, Bot Attack trends for Jan-Jul 2020, 20 October 2020.
- Phil Stubbings, ONS Data Science Campus, Detecting collective human behaviour in internet traffic volume data, 18 July 2019.
- Integral Ad Science, How Does Bot Traffic Vary Over Time?, 18 December 2023.
- Imperva, Five Observations from 2023 Black Friday and Cyber Monday, November 2023.
- Adam Martinetti, Cloudflare, Grinch Bots strike again, 23 December 2024.
- Queue-it, 2025 Holiday Shopping Stats, 24 December 2025, and 2024 Holiday Shopping Stats, 24 December 2024.
- João Tomé, Cloudflare, Do hackers eat turkey?, 24 November 2023.
- Camilo Lopez, Shopify Engineering, Preparing Shopify for Black Friday and Cyber Monday, 21 December 2018.
- GitLab, Dedicated maintenance. Production change locks.
- Cloudflare, WAF changelog. Managed rules release cycle.