Android Webview场景下防止dns劫持的探索
背景
阿里云HTTPDNS是避免dns劫持的一种有效手段,在许多特殊场景如HTTPS/SNI、okhttp等都有最佳实践,但在webview场景下却一直没完美的解决方案。
拦截方案是目前已知的一种在webview上应用httpdns的可行方案,本文从拦截方案的基本原理出发,尝试分析该方案背后存在的局限,并给出一些可行性上的建议。
基本原理
拦截方案是指通过对webview进行配置WebViewClient来做到对网络请求的拦截:
void setWebViewClient (WebViewClient client);
拦截方案的的调用流程如下图所示:
Webview相关的网络请求由系统的chromium网络库发起,Webview调用loadUrl方法时,chromium网络库会构造URLRequest实例,经过c层到java层,最终请求参数会
