从WebView代理完全删除Android作为操作系统

时间:2018-09-25 04:14:56

标签: android webview user-agent

我的本​​机android应用中有一个webview,需要设置agent来修复某些使用javascript检查android代理的网站上的桌面视图

JavaScriptCode:

if (navigator.userAgent.indexOf("Android") != -1) {
    //do something
}

在Android方面,我尝试将代理设置为

public void setDesktopMode(WebView webView, boolean enabled) {
    String newUserAgent = webView.getSettings().getUserAgentString();
    if (enabled) {
        try {
            String ua = webView.getSettings().getUserAgentString();
            String androidOSString = webView.getSettings().getUserAgentString().substring(ua.indexOf("("), ua.indexOf(")") + 1);
            newUserAgent = webView.getSettings().getUserAgentString().replace(androidOSString, "(X11; Linux x86_64)");
        } catch (Exception e) {
            e.printStackTrace();
        }
    } else {
        newUserAgent = null;
    }

    webView.getSettings().setUserAgentString(newUserAgent);
    webView.getSettings().setUseWideViewPort(enabled);
    webView.getSettings().setLoadWithOverviewMode(enabled);
    webView.reload();
}

然而,网站有一些重定向到外部站点的网站。从WebView登录标头后,我注意到在某些重定向中,代理设置为android,这会导致布局和网站行为出现问题。

WebView请求标头日志:

request.getRequestHeaders()::{Origin=null, User-Agent=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/69.0.3497.100 Mobile Safari/537.36, Accept=text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8, Upgrade-Insecure-Requests=1, Content-Type=application/x-www-form-urlencoded}
request.getMethod()::POST
request.getUrl()::https://www.example.com/tt.jsp
request.getRequestHeaders()::{Origin=https://www.example.com, User-Agent=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/69.0.3497.100 Mobile Safari/537.36, Referer=https://www.example.com/tt.jsp, Accept=text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8, Upgrade-Insecure-Requests=1, Content-Type=application/x-www-form-urlencoded}
request.getMethod()::POST
request.getUrl()::https://www.example2.com/tt2.do
request.getRequestHeaders()::{User-Agent=Mozilla/5.0 (Linux; Android 8.0.0; SM-G955F Build/R16NW; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/69.0.3497.100 Mobile Safari/537.36, Accept=image/webp,image/apng,image/*,*/*;q=0.8, Referer=https://www.example.com/tt.jsp}
request.getMethod()::GET
request.getUrl()::https://www.example.com/favicon.ico
request.getRequestHeaders()::{User-Agent=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/69.0.3497.100 Mobile Safari/537.36, Accept=*/*, Referer=https://www.example2.com/}
request.getRequestHeaders()::{User-Agent=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/69.0.3497.100 Mobile Safari/537.36, Accept=text/css,*/*;q=0.1, Referer=https://www.example2.com/}
request.getMethod()::GET
request.getRequestHeaders()::{User-Agent=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/69.0.3497.100 Mobile Safari/537.36, Accept=text/css,*/*;q=0.1, Referer=https://www.example2.com/}
request.getUrl()::https://www.example2.com/css.css

如何确保Webview代理不会在Android中将User-Agent显示为操作系统?正如您在日志中显示的重定向之一中看到的那样,它显示androiduser-agent操作系统

更新: 我尝试使用 webView.getSettings().setUserAgentString("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/69.0.3497.100 Mobile Safari/537.36");仍会产生与上面的日志所示相同的结果。 (日志第7行)

0 个答案:

没有答案