AdGuardの仕組み

Last-modified: 2024-01-03 (水) 19:40:40

Androidの非root広告ブロックアプリAdGuardを使ってChromeやアプリ内の広告を無料でスマホから消す方法


AdGuard導入法でAdGuardの導入をしたけれど、一体どのようにして広告をブロックしているのか分からないという方も多いでしょう。

AdGuardは他の広告ブロックアプリと比較して非常に多機能なアプリであり、様々な仕組みを使い分けることで強力なブロックを可能にしています。一方で、機能が多いため、全体像が把握し辛い側面があります。そこで、ここでは主要な機能を概観して、AdGuardの仕組みを理解できるようにしたいと思います。


フィルタ

広告ブロッカーにおいて広告などを削除するための判断基準を提供するものがフィルタ(フィルタリスト)です。いわば「広告のブラックリスト」だと思えば分かりやすいでしょう。AdGuardをはじめとした広告ブロッカーは特殊な構文で書かれたルールの集合体であるフィルタを基準としてAdGuardは広告をブロックしているのです。フィルタに掲載漏れがあれば、その広告はブロックできないため、フィルタの品質がAdGuardの広告ブロックの品質に直結すると言っても過言ではありません。

フィルタは専門的なボランティアを含む多くのフィルタの保守者によって管理されています。広告の掲載方法の変化や新しい広告が生まれたりすることで以前のフィルタでは対処できない広告も、すぐに新しいフィルタではブロックできるようになるのです。そのため、フィルタは定期的に更新を行う必要があります。もっとも、AdGuardの場合、フィルタは自動的に更新されるからユーザーが意識することはありません。

さらに、AdGuardでブロックできるのは広告だけではありません。広告以外の要素もフィルタによってブロックできます。例えば、不快な要素をブロックして画面を見やすくしたり、危険なウェブサイトをブロックしてスマホのセキュリティを高めたりもできます。

AdGuard社製の公式フィルタの他にも、さまざまなフィルタが存在します。また、ユーザーが自分でフィルタを作成していくこともできます。AdGuardでも様々なブロック基準の中から、ユーザーの好みにあったもの・品質の高いものを選ぶことができます。

フィルタの作成や他のフィルタの選択に興味がわいたら以下の記事を参照してください。

広告ブロック

基本フィルタリングルール

AdGuardの最も基本的な機能が、フィルタに記載された通信をブロックする機能です。

ウェブページやアプリに広告を表示する時、通常まずサーバーから広告が読み込まれます。ブラウザやアプリは広告を読み込むためにウェブリクエスト(ウェブ上での通信の要求)を行います。そのリクエストをサーバーに届かないようにブロックすることで広告自体を読み込めないようにしブロックすることができます。

例えば、ウェブページ内に画像広告であれば、画像そのもののダウンロードを遮断します。

基本フィルタリングでは、広告画像などのダウンロード自体がされなくなるため、広告表示が消えてウェブページが見やすくなるだけでなく、通信量を大幅に節約し、ウェブページの表示を高速化することができます。しかし、広告がダウンロードされなくなっても、広告用にウェブページに設けられた枠や空白などはウェブページ本体の一部なので、この機能で消すことはできません。

なお、AdGuard for Androidにおいてアプリでの広告ブロック(基本フィルタリング)はフル版限定の機能です。そのため無料版ではDNSフィルタリングを代替的に併用することになります。

参照: Basic filtering rulesフィルタ構文 | 基本(ネットワークルール)

コスメティクフィルタリングルール

コスメティクフィルタリングルールは、フィルタで指定されたウェブページ内の要素を非表示にする機能です。

詳しく説明すると、各ウェブページにはドキュメントオブジェクトモデル(DOM)と呼ばれるHTMLのような文書構造と要素を論理的に表したデータが備わっています。広告もページにおける要素の一つであるからDOMを通じて編集することが可能です。AdGuardではDOMによって広告部分にスタイルシートを適用することで広告を非表示にしたり、あるいは広告自体を取り除くことで広告を消すことができます。

このコスメティクフィルタリングルールの利点は、基本フィルタリングルールとは違い、ウェブページ本体の一部となっている上述のページの不要な要素(広告画像の枠、文字での広告、過剰な外部サイトへのリンクなど)も非表示にできるということです。一方、この機能は広告を非表示にするだけなので、基本フィルタリングルールのように通信量を節約したりすることはできません。したがって、通信ブロックと要素非表示を車の両輪として併用することで、互いの長所を活かすことが基本となります。

参照: Cosmetic filtering rulesフィルタ構文 | 整形ルール

HTMLフィルタリングルール / Scriptletルール

ほとんどの場合、上述の基本フィルタリングルールとコスメティクフィルタリングルールを使うことで広告をフィルタリングすることが可能です。ですがごく一部ブラウザに解析される前のHTMLの応答データから内容の一部を削除したり、特定のスクリプトを挿入する必要がでてきます。そのような場合に使えるのがHTMLフィルタリングルール 、JavaScriptルール、Scriptletルールです。

参照: HTML filtering rulesフィルタ構文 | HTMLフィルタリングルール

DNSフィルタリング

AdGuardのDNSブロックは、DNSのリクエスト自体をブロックする機能です。

DNSは、ドメイン名とIPアドレスの変換をするシステムです。広告を含め、大抵の通信は、まずDNSを使ってドメイン名をIPアドレスに変換し、IPアドレスで目的地にアクセスしています。

この機能では、広告サーバーなどのドメイン名についてDNSリクエストが行われた場合に、IPアドレスを正しく回答しないことで、広告サーバーへのアクセス自体をできなくします。

DNSブロックは、通常の広告ブロック機能と比較して、非常に高速で、無料版でもアプリの広告をブロックできるという利点があります。その一方で、広告サーバー全体をブロックすることになるため、きめ細かいブロックはできないという欠点があります。したがって、通常の通信ブロック機能と併用することで、両者の利点を活かしていくことになります。

概念図

 ┌←←←←←←←←←3←←←←←←←←←┐
 ┌←←←←2'←←←←←┐        │
クライアント→→1→→AdGuard→→2→→DNSサーバ
 │
 └→→4→→AdGuard→→5→→Webサーバ
 └←←5' 7←┘   └←←←6←←←┘

1.クライアントがDNSサーバにexample.comのIPアドレスを要求する
2(2').AdGuardがDNSフィルタリングを行う(もし広告のドメインだったらブロックする)
3.DNSサーバからexample.comのIPアドレスが送られる
4.IPアドレスをもとにWebサーバに向けてコンテンツ(ページや画像など)を要求する
5(5').AdGuardが基本フィルタリングを行う(もし広告のトラフィックだったらブロックする)
6.Webサーバから要求したデータが送られる
7.コスメティクフィルタリングなどを行う

なお、DNSフィルタリングは、AdGuard導入法 最小設定の通りにやればデフォルトでオンになっています。

詳しくはDNSブロックについてをご覧ください。

ローカルVPN/ローカルHTTPプロキシ

AdGuardが広告ブロックの様々な機能を提供するために通信に介入する仕組みがローカルVPN・ローカルHTTPプロキシです。

ローカルVPNとローカルHTTPプロキシのどちらを使用するかは、「ネットワーク」の「ルーティングモード」から選択することができます。デフォルトではローカルVPNが選択されています。
参照: フィルタリング方式

そもそも、VPNやHTTPプロキシとは何かですが、これは趣旨から離れてしまうため、ここでは説明しません。興味のある方は自分で調べてください。よく分からない方は、どちらも「自分のスマートフォンから別のコンピュータに接続して、そのコンピュータを経由してインターネットを利用する方法」とイメージしてください。

ローカルVPNやローカルHTTPプロキシは、ローカル、つまり自分のスマホ内に構築されたVPNやHTTPプロキシのことです。具体的に言うと、AdGuardアプリを利用している場合、「別のコンピュータ」ではなく、「自分のスマートフォンで動作しているAdGuardアプリ」を経由してインターネットを利用するということです。

AdGuardアプリは、このようにして、インターネットへの経由地点になることで、広告のフィルタリングなどを行っているのです。

HTTPSフィルタリング

HTTPSフィルタリングは、独自の証明書をインストールすることで、HTTPS通信下でも広告ブロックができるようになる機能です。

HTTPSは、通常のHTTPによる通信よりもセキュリティを高める為に暗号化された通信です。元々は、決済サービスのように個人情報を扱うウェブサイトなどで使われていましたが、現在はその他のウェブサイトでもよく使われるようになってきています。

また、証明書は、暗号化された通信において通信先の相手が正しいかを保証して、なりすましを防止を実現するものです。もし証明書を持っていない場合、または証明書に間違った情報が含まれている場合、ブラウザは安全な接続を確立しません。証明書が個人や組織の身元を正しく表していることを証明するために、ウェブサイトが使用する証明書は、ブラウザが信頼する認証局(CA)によって発行されたものであることが重要です。このようなCAは、SSL証明書が確かにウェブサイトの所有者に発行されたものであることを保証しています。

HTTPS下での通信内容は技術的に保護されており、通常の方法では、経由地点であるAdGuardアプリが通信内容を書き換えることはできません。したがってコスメティクルールなどの機能は使えなくなります。基本フィルタリングも通信をブロックするかどうかを判断するために必要な情報*1が秘匿されるから、一部使えなくなることがあります。

これでは、AdGuardの効果が半減してしまいます。そこで、AdGuardでは、HTTPS通信でも通常と同じ広告ブロック等を可能にするHTTPSフィルタリング機能を用意しています。この機能では、スマートフォンに証明書をインストールし、AdGuardアプリがただの経由地点ではなくHTTPS通信の当事者となることで、基本フィルタリングはもちろんコスメティクフィルタリングなども同様に使えるようになります。例えば、スマートフォンとウェブサイトとの間でAdGuardアプリを経由してHTTPS通信が行われている場合、HTTPSフィルタリングを有効にすると、HTTPS通信が「スマートフォンとAdGuardアプリとの間のHTTPS通信」と「AdGuardアプリとウェブサイトとの間のHTTPS通信」に分解され、AdGuardアプリがHTTPS通信の当事者となるので、これまで通りのブロックが可能となるわけです。

なお、HTTPSフィルタリング機能は、HTTPS通信の安全性が減少するというセキュリティ上のリスクがあるため、AdGuard導入法 最小設定では無効となっています。

詳しくはHTTPSフィルタリングについてをご覧ください。

参照: What is HTTPS filtering

ファイアウォール・アプリの管理

ファイアウォール・アプリの管理は、アプリごとに通信そのものの可否や広告ブロックを行うかどうかなどを設定する機能です。

これを利用して、例えば「広告以外の通信を行わないアプリは通信自体を禁止する」というような設定もできます。

詳しくはアプリの管理についてをご覧ください。

トラッキング防止

トラッキング防止は、ユーザの特定に使われるプライバシー情報を隠す機能です。この機能はプレミアム版限定機能です。

トラッカー(個人情報追跡)やアナリティクスをブロックします。

参照: ステルスモード

ブラウジングセキュリティ

ブラウジングセキュリティは、フィッシングサイトやマルウェアなどのインターネット上の危険からスマホを保護する機能です。この機能はプレミアム版限定機能です。

もっとも、基本フィルタリングやDNSフィルタリングでも、適切なフィルタを選択すれば、広告だけでなく危険なウェブサイトなどの通信もブロックして、セキュリティを確保することができます。したがって、ブラウジングセキュリティ機能自体の恩恵はそこまで大きくないかもしれません。

セキュリティ系のフィルタリストはセキュリティ | フィルターリストをご覧ください。

参照: Browsing Security

(おまけ)他の広告ブロックアプリの機能

実は、他の広告ブロックアプリは、ここまでに説明した機能の一部だけを搭載したものがほとんどです。ユーザー数の多い代表的なアプリがどのような機能を搭載しているのかを簡単に見てみましょう。

  • DNSCloakDNS66はDNSフィルタリング機能のみのアプリです。
  • FilterProxyは基本フィルタリング機能のみのアプリです。
  • 280blockerアプリ*2は基本フィルタリング機能とコスメティクフィルタリング機能とDNSフィルタリング機能の3つの機能を持つアプリです。

AdGuardの機能の多さがよく分かると思います。もちろん、多機能なAdGuardが一番いいとは限りません。シンプルに機能を絞ったアプリを好む方もたくさんいると思います。是非とも自分が必要としている機能は何かを考えて、自分に合った広告ブロックアプリを見つけてください。

その他のアプリについては、主な広告ブロッカーにまとめています。

まとめ

AdGuardは、様々な手法を組み合わせて、広告等をブロックしています。これらの仕組みを理解した上で、自分に最適な設定を見つけ、なんJ公認設定からステップアップしていきましょう。


不具合等発生時には、「コメント欄」ではなく「不具合・広告相談所」に書き込んでください。
また、消えない広告については消えない広告の報告ご参照ください。

  • とりあえず作ってみたやで。 -- 2018-12-19 (水) 23:25:48
    • (๑>◡<๑)b イイね! -- 2020-09-21 (月) 00:45:24
  • ページ名がいまいちやったので変えたやで 履歴汚してしまってすまんな -- 2018-12-19 (水) 23:26:39
  • ブラウジングセキュリティ機能、クリック後によくある無限リダイレクトの対策でそれなりに有効なようです。リダイレクト食らってる最中、もしくは最後に到達しそうなあたりでAdGuardのマスコットキャラ?の緑の帽子を被ったおじさんが出てきて、このページは危険なのでブロックしました。戻るか、詳細を開く、という選択肢を選ぶ画面になります。無限リダイレクトを大量に設置したサイトでは“彼”の勇姿を拝めるかもしれません。 -- 2019-04-02 (火) 01:10:37
    • おまけの飾り機能かと思ってたけど一応ちゃんと機能してるんやね -- 2019-05-24 (金) 21:06:59
    • ブラウジングセキュリティ機能に助けられたわ -- 2022-02-11 (金) 23:01:52

*1 通信先のURLなど
*2 iOS向けにリリースされているアプリです。Androidでもよく使われていた280blockerフィルタは、このアプリの通信ブロック・要素非表示のリストをAdGuardなどでも使えるようにしたものです。