簡易的なWebフィルタリングをしてみる・・・。
前回、ロードされるリソースのURLがわかったので、今回は、ロードされるリソースが画像だったらロードを停止する・・・。
こんな感じで、Jpeg、PNG、Gifだったらview.stopLoadingでロードを停止・・・。
Yahooを開く・・・。
あまりにもブロックしすぎて何も表示されなくなったか・・・。
いや、違う・・・。
おそらく、view.stopLoadingはwebView全体のローディングを止めてしまうのではないだろうか・・・。
なので、画像が1つでも見つかると、webView全体のロードが止まるので、ブロック対象外のHTMLでもロードされないのではないだろうか・・・。
もう一回ロードしてみる・・・。
Yahooのロゴは何形式なんだろうか・・・。
それとも、ブロックに漏れがあるのか・・・。
それ以外はまだロードされてない・・・。
もう一回ロードをすると、画像は表示されず、それ以外のテキストは表示された・・・。
キャッシュしている部分はそのままに、まだロードしていないテキストがロードされたのだろうか・・・。
最初の方で、「ロードされるリソースが画像だったらロードを停止する」と言った・・・。
たしかに、「画像だったらロードを停止した」という条件にはあてはまるが、
Webフィルタリングというイメージからすると、「画像だったら、その画像のロードを停止し、それ以外はロードする」という風にしてほしいもの・・・。
しかも、何度もリロードしていると、画像もロードされてしまっている感じだった・・・。漏れが発生している模様・・・。
どうやら、Chromeのキャッシュを消すと、また画像は表示されなくなった・・・。
それから、調べてみるとiframeやAjaxで取ってきたファイルなどについてはonLoadResourceは関知できないような感じ・・・。
↓を見ると、この辺の動作についてはAndroidのバージョンごとで違う模様・・・。
[メモ]Android WebViewでの処理 ヤメ記者SEの徒然なるままに…/ウェブリブログ
これでは、ある特定条件のファイルをブロックし、それ以外をブロックしないというフィルタの実装とは言い難い・・・。
しかし、WebViewにはstopLoadingしかなさそうなので、何か別の方法があるかさらなる調査が必要そうだ・・・。
まあ、今回はあくまでも簡易的なフィルタなので、これぐらいで・・・。
https://github.com/bg1bgst333/Zinc/tree/develop/android/empty_activity/android_studio/src/Zinc