Safariのコンテンツブロッカーとは何か(実際の仕組みを解説)
iPhoneで広告をブロックする方法を探したことがあるなら、「コンテンツブロッカー」という言葉に出会ったものの、それが実際に何なのかはっきり説明されないまま終わったこともあるはずです。これはMacのブラウザ拡張機能とは違うもので、その違いはたいていの説明が匂わせる以上に重要です。
Safariのコンテンツブロッカーとは、Safariに対してルールの一覧、つまりどのネットワークリクエストをブロックし、どのページ要素を隠すかを渡す小さな拡張機能です。Safariはそのリストを読み込み、コンパイルし、自分自身で適用します。ルールを送り出した拡張機能自体は、あなたの閲覧トラフィックに一切触れません。この設計上の選択こそが、コンテンツブロッカーが単なる「広告ブロッカーアプリ」ではなく、iOS上で独立したカテゴリーとして存在している理由です。
コンテンツブロッカーの実際の仕組み
Appleがコンテンツブロッカーを導入したのはiOS 9で、SFContentBlockerManager というAPIを通じてです。これは、サードパーティにあなたの閲覧内容をのぞき見る隙を一切与えずにSafariがコンテンツをブロックできるようにするために作られました。
仕組みはこうです。コンテンツブロッカー拡張機能はJSONファイル、つまりルールオブジェクトのフラットな配列を提供します。各ルールにはトリガー(マッチさせるURLパターン)とアクション(リクエストをブロックする、CSSセレクターで要素を隠す、Cookieを取り除くなど)があります。拡張機能をオンにすると、SafariはそのJSONを読み込み、効率的な内部フォーマットにコンパイルして、コンパイル済みのバージョンを保存します。それ以降は、各ページを読み込むたびに、そのページ自身のスクリプトが動き出す前に、Safariがネイティブにそれらのルールを適用します。
拡張機能自身がやることは1つだけです。求められたときにSafariにルールファイルを渡すこと。バックグラウンドで動き続けることもなければ、訪れたページを見ることもなく、ルールがマッチしたときにコールバックを受け取ることもありません。実際のブロック処理はすべてSafariが内部で行います。
これがコンテンツブロッカーに厳密なルール数の上限がある理由でもあります。iOS 15時点で、コンテンツブロッカー拡張機能1つあたりのコンパイル済みルール数は最大15万件です。URLやCSSのパターンとしてはかなり余裕のある上限ですが、だからこそ1つの拡張機能では足りないカバー範囲を必要とするアプリ、Blindfoldもその1つですが、1つの巨大な拡張機能ではなく複数のコンテンツブロッカー拡張機能を用意しています。
ブラウザ拡張機能の広告ブロッカーとの違い
デスクトップのブラウザでは、広告ブロッカー拡張機能はページと並行して動く小さなプログラムです。DOMを読み、ネットワークリクエストをリアルタイムで監視し、ページの読み込みが始まった後に何かを書き換えたり削除したりします。これは強力な仕組みで、デスクトップの広告ブロッカーがSafariのコンテンツブロッカーにはできない、ページの中身を調べてその場で判断するような柔軟なことができる理由でもあります。
Safariのコンテンツブロッカーにはそれができません。静的なルールファイルを渡して、あとは手を引くだけです。表示中のページを見る手段がなく、描画のタイミングで判断を下すこともできません。すべてのルールは事前に決めておき、状況に応じて反応するロジックではなくパターンとして書いておく必要があります。
これは本当のトレードオフで、正直に認めておく価値があります。その代わりに得られるのは速度とプライバシーです。あなたの閲覧内容が拡張機能に届くことは一切なく、すべてのページを検査するために注入されるスクリプトもなく、Safariは事後にクリーンアップするのではなくページが描画され始める前にルールを適用します。ほとんどの広告・トラッカーのブロックでは、事前に計算されたルールで圧倒的多数のケースをカバーできます。純粋な静的リストが限界を見せ始めるのは、まだどのパターンにも一致しない、最後の数パーセントの広告に対してです。
iPhoneでコンテンツブロッカーを確認・管理する場所
インストールしたコンテンツブロッカーはすべて1か所にまとまっています。設定 > アプリ > Safari > 拡張機能 です。(iOS 15より前のバージョンでは、この画面は「設定 > Safari > コンテンツブロッカー」という名前でした。)それぞれに独自のオン/オフスイッチがあり、複数を同時に有効にしても構いません。互いに競合することはなく、Safariがそれぞれのコンパイル済みルールをまとめて適用するだけです。
新しいコンテンツブロッカーをオンにした後にサイトが崩れて見えるなら、まずここを確認してください。怪しい拡張機能をオフにしてページを再読み込みすれば、それが原因かどうか数秒でわかります。
Blindfoldがどう関わるか
Blindfoldは「広告」「プライバシー」「迷惑要素」という3つの独立したコンテンツブロッカーを搭載し、合わせて13万件を超えるルールをカバーしています。広告ネットワーク、トラッキングスクリプト、Cookieの壁、張り付き型のオーバーレイをカバーし、どのコンテンツブロッカーとも同じ流れで動きます。Safari自身がコンパイルして適用し、あなたの閲覧内容を見ることは一切ありません。
上で説明した静的リストのトレードオフは実在するものなので、Blindfoldはもう1つ層を加えています。Appleのオンデバイスモデルがページの読み込みが完了した後、つまり純粋なコンテンツブロッカーが手を出せない唯一のタイミングでページ要素を確認し、静的リストが見逃したものを見つけると的確な非表示ルールを書きます。この解析はすべてiPhone内で完結し、閲覧内容がどこかに送信されることはありません。書かれたルールはすべてアプリ内に表示され、他のルールと同じように編集や削除ができます。
リストは毎日オンラインで更新されるため、App Storeのアップデートを待たずに新しいルールが届きます。30日間の無料トライアル後は$7.99/年、または買い切りで一度きり$19.99、どちらもファミリー共有付きでアカウント登録は不要です。全機能の一覧はBlindfoldのホームページで、あるいはApp Storeで確認できます。
コンテンツブロッカーと他の選択肢を比較検討しているなら、iPhoneで広告をブロックする方法の完全ガイドでSafari標準設定やVPN型ブロッカーなど、それぞれが得意な範囲と苦手な範囲を解説しています。