Android WebView: terapkan penggantian proxy sebelum navigasi
Gunakan pemeriksaan fitur dan callback penyelesaian AndroidX WebKit, dan perhitungkan penggantian yang dibagi antar-WebView dalam satu proses.
Navigasi yang bergantung pada penggantian proxy WebView harus dimulai setelah listener penyelesaian penggantian berjalan. Menetapkannya lalu langsung memuat halaman membuat operasi berlomba dengan pembaruan asinkron.
- Periksa
WebViewFeature.isFeatureSupported(WebViewFeature.PROXY_OVERRIDE). Dukungan bergantung pada implementasi WebView dan pustaka AndroidX WebKit serta tingkat API Android. Tentukan apa yang terjadi bila tidak tersedia; langsung terhubung secara diam-diam dapat menggagalkan fitur. - Bangun
ProxyConfigyang dimaksud dengan aturan proxy, sintaks endpoint, dan perilaku bypass yang didokumentasikan. Untuk navigasi situs publik yang diizinkan, pilih kandidat dari daftar proxy gratis yang protokolnya cocok dengan aturan yang didukung implementasi WebView tersebut. URL PAC, URI SOCKS, dan host telanjang adalah masukan yang berbeda. - Panggil
ProxyController.setProxyOverride()dengan konfigurasi itu, sebuah executor, dan listener penyelesaian. Mulai navigasi yang bergantung dari jalur penyelesaian. - Saat penggantian sementara berakhir, bersihkan dengan
clearProxyOverride()dan tangani juga penyelesaian asinkronnya.
Beri siklus hidup itu satu pemilik. Pengaturan berlaku untuk WebView di seluruh proses aplikasi; mengubahnya berulang kali tidak dapat memberi dua tampilan bersamaan jalan keluar yang independen. Proses lain dan pustaka HTTP memiliki rutenya sendiri.
Antarmuka yang didukung ini menghindari ketergantungan pada listener perubahan proxy privat yang berbeda antar-rilis Android. Ia memilih perutean; kredensial proxy dan kepercayaan sertifikat tetap menggunakan mekanisme yang didukung. Kegagalan autentikasi atau TLS setelah pemilihan perlu didiagnosis pada tahap itu.