更改WebView UWP中的默认User-Agent
本文关键字:默认 User-Agent WebView UWP 更改 | 更新日期: 2023-09-27 18:07:08
我需要设置自定义UA,我使用
httpRequestMessage.Headers.Add("User-Agent", "blahblah");
theWebView.NavigateWithHttpRequestMessage(httpRequestMessage);
但是如果我点击页面上的任何链接,这个UA将被删除并设置为默认UA。
我发现了同样的问题WebView -定义每个请求的用户代理,但也许它在1607修复?
WebView不是一个通用的浏览器,它确实有一些"限制";当前不支持的。没有API可以设置每个请求中使用的默认User-Agent。作为一种变通方法,我们可以使用WebView。NavigationStarting事件和WebView一起。NavigateWithHttpRequestMessage方法在每个请求中设置User-Agent。
关于如何做到这一点的更多信息,请参考这个答案。这里的关键是删除NavigationStarting
事件的处理程序并取消原始请求中的导航,然后在NavigateWithHttpRequestMessage
之后添加处理程序以确保NavigationStarting
事件可以捕获下一个请求,如下所示:
WebView wb = new WebView();
wb.NavigationStarting += Wb_NavigationStarting;
...
private void NavigateWithHeader(Uri uri)
{
var requestMsg = new Windows.Web.Http.HttpRequestMessage(HttpMethod.Get, uri);
requestMsg.Headers.Add("User-Agent", "blahblah");
wb.NavigateWithHttpRequestMessage(requestMsg);
wb.NavigationStarting += Wb_NavigationStarting;
}
private void Wb_NavigationStarting(WebView sender, WebViewNavigationStartingEventArgs args)
{
wb.NavigationStarting -= Wb_NavigationStarting;
args.Cancel = true;
NavigateWithHeader(args.Uri);
}