Android WebView: ナビゲーションの前にプロキシオーバーライドを適用する
AndroidX WebKit の機能チェックと完了コールバックを使い、1 つのプロセス内で WebView が共有するオーバーライドを考慮します。
WebView のプロキシオーバーライドに依存するナビゲーションは、オーバーライドの完了リスナーが実行された後に開始すべきです。設定してすぐにページを読み込むと、その操作は非同期の更新と競合します。
WebViewFeature.isFeatureSupported(WebViewFeature.PROXY_OVERRIDE)を確認します。サポートは WebView の実装と AndroidX WebKit ライブラリ、さらに Android の API レベルによって異なります。利用できない場合の動作を定義してください。黙って直接接続すると、この機能が台無しになる可能性があります。- 文書化されたプロキシルール、エンドポイント構文、バイパス動作を使って目的の
ProxyConfigを構築します。許可された公開サイトへのナビゲーションでは、無料プロキシ一覧から、その WebView 実装が対応するルールにプロトコルが一致する候補を選びます。PAC URL、SOCKS URI、ホスト名のみはそれぞれ異なる入力です。 - その構成、エグゼキュータ、完了リスナーを指定して
ProxyController.setProxyOverride()を呼び出します。依存するナビゲーションは完了の経路から開始します。 - 一時的なオーバーライドが終わったら、
clearProxyOverride()で消去し、その非同期の完了も処理します。
このライフサイクルには 1 人の担当者を置きます。この設定はアプリケーションプロセス全体の WebView に適用されるため、何度も変更しても、同時に存在する 2 つのビューに独立した出口を与えることはできません。他のプロセスや HTTP ライブラリには独自の経路があります。
このサポートされたインターフェースは、Android のリリース間で異なる非公開のプロキシ変更リスナーへの依存を避けます。これはルーティングを選択します。プロキシの資格情報と証明書の信頼は引き続きサポートされた仕組みを使います。選択後の認証または TLS の失敗は、その段階で診断する必要があります。