# 広告にうんざりしているだけではない#
広告の存在には必ず合理性があります。広告は、制作者が他のチャネルで報酬を得るのを助け、作品を無料で提供し続けたり、価格をより受け入れやすい範囲に下げたりするためのものです。しかし、広告を出す方法の中には、体験を犠牲にして利益を最大化しようとするものがあり、これは常にユーザーに不快感を与えます。ユーザー体験に深刻な影響を与えるだけでなく、ユーザーに悪い印象を与え、宣伝効果を損なうこともあります。しかし、すべての広告主が自らの行動を厳格に規制し、基準に合った形で広告を出すことを期待するのは非現実的です。結局のところ、大きな利益の前では、人は人でなくなることもあります。
さまざまな広告ブロックツールを利用するのは、侵入的で迷惑な広告をブロックするためです。これにより、ユーザー体験を保護し、帯域幅とパフォーマンスのコストを節約することができます。
しかし、それだけではありません。AdGuard はプライバシー保護の使命も果たすことができます。たとえば、検索エンジンで講義資料を検索した後、ショッピングアプリを開くと、その分野の教材ばかりを推奨されることがあります。個人のプライバシーを重視する人にとって、これは容認できません。私はできるだけ少ないプライバシーが他人に把握されることを望んでいます。
広告をブロックするだけでなく、AdGuard はいくつかのトラッカーもブロックできます。ウェブページを閲覧する際には、リクエストを送信するだけでなく、多くの追加情報も送信しています。たとえば、アクセス時の IP アドレス、使用しているブラウザやシステム情報、言語の優先設定、前回アクセスしたウェブサイト、さらには Cookie を読み取ってより多くの情報を得ることができます。広告ネットワークなどは、これらの情報を通じて「あなた」が「あなた」であることを確認し、あなたに関するモデルを構築して、よりパーソナライズされた広告を提供します。
このような現象を防ぐために、AdGuard はトラッカーをブロックするだけでなく、一部の安全でないインターフェースをブロックし、ウェブサイト間の接続を遮断し、ブラウザ情報を偽装するなどの対策を講じています。これらは単独のプラグインやルールでは実現が難しく、私がこのアプリを選んだ理由の一つです。
# AdGuard はどのようにこれを実現しているのか#
従来の広告ブロックプラグインと比較して、AdGuard は彼らの KnowledgeBase 知識ベース でも述べているように、主に以下の三つの方法で広告を排除しています:
-
リクエストブロック:ルールに従って特定の接続をブロックすることで広告を排除します。ウェブページが読み込まれる際に、一部の要素が他のリソースをリクエストします。AdGuard はルールに基づいてリクエストをチェックし、広告やトラッカーなどのルールに該当する場合はブロックして読み込みを防ぎます。
-
ページコードフィルタリング:ウェブページが読み込まれる前に、AdGuard はルールに基づいてウェブソースコードをフィルタリングし、広告などを含むコードを削除します。リクエストブロックが特定の要素がリクエストできないようにするのに対し、ページコードフィルタリングは直接コードの一部を剥がすことで、広告がリクエストされることを防ぎます。
-
CSS 注入と JavaScript:一部の広告は JavaScript を使用してウェブページに動的に挿入され、外部リソースをリクエストする必要がありません。このため、前の二つの方法は効果がなくなり、追加の操作が必要です。AdGuard は CSS と JavaScript を調整して、この種の広告をより徹底的に排除します。
最初の方法は非常に一般的ですが、後の二つはブラウザプラグインの制限により、クライアント側でのみ実現可能です。たとえば、HTTPS フィルタリングについては、後で詳細に設定する際に再度説明します。
# AdGuard を適切に設定する#
AdGuard は有料アプリですが、単にお金を払うだけでは済みません。AdGuard の全機能を発揮させるためには、しっかりと設定する必要があります。ここではデスクトップ版を例に、AdGuard の一部機能を紹介し、私が AdGuard を使用してインターネット体験を保証し、プライバシーを保護する実践を示します。これがあなたの助けになれば幸いです。
AdGuard チームは引き続き積極的に開発を行っており、AdGuard ソフトウェア / プラグインも迅速に進化しています。この記事で言及されている内容には一定の時効性があり、最終的には AdGuard KnowledgeBase を基準としてください。
# 適切なブロックルールを選択する#
ほとんどの場合、ブロックルールは広告ブロックツールの核心です。AdGuard ではブロックルールは広告ブロッカーと呼ばれ、広告のブロックだけでなく、トラッカー、ソーシャルメディアプラグイン、迷惑なポップアップなどもブロックできます。ただし、注意が必要なのは、ルールを通じて特定の要素の読み込みを防ぐことは理論的にはページの読み込みを速くすることができますが、過剰なルールを設定すると、毎回大量の比較を行う必要があり、逆に効果が薄れる可能性があるということです。ここでは必要に応じて選択してください。
AdGuard でデフォルトで有効になっているブロッカーは少なく、ここでは以下を有効にしました:
-
広告ブロック
-
AdGuard 基本フィルター
-
EasyList
-
プライバシー
-
AdGuard トラッキング保護フィルター
-
EasyPrivacy
-
ソーシャルプラグイン
-
AdGuard ソーシャルメディアフィルター
-
Fanboy’s Social Blocking List(Fanboy’s Annoyances に含まれる)
-
迷惑な広告
-
AdGuard 迷惑広告フィルター
-
Fanboy’s Annoyances
-
特定の言語
-
AdGuard 中国語フィルター
-
EasyList China
もちろん、それでも「漏れ」がある可能性があるため、「拡張 > AdGuard Extra」を利用して手動で特定の要素を処理できます。
# 隠れモードでプライバシーを十分に保護する#
フィルターは一部のトラッカーをブロックできますが、隠れモードはプライバシー保護に特化した「大技」です。フィルターはほとんどのウェブトラッカーをブロックできますが、前述のように「ウェブページをリクエストする」という行為自体が多くの情報を漏らすことになります。隠れモードは、これらの個人の敏感な情報を段階的に保護します。
# 一般#
まずは 4 つの一般的なオプションがあり、初歩的にいくつかのトラッキングを防ぐことができます:
検索履歴を隠すは、検索エンジンを使用して特定のウェブサイトにアクセスした際のクエリ履歴を隠し、そのウェブサイトがどの検索エンジンを使用しているかを把握しにくくします。
「トラッキングしないでください」リクエストを送信、AdGuard はウェブページをリクエストする際に「トラッキングしないでください」というリクエストも送信します。一部のブラウザにもこの機能がありますが、トラッキングしないようにリクエストしても、最終的にはウェブサイトの意向に依存します。
HTTP リクエストから X-Client-Data ヘッダーを削除、Chrome ブラウザで Google に関連するウェブページをリクエストする際(Double Click や Google Analyse を含む)、Chrome ブラウザはブラウザ情報などを Google に送信します。HTTP リクエストから X-Client-Data ヘッダーを削除するのは、このデータをブロックするためです。
URL からトラッキングパラメータを削除、URL 内のトラッキングパラメータを削除し、クロスサイトトラッキングの発生を適度に回避します。同時に、手動でトラッキングパラメータを設定してカスタムブロックを実現することも可能です。
# トラッキング方法#
次に、トラッキング方法では一般的なウェブトラッキングの手法を制限できます:
自動消去されるサードパーティ Cookie、Cookie は通常、ユーザーのログイン情報などを保存するために使用されます。サードパーティ Cookie は、現在のページで生成された Cookie ではありません。生成したウェブサイトの行動がクリーンであっても、この Cookie が他のウェブサイトに取得されると悪用される可能性があります。サードパーティ Cookie をブロックするのに対し、自動消去されるサードパーティ Cookie は、サードパーティのログインを無効にすることはありません(サードパーティのログインは大抵 Cookie または認証ヘッダーを通じて元のウェブサイトに認証されます)。ここでは、サードパーティ Cookie の有効期限を 4 時間に設定しました。
自動消去されるファーストパーティ Cookie、前者と似ていますが、有効にすると同じウェブサイトでの有効期限が切れた後は再度ログインが必要になります。多くの不必要な手間をもたらすため、ここでは無効のままにしています。
サードパーティリクエストのキャッシュを禁止、一部のウェブサイトはページを読み込む際に電子タグ(e-tags)を追加することがあります。キャッシュがクリアされない限り、次回リクエスト時にこれらのタグがサーバーに送信され、どのウェブサイトにアクセスしたかが漏れる可能性があります。
サードパーティの認証ヘッダーをブロック、認証ヘッダーは主にログイン認証に使用されますが、トラッキングにも使用されます。また、HTTP の非暗号化プロトコルを使用して認証ヘッダーを送信すると、キーなどの重要な情報が漏れる可能性があります。ただし、ブロックすると一部のアプリやプラグインの動作に影響を与える可能性があります。
# ブラウザ API#
この項目はブラウザにのみ影響し、他のアプリには影響しません。ここでは、セキュリティ上のリスクがあるブラウザ API を禁止できます。
WebRTC をブロック、WebRTC はリアルタイム通信プロトコルですが、プロキシを回避して実際の IP アドレスを漏らす可能性があります。無効にすると、Google Voice(特にウェブ版)の正常な使用に影響を与える可能性があります。
プッシュ API をブロック、位置情報 API をブロック、これらの API はそれぞれブラウザのプッシュ通知と位置情報を管理するために使用されます。デスクトップ版の地図をほとんど使用せず、ブラウザのプッシュ通知も完全に必要ないため、これらの二つを完全に無効にしています。
Flash をブロック、Java をブロック、フロントエンド技術の進化に伴い、現在ほとんどのウェブサイトは Flash/Java の依存を排除しています。さらに、Flash/Java には多くの深刻なセキュリティリスクがあり、2020 年にはブラウザがそれらをサポートし続けるべきではありません。
# 雑多#
この部分のオプションはリクエストに含める必要があり、禁止することはできませんが、偽装することは可能です。
サードパーティのリファラーを隠す、どこからジャンプしてきたかを隠すことができます。私が使用しているサードパーティのリファラーは https://www.bing.com
です。
User-Agent を隠す、User-Agent もウェブリクエストヘッダーに含まれており、使用しているブラウザ情報やオペレーティングシステムなどを暴露します。このオプションを有効にして、デフォルトの代替情報を使用することをお勧めします。
IP を隠す、私は普段からプロキシを使用しているため、このオプションはあまり効果がないように思えたので、無効にしました。
また、拡張機能や高度な設定の中には注目すべき項目もあります。たとえば、AdGuard Extra やリダイレクトドライブモードの使用は、私が追加で有効にしているものです。
# モバイル端末でのプロキシと HTTPS フィルタリングの互換性#
モバイル端末の設定はデスクトップ版と大差なく、詳細は省略します。より深く広告を排除するためには、ほとんどの広告ブロックツールがシステムプロキシを利用する必要があることに注意してください。そして、もしあなたがすでにネットワークプロキシを使用している場合、これは少し面倒です。AdGuard はこの点に特化してローカルプロキシへの転送をサポートしており、これが私のニーズを最も満たす点です。
[#](#Clash ネットワークプロキシとの互換性) Clash ネットワークプロキシとの互換性#
ネットワークプロキシツールには Clash For Android を選択しました。これは、ローカルプロキシを有効にしながらシステムプロキシを占有せず、内部に DNS ポートを公開してリスンすることをうまくサポートしています。
もしあなたが使用しているプロキシサービスプロバイダーが Clash サブスクリプションをサポートしていないか、Clash 設定に DNS 設定が含まれていない場合、公共 API を利用して Clash 設定ファイルを整理する必要があるかもしれません。
# API を利用して Clash 設定ファイルを整理する#
subconverter プロジェクトに基づいて、多くの公共 API を使用して Clash 設定ファイルを簡単に整理できます。特に、subconverter の作者 TindyX が提供する 公共 API を使用して、サブスクリプションを AdGuard DNS を含む Clash 設定ファイルに直接変換できます。
Clash 設定ファイルには、少なくとも以下のような内容が含まれていることを確認してください:
port: 7890
socks-port: 7891
dns:
enable: true
ipv6: false
listen: 127.0.0.1:5450
enhanced-mode: redir-host
default-nameserver:
- 119.29.29.29
- 119.28.28.28
- 1.0.0.1
- 208.67.222.222
- 1.2.4.8
nameserver:
- https://dns.alidns.com/dns-query
- https://1.1.1.1/dns-query
- tls://dns.adguard.com:853
ここで、デフォルトの DNS リスニングポート( dns.listen
)は 5450
、デフォルトの HTTP プロキシポート( port
)は 7890
、デフォルトの SOCKS5 プロキシポート( socks-port
)は 7891
です。これらのパラメータは後の設定時に必要になります。
# AdGuard が Clash 転送ルールを設定する#
まず、「AdGuard > サイドバー > アプリ管理」で Clash For Android の AdGuard 経由でアプリのトラフィックをルーティングするのを無効にします。
次に、Clash 設定を Clash For Android にインポートした後、「設定 > ネットワーク」で「自動ルーティングシステムトラフィック」を無効にして、Clash For Android の VPN モードをオフにします。その後、Clash For Android のプロキシ機能を有効にします。
次に、「AdGuard > サイドバー > 設定 > DNS > DNS サーバーを選択」の最下部で「カスタム DNS サーバーを追加」をクリックします。名前は任意、アドレスには 127.0.0.1:5450
(以前設定した dns.listen
パラメータに依存)を入力します。
設定に戻り、「ネットワーク > プロキシ」をクリックし、下部の「+ プロキシを追加」を選択します。名前は任意、方式は HTTP
( SOCKS5
)を選択し、アドレスには 127.0.0.1
、ポートには 7890
( 7891
)を入力します。設定が完了したら「保存して選択」をクリックし、上部のプロキシスイッチをオンにします。
再度「ネットワーク」に戻り、「フィルタリング方法」をクリックして「ローカル VPN」を選択します。その後、メイン画面に戻り、メインスイッチをオンにすれば、元のプロキシに影響を与えることなく、AdGuard があなたのプライバシーを守ります。
# 証明書をインストールして HTTPS をフィルタリングする#
AdGuard はページが読み込まれる前に一部のコードをフィルタリングすることをサポートしていますが、HTTPS 暗号化により、AdGuard は通常の状況下で具体的な内容を読み込む前に得ることができず、フィルタリングができません。AdGuard は証明書をインストールしてトラフィックを解読することで(Surge/QuantimultX も同様のアプローチでフィルタリングを行います)、ただし Target API 24(Android 7.0)以降のアプリはもはやユーザー証明書を認識しません。
Magisk をインストールしたユーザーは、Move Certificates
を利用して証明書をシステム証明書に変換し、AdGuard の HTTPS フィルタリングをすべてのアプリに適用することができます。
これは全体で唯一 root が必要な行動かもしれません
AdGuard はほぼすべてのアプリに対して効果を発揮しますが、これは一定のパフォーマンスを浪費することになります。電話やメッセージなどの一部のシステムアプリや、広告が絶対にないアプリについては、AdGuard フィルタリングを無効にすることを検討できます。
# 今後#
よく考えてみると、AdGuard は有料の広告排除ツールとして、その有料の合理性はどこにあるのでしょうか?なぜ直接一定の料金を作者に支払って広告を放棄させるのではなく、広告排除ツールに支払うことを選ぶのでしょうか?これにより、作者は合理的(あるいは不合理な)収入を得ることができません。また、広告排除ツールの機能はすぐに飽和し、フレームワークも徐々に安定していくでしょう。本当に広告排除ツールの生命力を保つのは、恐らくその一つ一つのルールなのです。
しかし、AdGuard の貢献を否定することはできません。たとえそれが最も古いものでなくても、たとえそれに不足があったとしても。
私の見解では、広告排除は AdGuard の一部に過ぎず、しかも最も重要な部分ではありません。「Guard」—— 自分のプライバシーを守ることへの重視と妥協しない姿勢こそが、彼が伝えたい主旋律のようです。相当数のユーザーが自分のプライバシーに無関心で、一般市民がプライバシーのために努力する必要はないと考えることは、ある程度不適切な行動を助長しているのではないでしょうか?
もしかしたら、AdGuard はこれらの機能を最初に実現したわけではありませんが、非常に優れた形でそれを達成しています。AdGuard は、私がネットワークプロキシツールと一緒に 7x24 バックグラウンドで常駐させたいと思った最初のツールであり、他のアプリでも同様です。