Android WebView: primijenite zamjenu proxyja prije navigacije
Koristite provjeru značajke i povratni poziv dovršetka AndroidX WebKita i uzmite u obzir zamjenu koju dijele WebViewi u jednom procesu.
Navigacija koja ovisi o zamjeni proxyja u WebViewu trebala bi započeti nakon što se izvrši slušatelj dovršetka zamjene. Postavljanje i trenutačno učitavanje stranice ostavlja radnju u utrci s asinkronim ažuriranjem.
- Provjerite
WebViewFeature.isFeatureSupported(WebViewFeature.PROXY_OVERRIDE). Podrška ovisi o implementaciji WebViewa i biblioteci AndroidX WebKit te o razini Android API-ja. Definirajte što se događa kad ga nema; tiho izravno povezivanje može obesmisliti značajku. - Izgradite željeni
ProxyConfigs njegovim dokumentiranim pravilima proxyja, sintaksom krajnje točke i ponašanjem zaobilaženja. Za dopuštenu navigaciju javnim stranicama odaberite kandidata s popisa besplatnih proxyja čiji protokol odgovara pravilu koje ta implementacija WebViewa podržava. PAC URL, SOCKS URI i goli host različiti su unosi. - Pozovite
ProxyController.setProxyOverride()s tom konfiguracijom, izvršiteljem i slušateljem dovršetka. Započnite ovisnu navigaciju iz putanje dovršetka. - Kad privremena zamjena završi, obrišite je pomoću
clearProxyOverride()i obradite i njezino asinkrono dovršavanje.
Dajte tom životnom ciklusu jednog vlasnika. Postavka se primjenjuje na WebViewe u cijelom procesu aplikacije; ponovljeno mijenjanje ne može dvama istodobnim prikazima dati neovisne izlaze. Drugi procesi i HTTP biblioteke imaju svoje rute.
Ovo podržano sučelje izbjegava oslanjanje na privatne slušatelje promjene proxyja koji se razlikuju među izdanjima Androida. Ono odabire usmjeravanje; proxy vjerodajnice i povjerenje u certifikate i dalje koriste svoje podržane mehanizme. Neuspjeh autentifikacije ili TLS-a nakon odabira treba dijagnosticirati u toj fazi.