Установите прокси в WebView для API 26

#java #android #android-webview

Вопрос:

во-первых, я прочитал все ответы, написанные о вопросах, похожих на мой вопрос. Но ни одно из решений мне не помогло.

это мой код веб-представления

 mWebView.loadUrl(siteUrl);       
mWebView.getSettings().setUserAgentString(ua);      
mWebView.getSettings().setJavaScriptEnabled(true);      
mWebView.getSettings().setDomStorageEnabled(true);      
mWebView.setWebViewClient(new mWebViewClient());
 

я пытался использовать этот класс
https://gist.github.com/madeye/2297083

И я использовал этот код для установки прокси

 ProxySettings.setProxy(getApplicationContext(), "x.x.x.x", 8080);
 

Я также тестировал этот класс
https://gist.github.com/WanghongLin/50032a4d3933960454a7

и

 WebViewHttpProxy.setProxy(mWebView,"x.x.x.x",8080);
 

Но ни один из них не сработал. и прокси-сервер не был применен, когда я запускал приложение

Ответ №1:

Я не уверен, но я чувствую, что вы устанавливаете прокси-сервер после загрузки url ( webView.loadUrl ), поэтому он может не применяться

Ответ №2:

Очень легко установить прокси-сервер в вашем приложении Android webview ✅

скомпилируйте ‘androidx.webkit:webkit:1.3.0’ SetProxy(); просто загрузите перед загрузкой Url-адреса вашего веб-представления .

 private void init() {
    wv = findViewById(R.id.wv);
    WebSettings webSettings = wv.getSettings();
    webSettings.setSupportZoom(true);
    webSettings.setJavaScriptEnabled(true);
    wv.setWebViewClient(new WebViewClient() {
        @Override
        public void onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String host, String realm){
            
            handler.proceed("userName", "password");
        }
    });
    setProxy();
    wv.loadUrl("https://www.google.com");
}

private void setProxy() {
        ProxyConfig proxyConfig = new ProxyConfig.Builder()
                .addProxyRule("123.123.123.123:1234")
                .addDirect().build();
        ProxyController.getInstance().setProxyOverride(proxyConfig, new Executor() {
            @Override
            public void execute(Runnable command) {
                //do nothing
            }
        }, new Runnable() {
            @Override
            public void run() {
                
            }
        });
    }

 

Наслаждаться