如何在UWP app WebBrowser控件中全局更改用户代理标头?
我可以更改webbrwser控件中加载的初始网址中的用户代理标头
httpRequestMessage.Headers.Append("User-Agent", ...);
browser.NavigateWithHttpRequestMessage(httpRequestMessage);
但是,网页上的任何内部链接重定向似乎都不使用此自定义用户代理标头。
答案 0 :(得分:0)
与Android或iOS不同,Microsoft没有公开全局更改WebView组件中的用户代理的方法。
对于个人GET或POST请求,您可以像这样设置UA:
Uri^ targetURL = ref new Uri("http://www.yourUrlString.com");
HttpClient^ newRequest = ref new HttpClient();
auto headers = newRequest->DefaultRequestHeaders;
headers->UserAgent->TryParseAdd("your user-agent string here");
create_task(newRequest->GetAsync(targetUrl)).then([=](HttpResponseMessageData^ data)
{
//Your callback here
});
使用这种技术,可以连接到WebView's NavigationStarting event并拦截每个请求,但我强烈建议不要这样做。
WebViewNavigationStartingEventArgs仅展示您要导航到的Uri,以及取消请求的功能。它不公开它是什么类型的请求,也不公开意图的来源。因此,无法重新创建原始导航意图,您将开始看到导航错误。
例如,某些网页具有按钮点击发出POST请求的JavaScript元素,如果您拦截这些请求并将其重新创建为GET请求,则请求将失败并且用户的操作将丢失。
在Microsoft在WebView中更改此行为之前,我认为不可能有意义地更改UA。