前回の記事で、ES ファイルエクスプローラーがBaiduへ向けて何らかの通信をしていいることが分かった。
通常なら即座に使用を停止するべきだが、ESの使い勝手は捨てがたい。そんなことを書いていると叱られそうだが、便利なものは便利だ。
そこで、何とかBaiduへの送信を阻止する方法を考えてみた。
ES ファイルエクスプローラーのBaiduへの通信を遮断する(追記:QuickPicも...
■我らがAdblock Plus
Adblock Plus for android(以下ABP)については、以前に広告ブロックアプリの記事で少し触れたことがある。
この記事内では色々とABPへの不満点を書いているが、実は未だに現役バリバリ。
なぜなら、ABPはブラウザ内(Webページの広告)のみならず、端末が行う通信全てをフィルターしてくれるからだ。
アプリが行う通信、つまりアプリ内広告についてもフィルターできるのだ。これは非常に強力で、他にない魅力。
(ただし、非root環境ではWi-Fi経由の通信のみ対応。モバイルデータ通信のフィルタは要root)
今回はこのメリット活用し、端末が行うBaiduへのデータ通信を全てシャットアウトする。
Baiduを遮断するように設定したABPフィルターを自作し、ABPへ読み込ませるのだ。
■ABPのインストール
まずはABPをインストールしなければ始まらない。
公式サイトはこちらだが、私はこちらの改良版「Adblock Plus for Android改」を使用している。
インストール後は、Wi-Fiのプロキシ設定を変更しなければならない。
上記リンク先は英語だが、そう難しくはない。Androidの設定画面から、
「Wi-Fi」→「接続しているSSIDをロングタップ」→「ネットワークを変更」→「詳細オプションを表示」にチェック→「プロキシのホスト名:localhost」→「プロキシポート:2020」→「保存」で設定が完了する。
通知バーの表示が「接続待ち」から
「ブロックされます」に変われば、ABPは動作している。
このABP改は最大4つまでのフィルターに対応しており、はじめから日本向けの強力なフィルターがセットされている。通常利用する上では、そのまま使うだけで十分効果を発揮する。
しかし、今回は広告が目的ではなく、Baiduへの通信遮断。
既存のフィルターを探しても、hmma.baidu.comをフィルターしているリストは見つからない(そらそうか)。となれば、フィルターを自作するしかない。
■ABP用フィルターの作成
フィルターの自作方法についてはこちらのサイトが参考になる。
今回は難しいことを考えず、baidu.comへの通信を全て遮断するので、
||baidu.com^
を追加してやればよい。これでhmma.baidu.comを含む全てのbaidu.comへの通信が遮断される。
もちろんbaidu.comで検索することも不可能になるが、今の状況ではむしろありがたいぐらいだ。全て根絶やしにしてやる...!
後はこのへんに載っている適当なリストを参考に、上の一行だけを追加したフィルターを作成。
[Adblock Plus 2.0]
! Title: Baiduフィルター
! Homepage: http://7mc.org
!
||baidu.com^
Baiduを遮断するためだけに生まれたフィルター。超クール←
作成したテキストデータはこちらにアップしている。
これでフィルターが完成。
■フィルター購読リストを指定する
フィルターを自作したら、後はABP改にそのフィルターを読み込ませるだけ...なのだが、デフォルトでは既定の(作者が指定した)リストしか選択できない。
ABP改のサイトには
- フィルター購読リストが指定可能
- (home)/AdblockPlus/subscriptions.xmlから読み込み
と記載があり、リスト指定が出来るようなのだが...どうすればいいのか分からない。
そこでsubscriptions.xmlをググってみると、作者のツイートを発見した。
@minogonta Androidのホームに、AdblockPlusというフォルダを作って、その中に編集したsubscriptions.xmlを入れてください。デフォルトはhttps://t.co/AvEn2XuOpcなのでこれを参考に編集してご使用ください。
— gmbk (@gmbk00) 2013, 7月 13
こちらからダウンロードできるsubscriptions.xmlをテキストエディタで開き、編集してやればいいようだ。
編集する箇所は以下の通り。
<subscription title="Baiduフィルター"
specialization="Japanese"
url="http://7mc.org/no_baidu.txt"
homepage="http://7mc.org/"
prefixes="ja"
author="takeru"/>
一応全て適当に埋めてみたが、大切なのはタイトルとフィルターファイルのURL。
こうして作成したsubscriptions.xmlを「(home)/AdblockPlus/」フォルダにコピーしてやれば、ABP改はこのフィルターを読み込むようになる。
4つ目のフィルターが自作。残りの3つは既存のものをそのまま持ってきた。
■怪しげなパケット通信が消滅
このフィルターを適用した後、前回の記事と同様にパケットキャプチャを行ってみた結果、Baiduと思われるIPアドレスへの接続は無くなった。
ブラウザからアクセスしてもページは表示されず、キャプチャログにも残らない。ひとまず遮断に成功したということだろう。
ただ、前述の通り、ABPは非root環境ではWi-Fi接続の通信しかフィルターしないため、モバイルデータ通信をメインに使用している人には効果がない。
私のようにデータ通信を全てWi-Fi接続にするか、端末をroot化して全通信をフィルターしてやる必要があることに注意して欲しい。
また、ABPがフィルターするのはHTTP通信のみで、HTTPSはフィルターしない。今後BaiduへのアクセスがHTTPS通信になった場合、素通りしてしまう危険性がある。
それだけでなく、今後データの送信先がBaiduから変わった場合、新たな送信先を突き止め、フィルターに追加するまではダダ漏れになってしまう。
この方法をとる場合は上記の危険性を理解し、自己責任で行って欲しい。
色々とややこしいことになってしまったが、本来は開発側ができるだけ早く解決すべき問題である。
早急にこの問題が修正されることを願って、ABPでの措置は修正までの繋ぎとして使用したい。
将来的に修正されないようなら、今後の送信先の変更等のリスクを考え、本格的にESから撤退することも考えなければならない。
【追記】
情報元ブログに「QuickPicは?」みたいなことが書いてあったので調べてみた。
あったあった、バイナリデータにQuickPicの文字。通信先は211.151.139.210
やっぱ北京じゃねぇか!!
以上。
おまけ。
NoRootファイアウォールでも調べてみた。
http://whois.ansi.co.jp/42.156.141.25
→umeng.comの様子。リスト追加済。
http://whois.ansi.co.jp/123.125.115.154
http://whois.ansi.co.jp/112.80.248.24
大漁だった。2chでも指摘されてた。さらに昔から。
こいつらの通信もABPでブロックしたいな(出来たら例のテキストをひっそり編集します)。
そのほか役に立つかも(自分用メモ)
Android OSでの主な通信ブロックアプリの動作方式 - 不意になにかを残すブログ
じゅんじゅん 返信
このquickpicはver.4.5.2のものですか?