在UWP app WebBrowser控件中更改用户代理标头

时间:2016-04-17 13:48:40

标签: c# win-universal-app

如何在UWP app WebBrowser控件中全局更改用户代理标头?

我可以更改webbrwser控件中加载的初始网址中的用户代理标头

httpRequestMessage.Headers.Append("User-Agent", ...); 
browser.NavigateWithHttpRequestMessage(httpRequestMessage); 

但是,网页上的任何内部链接重定向似乎都不使用此自定义用户代理标头。

1 个答案:

答案 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。