Android WebView: aplique a substituição de proxy antes da navegação
Use a verificação de recursos e o callback de conclusão do AndroidX WebKit, e considere a substituição partilhada pelas WebViews num mesmo processo.
A navegação que depende de uma substituição de proxy da WebView deve começar depois de o listener de conclusão da substituição ser executado. Defini-la e carregar uma página de imediato deixa a operação a competir com uma atualização assíncrona.
- Verifique
WebViewFeature.isFeatureSupported(WebViewFeature.PROXY_OVERRIDE). O suporte depende da implementação da WebView e da biblioteca AndroidX WebKit, bem como do nível de API do Android. Defina o que acontece quando não está disponível; seguir diretamente em silêncio pode anular o recurso. - Construa o
ProxyConfigpretendido com as suas regras de proxy documentadas, a sintaxe do endpoint e o comportamento de contorno. Para navegação permitida a sites públicos, escolha um candidato da lista de proxies gratuitos cujo protocolo corresponda a uma regra suportada por essa implementação da WebView. Um URL PAC, um URI SOCKS e um host simples são entradas diferentes. - Chame
ProxyController.setProxyOverride()com essa configuração, um executor e um listener de conclusão. Inicie a navegação dependente a partir do caminho de conclusão. - Quando a substituição temporária terminar, limpe-a com
clearProxyOverride()e trate também da sua conclusão assíncrona.
Dê a esse ciclo de vida um único responsável. A definição aplica-se às WebViews de todo o processo da aplicação; alterá-la repetidamente não pode dar saídas independentes a duas vistas simultâneas. Outros processos e bibliotecas HTTP têm as suas próprias rotas.
Esta interface suportada evita depender de listeners privados de alteração de proxy que variam entre versões do Android. Seleciona o encaminhamento; as credenciais de proxy e a confiança nos certificados continuam a usar os seus mecanismos suportados. Uma falha de autenticação ou de TLS após a seleção tem de ser diagnosticada nessa fase.