【ネット広告は敵】AdGuard向けDNSフィルタを作った【自己満】
どうも。しばもんです。
X(旧ツイッター) @monsivamon
※注意事項
筆者は今までガジェットに関する記事ばかり書いてきましたが、本記事にガジェットの話は一切出てきません。
ガジェット目的の方はここで読むのを辞めることを推奨します。
AdGuard_DNS_Filter_for_myself
広告ブロックアプリとして有名なAdGuard向けのDNSフィルタを開発しました。
フィルタ名の通り、基本的には自分用に作成したものとなります。
今回はこのフィルタを紹介します。
AdGuard DNS filterについて
自作フィルタ紹介前に元ネタとその問題点を簡単に解説する。
AdGuard DNS filterとは
私はAdguardヘビーユーザーなのだが、そのAdguardが公式に提供しているフィルタの中にAdGuard DNS filterというものがある。
これはDNSフィルタリングという仕組みで使われるものなのだが、主にスマホで通信量を減らしたり、ブラウザ以外のアプリ内で表示される広告をブロックできる大変有用なフィルタである。
しかしAdGuard DNS filterを有効にしているとブラウジングの際に誤爆でアクセスできないサイトが出てしまったり、正常に動作しなくなってしまうアプリが出てしまうという負の側面も持っている。
問題の要因
この原因は主に2つある。
1つ目はDNSフィルタリングという仕組みである。
DNSフィルタリングはその仕組み上、対象のドメインを通すかブロックすることしか基本的にはできない。
一般的な広告ブロックで行われている「サイトのこの部分だけブロック」を行うことができないためどうしても誤ブロックが起こりやすいのである。
2つ目はAdGuard DNS filterの生成プロセスである。
AdGuard DNS filterはHostlist compilerというツールで機械的に合成しているものなのだが、合成しているフィルタの中にプライバシー用のフィルタが含まれていることが多くの誤爆を引き起こしている。
身近な例でいうとインターネットインフルエンサー全盛期の昨今、アフィリエイトと言う仕組みを採用し、動画そのものや説明文の近くにアフィリエイトリンクというものが設置されていることは非常に多い。
これらはリンクを設置したインフルエンサーに対しての報酬を計算するためにアクセス解析をするのだが、プライバシー用のフィルタはこれらをブロックしてしまう為アクセス不能となってしまう。
目的、対象者
AdGuard DNS filterが素晴らしいものなのは間違いないのだが、ここ最近のアフィリエイトリンクまみれのネット閲覧においては誤爆多発というのが私はストレスに感じてしまったのでこれをなんとかしようと思いフィルタ開発の検討を始めた。
AdGuard DNS filterの問題は前述した通りなのだが、実はすでに先駆者がいらっしゃり私も自作する前は使わせていただいていた。
直接フォークしたわけではないのだが、当フィルタもこのフィルタ作者の考えに強い影響を受けていますのでこの場にて御礼をさせていただきます。
故に本フィルタも先駆者同様下記のような方を利用の対象とします。
・プライバシーフィルタが一緒になっているのは精神衛生上よくない
・私は追跡やアクセス解析を許容する
・なるべく広告だけをブロックしたい
・広告じゃないのに余計なブロックが発生するのが嫌だ
・ブロックを減らしたい
フィルタ、仕組みについて
本フィルタは公式GitHubをフォークしたものですが、Hostlist compilerを用いたフィルタ生成の前後にシェルスクリプトで様々な追加処理を行っています。
具体的にやっていることはざっくりですが下記です。
これらの処理により当フィルタは意味のない記述がかなり少なくなっているものであると考えています。
・Hostlist compiler構成ファイルの見直し
・合成用のフィルタを一部自動生成
・外部フィルタの取り込み、自動合成
・本家がブロック対象としているものを意図的に許可
・機械合成時の変換ミス自動修正
・フィルタ内ドメインを自動で精査し、存在しないドメインに関する記述を自動除去
・意味のない記述(誤変換と思われる記述は除く)、重複の自動除去
・AdAway用のフィルタ生成
本フィルタはGitHub Actionsにより1日3回自動で更新されます。
フィルタ生成前後の処理について詳しい解説要望ありましたら別途記事化するかもしれません。
AdAway向けフィルタについて
作成理由はAdGuardの開発元のお国柄上、いつ使えなくなってもおかしくないと考えたためです。
万が一のことがあったときに、いつでもすぐに乗り換えられるようにとバックアップとして作成しています。
ただしAdAwayはAdGuradのDNSフィルタリング以上にブロックの自由が効かないため、ただそのまま変換するだけでは誤爆がさらに起きかねません。
そこで誤爆を減らすための仕組みを別途専用で構築したのですが、ブロック精度はAdGuar向けのものより劣りますのでAdGuardでAdGuard用のものを使っていただくことを強く推奨します。
使用方法
下記リンクをAdGuardのDNSフィルタに追加し、本家はオフにしてください
https://monsivamon.github.io/AdGuard_DNS_Filter_for_myself/Filters/main_filter.txt
Androidの場合、下記のようになります
注意事項
・本フィルタ利用における損害や責任につきまして当方は責任を負いません。
・本フィルタの生成ロジックは予告なく改修、更新を行うことがあります。
・改修更新につきまして毎回アナウンスはしません。
各種問い合わせについて
・私が気がつくところであればどこでも構いません。
・すべての問い合わせに対応できるかはわかりません。
・AdAway向けに特別追加で何かをする予定は現状ありませんのでAdAway向けの要望はご遠慮ください。
ではまた。ちゃーお。


コメント