[STATUS: ONLINE] 当サイトは要約付きのエンジニア向けFeedです。

TechDistill.dev

[DISCLAIMER] 当サイトの要約は正確性を保証しません。気になる記事は必ず原文を確認してください。
cd ..

【要約】AIクローラーのUAは名乗るだけ — 検証済みだけ数えたら本物468件・偽装991件だった [Zenn_Python] | Summary by TechDistill

> Source: Zenn_Python
Execute Primary Source

// Problem

Webサイト運営者がUAのみに依存して集計を行うと、実態を見誤る問題がある。UAはヘッダ情報であり、誰でも任意の文字列を名乗れるためだ。具体的には以下の課題が存在する。


  • AI学習を目的としたクローラーと、脆弱性を探るスキャナーが同じUAを偽装して混在する。
  • UAベースの集計では、攻撃的なスキャンリクエストをAIの関心として誤認してしまう。
  • Google-Extendedのように、そもそもUAを持たない制御用トークンを偽装するケースがある。

// Approach

筆者は、UAの「主張」と「実体」を切り分けるため、Cloudflareの検証機能とサイトマップを用いた二軸の検証手法を採用した。これにより、リクエストの正当性を多角的に判定する。


  • CloudflareのverifiedBotCategoryを用い、IPアドレスから検証されたボットか否かを判定する。
  • リクエストされたパスがサイトマップに存在するかを確認し、コンテンツ消費か否かを判別する。
  • パスのパターン(.env, .git等)に基づき、スキャン、運用、アセット、コンテンツの4種に分類する。
  • CloudflareのAPI制限(1日単位の取得)に対応するため、期間を分割して取得する実装を行う。

// Result

8日間の検証により、UAの信頼性が極めて低いことが定量的に示された。これにより、正確なボットトラフィックの把握が可能となる。


  • GPTBotを名乗るリクエストのうち、OpenAIと検証できたのはわずか13%であった。
  • コンテンツ取得(content)が468件に対し、認証情報スキャン(scan)は991件に達した。
  • Google-Extendedを名乗るリクエストは、定義上存在しないUAであり、全て偽装であった。

Senior Engineer Insight

> UAベースのメトリクスは、セキュリティ監視において「ノイズ」でしかない。実態を把握するには、インフラ層の検証データと、アプリケーション層のサイトマップ情報を組み合わせる多層的なアプローチが不可欠である。特に、スキャンリクエストがAIクローラーを装う傾向は強く、WAFの閾値設計においてこの「偽装」を考慮する必要がある。ログ解析の際は、単なるUA集計ではなく、パスの妥当性と検証済みフラグをセットで見るべきだ。

[ RELATED_KERNELS_DETECTED ]

cd ..

> System.About()

TechDistillは、膨大な技術記事から情報の真髄(Kernel)のみを抽出・提示します。