ウェブスクレイピングを経験した人なら誰でも、ここ数年で各種 CAPTCHA だけでなく、ますます「賢く」なるアンチスクレイピング技術が開発者にとって最大の頭痛の種になっていることを知っています。
特に TLS フィンガープリンティング、HTTP/2 フィンガープリンティング、ブラウザフィンガープリンティングといった最新技術の登場により、ヘッダーを追加したり User-Agent を変更したりするだけで誤魔化せる時代ではなくなりました。
なぜウェブサイトは TLS や HTTP/2 のフィンガープリントだけで、あなたが「スクレイパー」なのか「本物のブラウザ」なのかを判別できるのでしょうか? 以下で編集者が詳しく説明します。

理由は簡単で、従来の User-Agent / Cookie / IP 制限などではもはや効果がなくなっているからです。
本物のブラウザが HTTPS 接続を確立すると、TLS ハンドシェイクが行われます。このハンドシェイクには非常に細かい情報が含まれています。
これらの組み合わせはブラウザ・OS・バージョンごとに異なります。
サーバーから見えるのは次のようなものです:
「この TLS ClientHello は Chrome でも Firefox でも Safari でもない。スクリプトで生成されたクライアントの可能性が高い。」
これが TLS フィンガープリンティングの基本的な仕組みです。
TLS フィンガープリンティングが第一のフィルターだとすると、HTTP/2 フィンガープリンティングは第二のフィルターです。
HTTP/2 には次のような特徴があります:
これらは本物のブラウザでは非常に一貫していますが、多くのネットワークライブラリ(Python/Go のデフォルト実装など)では大きく異なります。
そのため、スクレイパーを「人間らしく」見せるには、HTTP/2 層のフィンガープリントも合わせる必要があります。
TLS / H2 といったネットワーク層以外にも、ブラウザ自体が多くのフィンガープリントを露出しています。
これが ToDetect のフィンガープリンティングツールが非常に専門的である理由であり、単一の検出に依存せず多次元で評価しているのです。
現代のスクレイピングフレームワークでは、「フィンガープリントテンプレート化」アプローチがよく採用されます。つまり、各ブラウザ・OS・バージョンの TLS / HTTP/2 / JS 環境のフィンガープリントを事前に記録し、フィンガープリントライブラリを作るということです。
このライブラリには次のようなものが含まれることがあります:
リクエストを送信する際、スクレイパーはテンプレートを選び、本物のブラウザのように振る舞うのです。
これは「化粧」のようなもので、適当に塗るのではなく、本物の人間の顔を模倣するのです。
本物のブラウザの挙動は安定しており、一貫性があり、予測可能だからです。
スクレイパーが本物のブラウザの挙動パターンを「学習」すれば、検出が難しくなるのは当然です。例えば:
TLS フィンガープリンティング、HTTP/2 フィンガープリンティング、ブラウザフィンガープリンティングは、本質的にはインターネットセキュリティ技術です。これらの技術は法的に、サイト利用規約に従って使用されるべきであり、許可のないデータ取得やアクセス回避のために使用してはなりません。
自社サイトのアンチスクレイピング性能テスト、リスク制御の改善、セキュリティ研究など、合法的で認可された状況では、フィンガープリント模倣技術は非常に価値があります。
AD