Android WebView: примените переопределение прокси до навигации
Используйте проверку функции и обратный вызов завершения AndroidX WebKit и учитывайте переопределение, общее для WebView в одном процессе.
Навигация, зависящая от переопределения прокси в WebView, должна начинаться после срабатывания слушателя завершения переопределения. Если задать его и сразу загрузить страницу, операция будет конкурировать с асинхронным обновлением.
- Проверьте
WebViewFeature.isFeatureSupported(WebViewFeature.PROXY_OVERRIDE). Поддержка зависит от реализации WebView и библиотеки AndroidX WebKit, а также от уровня API Android. Определите, что происходит при его отсутствии; тихий прямой переход может свести функцию на нет. - Постройте нужный
ProxyConfigс его документированными правилами прокси, синтаксисом конечной точки и поведением обхода. Для разрешённой навигации по публичным сайтам выберите кандидата из списка бесплатных прокси, протокол которого соответствует правилу, поддерживаемому этой реализацией WebView. URL PAC, URI SOCKS и голый хост — это разные входные данные. - Вызовите
ProxyController.setProxyOverride()с этой конфигурацией, исполнителем и слушателем завершения. Начинайте зависимую навигацию из пути завершения. - Когда временное переопределение закончится, очистите его с помощью
clearProxyOverride()и обработайте также его асинхронное завершение.
Дайте этому жизненному циклу одного владельца. Настройка действует для всех WebView в процессе приложения; повторное изменение не может дать двум одновременным представлениям независимые выходы. У других процессов и библиотек HTTP свои маршруты.
Этот поддерживаемый интерфейс позволяет избежать зависимости от закрытых слушателей изменения прокси, которые различаются между выпусками Android. Он выбирает маршрутизацию; учётные данные прокси и доверие к сертификатам по-прежнему используют свои поддерживаемые механизмы. Сбой аутентификации или TLS после выбора нужно диагностировать на этом этапе.