2012年12月12日

『WiFi AdBlocker』 rootもINTERNETパーミッションも要らない広告除去アプリ

自作アプリの宣伝。

(追記・若干わかりやすいかもしれないユーザ向け解説エントリはこちら http://causeless.seesaa.net/article/310279216.html

WiFi AdBlocker というAndroidアプリを公開しました。 現在はベータ版ですがひと通りの機能は動いています。

(追記) GooglePlayストアからAdAwayなどの広告ブロックアプリが一斉削除されたため配布・アップデート用のリンクを作成しました。  http://causeless.seesaa.net/article/347357563.html

WiFi AdBlocker beta.png

このアプリはAndroid端末のWiFi接続時のネットワーク設定を書き換え、DNSサーバーを変更することでホスト単位で広告配信サーバーやユーザー追跡サーバーへのアクセスをブロックします。
WiFi接続限定ながら、保証がなくなりかねない端末のroot化や、アプリのインターネットアクセス権限が不要なアプリです。
ko-zuが別に運用しているDNSサーバー(ドメイン名 example.com から IPアドレスに変換する機能をもつサーバー)を利用しています。


利点

低負荷
DNSサーバー上のブラックリストを参照するだけなので、端末のインターネットアクセス時に余計な処理が必要ありません。
たとえば著名な広告ブロックソフトの『AdBlock for Android』は ウェブサーバへの接続時に、端末上で動くプロキシサーバーを介することで広告を除去しますが、そのためには標準ブラウザに加えプロキシでもHTML解析という重い処理をする必要があります。

常駐不要
OSの機能により、WiFiで接続された瞬間のみ自動的に起動します。常駐してメモリを占有する必要がありません。

root権限不要
WiFi接続の設定はAndroid OS標準の機能を利用しているため、端末をroot化する必要がありません。このアプリが行う端末の自動設定は、アプリを利用しなくても手作業で端末に設定することも可能です。(このエントリにて解説

ほとんどのWiFiアクセスポイント・ホットスポットで利用可能
外部のDNSサーバへのアクセスが可能(UDP/TCPポート53がファイアーウォールで塞がれていない場合)で、DHCPでIPアドレスが割り当てられるWiFiホットスポットなら、どこからでも利用できます。
家庭用無線LANルーター、公衆WiFi・ホットスポット、モバイルルーターやスマートフォン経由でのWiFiテザリングなど、Android端末からWiFi経由でインターネットにアクセスする状況なら適用可能です。

適用できないアクセスポイントでも回避が可能
ファイアーウォール設定によってDNSの利用が禁止されている場合、アクセスポイント単位で設定をオフにできます。また、オフにしないままでも、サーバーへの最初の接続に1秒ほど遅延が入る以外は問題なく接続できます。

アプリは通信内容を監視しない

このアプリは通信内容を傍受・改変して広告を除去するアプリではありません。アプリの権限のとおりWiFiの接続設定を変更するだけで、通信内容にアクセスすることはできません。
なお、アプリ利用者の誰かがアクセスしようとしているホスト名についてはDNSサーバーのログから推測することが可能ですが、IPアドレス以上の情報、例えばポストしたフォームの中身や利用者の個人情報などを得ることはできません。もしDNSサーバーの設定をko-zuが悪意をもって変更したとしても、暗号化された通信を傍受することはできません。


欠点
WiFiでしか利用できない
残念ながら3G/LTE網への接続設定は端末をroot化せず変更することができません。

ブロック対象の個別設定が出来ない
ブラックリストはko-zuが運用するDNSサーバーで管理しています。 判定ミスがありましたら、twitter: @cause_less へご連絡ください。

アンインストール時に設定が残る場合がある
Androidにはアンインストーラがありません。お手数ですが、自動AdBlock機能を停止してからアンインストールしてください。
誤ってアンインストールしてしまった場合、固定IPアドレスを使用しないよう端末のWiFiネットワーク設定を変更してください。
アプリを再インストールし、メニューの『WiFI設定を上書き』を選択してください。

暗号化されていない通信を傍受される可能性がある
万が一、悪意あるユーザにDNSサーバーに侵入されたり、悪意をもって設定を変更すると、暗号化されていない通信はその内容を傍受できる可能性があります。これはGoogle Public DNSなどと同様、DNSを他者のサーバーに頼る場合と同じ危険性が有るということです。
しかしながら一般に、暗号化されていない通信で傍受されてはならない機密情報を扱うことはお薦めできません。正しく暗号化され通信相手を検証した上での通信(HTTPS・POPS・SMTPSなど)を傍受することはDNSの設定ではできません。


動作原理
DNSサーバーアドレスを書き換えているだけです。設定内容が理解でき手動設定で間に合う方には、はっきり言ってアプリ不要です。DNS設定をそのままにアンインストールして頂いて構いません。
  1. WiFiアクセスポイントへの接続を検出
  2. 端末にDHCPで割り当てられたIPアドレス等を取得
  3. DNSを書き換えて固定IPアドレスで自動設定
  4. アクセスポイントから切断を検出したら固定IPアドレスを解除してDHCPで待機

ブラックリスト登録ポリシー
ブロック:広告配信・ユーザー追跡用のjavascript・画像などの配信元ホスト、アプリ内の広告ライブラリ等が取得したユーザー情報の送信先ホスト、広告やユーザー追跡専用のリダイレクタ
ブロックしない:汎用のリダイレクタ(t.coなど)

ブロック対象はIPアドレス:127.0.0.1 を指すようにしています。(端末でウェブサーバを起動している(奇特な)方は注意してください。)


プライバシーポリシー
・このアプリはパーミッションに記載された取得可能な情報を、インストールされた端末の設定を行うために利用します。
・開発者が得た情報(アプリクラッシュ時のログなど)は、アプリのデバッグ目的を超えて利用されることはありません。


利用上の注意
・このアプリの利用は無償かつベータ版です。自己責任でご利用ください。
(たまにNullPointerExceptionでクラッシュしたりしますが生暖かい目で見ていただけると嬉しいです)
posted by ko-zu at 02:46| Comment(0) | TrackBack(0) | 広告・ユーザ追跡 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック