01 / Scraping Architecture

OSIレイヤーモデルを駆使したクローラーシステム

大規模データ収集の現場において、クローラーシステムの構築は「いかに高速かつ安定してWeb空間から情報を吸い上げるか」という通信との戦いそのものである。

当初の開発アプローチは、多くのスクレイピングシステムが辿る道と同様、アプリケーション層(第7層)の最適化に終始していた。Headless Chromeを駆動させ、DOM構造を解析し、リクエスト間隔やユーザーエージェントを制御する。しかし、収集対象の拡大に伴い、Cloudflareをはじめとする高度なWAFやBot検知アルゴリズムの壁が立ちはだかった。IPブロック、TLSハンドシェイク段階での不審な通信の検知、そして大量リクエストに伴うTCP接続のオーバーヘッド——。アプリケーション層単体でのチューニングは限界を迎え、収集パイプラインは頻繁に停止した。

この局面を打開したのが、「OSI参照モデルの全階層を垂直統合的に制御する」というアーキテクチャへの転換である。

まず着手したのは、ネットワーク層(第3層)とトランスポート層(第4層)の再設計であった。単一の回線から脱却し、マルチVPNおよび複数ルーターを配下に置く動的なルーティング基盤を構築。ネットワーク層レベルで出口IPを秒単位で分散・分散迂回させる仕組みを作り上げた。同時にトランスポート層では、TCP/QUICコネクションのプーリングやカーネルレベルでのソケット通信最適化を実施。混雑制御(Congestion Control)アルゴリズムをチューニングし、大量接続時におけるハンドシェイクの遅延と通信コストを極限まで削ぎ落とした。

次に課題となったのが、セッション層(第5層)およびプレゼンテーション層(第6層)における「通信の擬態」である。近年のWAFは、アプリケーション層のリクエストヘッダーだけでなく、TLSの合意形成プロセスで生成されるTLS Fingerprint(JA3/JA4シグネチャ)や、HTTP/2・HTTP/3のフレームパケット構造まで監視している。そこで、暗号化セッションの再利用効率を高めつつ、クライアント識別子(TLS Client Hello)の通信パターンをレイヤー6レベルで動的に偽装するカスタムスタックを導入した。これにより、下位層でのパケット棄却やBot判定をすり抜ける通信路を確保した。

最上位のアプリケーション層(第7層)においては、これらの下位レイヤー制御と連動するプロキシチェインと、非同期I/O処理による超高並列収集エンジンを統合した。OSI各層からリアルタイムにフィードバックされるエラーログ(第3層でのルート切断、第4層でのリセットパケット、第6層でのハンドシェイク拒否等)を検知し、システム全体が自律的に通信経路やTLSパケット構造を切り替えるセルフヒーリング機構を実装した。

こうして、OSI参照モデルの第3層から第7層に至るすべての通信プロパティを透過的かつ決定論的に制御する「OSIレイヤーモデルを駆使したクローラーシステム」が完成した。

単一のアプリケーション層に閉じた従来のスクレイピングとは一線を画し、物理帯域の限界に迫る圧倒的なスループットと高い匿名性を両立。Web空間に散在する膨大な非構造化データを、停止することなくリアルタイムに収集し続ける堅牢な情報収集インフラへと結実したのである。

← Technology へ戻る