AdGuardの仕組み

Last-modified: 2020-05-22 (金) 14:36:32

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


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

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


各機能に共通する仕組み

様々な機能に共通する仕組みとして、フィルタとローカルVPN・ローカルHTTPプロキシが挙げられます。個別の機能の前に、まずはこの2つを説明します。

フィルタ

AdGuardの様々な機能で使われるブロック判断基準を提供するものがフィルタです。いわば「広告のブラックリスト」だと思えば分かりやすいでしょう。このリストに掲載されたものを選別してAdGuardはブロックしているのです。リストに掲載漏れがあれば、その広告はブロックできないため、フィルタの品質がAdGuardの広告ブロックの品質に直結すると言っても過言ではありません。

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

AdGuardでは、AdGuard社製の内蔵フィルタの他に、第三者が作った外部フィルタもインポートして使用することができます。また、ユーザーが自分でフィルタを作成していくこともできます。これにより、様々なブロック基準の中から、ユーザーの好みにあったもの・品質の高いものを選ぶことができます。

AdGuard導入法では、280blockerフィルタとなんJ改修フィルターとなんJ拡張フィルターをインポートする方法を紹介しています。280blockerは、日本語スマホ向けサイトの広告や不快要素を網羅したリストです。また、なんJ改修フィルターでは、日本語ウェブサイトでAdGuardを使った場合に発生する不都合を解消することができます。この3つのフィルタによって、日本語環境にマッチした不具合の少ないブロック基準となるため、なんJ公認設定としています。

その他のフィルタについては、フィルターリストを参照してください。

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

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

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

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

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

AdGuardアプリは、このようにして、インターネットへの経由地点になることで、以下の様々な機能を提供することができるようになります。

通信ブロック機能

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

例えば、ウェブページ内に広告の画像が表示されることがあります。これは、ウェブページ本体とは別に自動的にスマホにダウンロードされた広告画像を、スマホのブラウザ(Chromeなど)が本体と組み合わせて表示しています。AdGuardの通信ブロック機能は、この広告画像のダウンロード自体を遮断する機能です。

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

要素非表示機能

要素非表示機能は、スタイルシートを利用して、フィルタで指定されたウェブページ内の要素を非表示にする機能です。

AdGuardアプリは、インターネット接続の経由地点となっていることを利用して、不要要素を非表示にするためのスタイルシートをウェブページに挿入しています*1。簡単に言うと、「○○という名前の要素は非表示にしてください」というブラウザに対する指示をウェブページに書き加えているということです。

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

スクリプト挿入機能

AdGuardには、ウェブページにJavaScript(ウェブページでよく使われるプログラミング言語の一種)を挿入する機能もあります。

これは、アフィカスがJavaScriptを利用して広告ブロックを妨害してくる場合などに、対抗手段として利用できます。例えば、JavaScriptを使って、広告ブロック解除を要求するメッセージを表示したり、非表示にした広告を再表示させたりといったことをするアフィカスがいます。このような場合、AdGuardのスクリプト挿入機能によって、アフィカスのスクリプトを無効化するスクリプトを挿入することで解決できます。

スクリプト挿入機能については、AdGuardの公式内蔵フィルタでよく使用されますが、280blockerのフィルタでは使用されません*2拡張機能では、この機能を利用した広告ブロック以外の応用的な使い方も紹介しています。JavaScriptの知識がある方は、様々なカスタマイズにチャレンジしてみるのも面白いかもしれません。

HTTPSフィルタリング機能

ここからは、少し特殊なブロック機能の説明に入ります。

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

通信内容は技術的に保護されており、通常の方法では、経由地点であるAdGuardアプリが通信内容を確認してウェブページにスタイルシートやスクリプトを挿入するといったことはできません。したがって、要素非表示機能とスクリプト挿入機能は使えなくなります。また、通信ブロック機能は基本的に使えますが、一部使えなくなることがあります。これは、通信をブロックするかどうかを判断するために必要な情報*3が秘匿されてしまうことがあるためです。

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

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

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

DNSブロック機能

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

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

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

また、DNSブロックでは、後述のアプリ内広告ブロック機能とは異なり、アプリ内広告を無料でブロックすることができます。

なお、DNSブロック機能は、デフォルトではオフになっていますが、AdGuard導入法で解説したなんJ公認設定ではオンになっています。

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

アプリ内広告ブロック・ファイアウォール機能

ここまで、ブラウザでウェブサイトを閲覧する場合の広告ブロックを前提に説明してきましたが、実はAdGuardはブラウザに限らず、あらゆるアプリで広告をブロックすることができます。

あらゆるアプリのインターネット接続は、AdGuardを経由しているため、AdGuardは、これまで説明したのと全く同様の機能をアプリ内広告に対しても使うことができるのです。AdGuardでは、アプリの管理機能によって、アプリごとに広告をブロックするか、HTTPSフィルタリングを行うかなどを細かく設定することができます。なお、アプリ内広告ブロック機能はプレミアム版限定機能です。

さらに、AdGuardには、ファイアウォール機能が搭載されており、アプリごとに通信の可否などを細かく設定することもできます。こちらは、無料版でも使用することができます。これを利用して、例えば「広告通信しかしないアプリは通信自体を禁止する」というような設定もできます。

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

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

AdGuardは、フィッシングサイトやマルウェアなどのインターネット上の危険からスマホを保護する機能があります。この機能はプレミアム版限定機能です。無限リダイレクト対策としては、それなりに有効なようです。

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

実際のところ、この機能の効果の大きさはよく分かりません。検証するためには、プレミアム版を購入した上で危険なサイトにアクセスしまくるというリスクのある作業が必要となるので、当Wikiで情報は持ち合わせていません。実際にこの機能の効果を確認した方がいましたら、コメント欄から情報提供していただきたいと思います。

ステルスモード

AdGuard v3.0から追加された機能です。トラッキング(ウェブサイトがユーザーの情報を収集して行動を追跡すること)から保護するために、ユーザーの特定に使われる情報を隠す機能です。

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

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

  • DNSCloakはDNSブロック機能のみのアプリです。
  • FilterProxyは通信ブロック機能とアプリ内広告ブロック機能の2つの機能を持つアプリです。
  • 280blockerアプリ*4は通信ブロック機能と要素非表示機能の2つの機能を持つアプリです。
  • AdblockPlusアプリは通信ブロック機能、要素非表示機能、アプリ内広告ブロック機能の3つの機能を持つアプリです。

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

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

まとめ

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


最新の4件を表示しています。 コメントページを参照

  • とりあえず作ってみたやで。 -- 2018-12-19 (水) 23:25:48
  • ページ名がいまいちやったので変えたやで 履歴汚してしまってすまんな -- 2018-12-19 (水) 23:26:39
  • ブラウジングセキュリティ機能、クリック後によくある無限リダイレクトの対策でそれなりに有効なようです。リダイレクト食らってる最中、もしくは最後に到達しそうなあたりでAdGuardのマスコットキャラ?の緑の帽子を被ったおじさんが出てきて、このページは危険なのでブロックしました。戻るか、詳細を開く、という選択肢を選ぶ画面になります。無限リダイレクトを大量に設置したサイトでは“彼”の勇姿を拝めるかもしれません。 -- 2019-04-02 (火) 01:10:37
    • おまけの飾り機能かと思ってたけど一応ちゃんと機能してるんやね -- 2019-05-24 (金) 21:06:59
コメント: URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White

*1 なお、スタイルシートはスクリプトとして追加されます。
*2 280blockerフィルタは、AdGuard以外にも様々なアプリでも使用できるように設計されていますが、他のアプリではスクリプト挿入機能が使えないためです。
*3 通信先のURLなど。
*4 280blockerフィルタのことではなく、iOS向けにリリースされているアプリです。280blockerフィルタは、このアプリの通信ブロック・要素非表示のリストをAdGuardなどでも使えるようにしたものです。