2015年1月22日木曜日

Androidのブラウザを高速化する(外部プロクシ)

まー、きっかけは、ウザいバナー抑止だったんだが。

Webのフィルタリングの為に、自宅PCにPROXYサーバーを立てる事にした。
せっかくなんで、フィルタリングだけではなく、他の弱点も補強しよう。
Android側の設定は前回の記事を読めし。

今回補強するのは、フィルタリング、キャッシュ、プリフェッチだ。

フィルタリングには、Proxomitronを使う。日本語パッチが当たったバージョンが公開されている。
コイツ、最強。
URLフィルタなんて序の口。さまざまな不要なスクリプトも消して、改ざんされたWebページを見せてくれる。改ざんされすぎて、まともに表示されないページも出てくるが、一つ毎、フィルタを外し、ページの見え具合を調節しろし。
ま、最悪の場合、バイパスリストにURLを追加すりゃいい。
詳細は、十年以上前から、色んな人が解説してる。グぐれし。

キャッシュはBlackJumboかSquidあたりかな。
Androidのブラウザは劣化の少ない大容量ストレージを無いため、大きなキャッシュが取れない。
一度読み込んだWebページを2回目以降、1回目の読み込み結果を再利用する機能だ。
自宅プロクシにキャッシュを持たせると、Android側の通信量は変わらないが、応答速度が早くなる。

プリフェッチはPROXY伝説ぐらいかな。コイツはキャッシュもあるけど、設定がブラックボックスすぎ。長時間動作安定性も不安なんで、おっちゃんはWebBoosterNinjaなる13年前の市販ソフトを使っている。
しかし、、プリフェッチって、モラル的にダメな技術だよな。。。。。。

さて、ここまでは割と当たり前の話。

WebはHTTPとHTTPSの両方のプロトコルで構成されてるが、Windowsのブラウザなら、それぞれ別のプロクシを設定できる。用意したプロクシがHTTPSを処理できないのなら、HTTPのみプロクシ設定すりゃいい。…が、Androidは両方同じポートで処理しなくてはいけない。
少なくとも、ProxyDroidを使う場合は同ポートだ。

HTTPSはProxomitronでフィルタリングしてしまうと、ブラウザ側でエラーが発生してしまう。
Proxomitronの[CONFIG]-[HTTP]画面で「Use SSL…」のチェックを外せば、HTTPSをフィルタリングせず、スルーしてくれるのだが、それは上位のプロクシに渡される。
上位プロクシがHTTPSを処理できなければ、ここで拒否され、エラーになる。

多段串構成では、トラフィックを減らすためProxomitronは最上位に配置したい。
フィルタリングされる前のHTMLを元にプリフェッチが動くと、無駄なトラフィックが増える事となる。
又、キャツシュの下位にプリフェッチがあると、不用な確率が高いプリフェッチでキャツシュが消費される事となる。
つまり、上段(インターネット)側からフィルタリング、プリフェッチ、キャッシュの順に配置することになり、Androidと接続される最下段のプロクシはsquid(キャッシュ)になるわけだ。

都合がいい事に、squidは上位プロクシを指定していても、上位プロクシ経由で接続出来ない場合、直接接続しデータを取得する。
squidの設定の注意点
squidはVer2.7のSSL対応版の方をダウンロードしろし。

squid.confは、

・http_port,https_portは、同じ値で、プロクシとして公開するものを設定する。

・上位プロクシのポートはcache_peerに設定
 ex. 
cache_peer 127.0.0.1        parent 8081  0  no-query default
※IPC(プロクシ間問い合わせポート)はないので0番"no-query"

・never_direct allow all は設定しない。SSL(HTTPS)をsquid自身に取得させる為

・Access deny のエラーが出るならhttp_access deny allをhttp_access allow allに変えろし。

・Android版Chromeの設定で「データ使用量を節約」をOnにしているとProxyが無効になる。

プロクシを通すので、もっさりとした表示になるが、極端に遅いページが無くなるぞ。

2015/1/25

Proxomitronの設定変更だが、敷居が高いようなので、ポイントだけ書いておくぞ。

・標準で設定されているフィルターは誤爆するぞ
 default.cfgにフィルターが記述されてるが、”Match = "<start>"”が記載されたフィルターは誤爆するので、すべてFalseに設定するか、default.cfgから削除しろし。
 あまりにも乱暴な書き換えしてるから、Web表示が壊れまくる。

・Proxomitronの調整をするときは、多段串はやめろし。Proxomitronのみを使い、串サーバのWebブラウザとリモート接続のAndroid両方で見栄え確認だ。

・Proxomitronの調整をするときは、ProxomitronのGUIで操作するとフリーズすることが多々ある。
 外部エディタでdefault.cfgを直接編集し、設定反映/保存のボタンを押して設定変更しろし。

・外部エディタの代わりにWinMergeを使うと便利。バックアップのdefault.cfgと動作環境のdefault.cfgを比較しながら編集できる。

・フィルタの記載中に日本語は入れられない。UTF8とSJISそれぞれにエンコードした文字で日本語を書く。"proxomitron 日本語フィルタ"でググれば、それらしいアプリが見つかるが少なくてもWindows8.1環境では不具合がある。だまして使えば何とかなるが。

オッチャン設定中のdefault.cfgのフィルター部分だ。先頭6個はオリジナルで、まとめサイトのアフィリエイト広告対策。



で、コイツがブロックリスト。URL Killfile.txtの一部だ。上のフィルタでも使用している。