HTTP通信では、数字3桁を使用して通信の意味を伝える「ステータスコード」という仕組みが存在しています。そのうち「103 Early Hints」というレスポンスで広告ブロックを検知する仕組みが考案され、「103 Early Anti Adblock」という名前で概念実証が公開されました。

GitHub - Mechazawa/103-early-anti-adblock: Detect adblockers without Javascript by abusing early hints

https://github.com/Mechazawa/103-early-anti-adblock



「103 Early Hints」は、サーバーがレスポンスを準備する前に先にブラウザに対してリソースをプリロードできるようにURLを伝えるため、主にLinkヘッダーと共に使用されます。

今回の概念実証は、「103 Early Hints」を使用して「adv.css?ABCDEF」など広告ブロッカーでブロックされる名前のファイルをプリロードするようブラウザに伝え、「204 No Content」などのレスポンスがあれば広告ブロックが使用されていないことが分かるというもの。



逆にプリフェッチがタイムアウトした場合、広告ブロックが存在することが分かるというわけです。



記事作成時点においては、Chromeでは広告ブロッカーが103 Early Hintsを使用して読み込まれたリソースを操作することは許可されておらず、Safariは103 Early Hintsを使用してのプリロードを全くサポートしていないため、今回の概念実証はFirefoxでのみ機能するとのこと。

Firefoxでしか機能せず影響を与える人口が少ないため103 Early Hintsの検出は重大な問題とは言えませんが、ブラウザが103 Early Hintsのサポートを拡大するとともに今回の103 Early Anti Adblockは広告ブロッカーを検出するための信頼できる方法になる可能性があると述べられています。

なお、103 Early Anti Adblockの概念実証の製作者はサーバーの応答中に広告ブロックを検出する方法として他に「pixelAntiAdblock」を紹介しています。複雑な実装が必要でページの読み込み速度に顕著な悪影響を与えるものの、誤検知の発生率が低く、より効果的な模様です。