Cố gắng thay đổi chuỗi User-Agent trong yêu cầu HTTP của ứng dụng Android. Tôi đã thử nghiệm điều này cùng với wireshark và trình mô phỏng, và đã thấy rằng mặc dù tôi đã đặt chuỗi useragent trong chế độ xem web, yêu cầu loadUrl được liên kết không sử dụng chuỗi tác nhân người dùng này. Thay vào đó, tôi nhìn thấy chuỗi ký tự Dalvik trong quá trình capture Wireshark. Đây là đoạn mã trừu tượng. Bất kỳ ý tưởng? Hay giả lập không hỗ trợ điều này?setUserAgentString trong chế độ xem web trên Android không ảnh hưởng đến tiêu đề HTTP được sử dụng trong loadURL()
@Override
public void run() {
assert(context != null);
...
...
webView = new WebView(context);
...
String defaultUserAgent = "betaUAteststring";
// Clear per-application caches etc
webView.clearCache(true);
webView.clearHistory();
webView.getSettings().setAppCacheEnabled(false);
webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
....
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
..
}
@Override
public void onLoadResource(WebView view, String url) {
...
}
});
// Start loading
webView.getSettings().setUserAgentString(defaultUserAgent);
String setUA = webView.getSettings().getUserAgentString();
//--> logging here shows the correct user agent, so the webview does accept the value
// However the following statement does not result in an http request with the webviews user agent
webView.loadUrl(url);
//Alternative doesn't help either (and shouldn't according to javadoc)
//Map<String,String> headerMap = new HashMap<String,String>();
//headerMap.put("User-Agent","uaTestInAMap");
//webView.loadUrl(url, headerMap);
}
Tôi tin rằng tôi đang làm điều đó trong dòng "webView.setWebViewClient (new WebViewClient() ....." – damcify