更改 WebView UWP 中的默认用户代理

Change default User-Agent in WebView UWP

我需要设置自定义 UA,我使用

httpRequestMessage.Headers.Add("User-Agent", "blahblah");
theWebView.NavigateWithHttpRequestMessage(httpRequestMessage);

但是如果我点击页面上的任何 link,此 UA 将被删除并设置为默认 UA。

我发现了同样的问题 但也许它在 1607 年修复了?

WebView 不是通用浏览器,它确实有一些目前不支持的“限制”。没有 API 可以设置每个请求中使用的默认用户代理。作为解决方法,我们可以使用 WebView.NavigationStarting event along with WebView.NavigateWithHttpRequestMessage method 在每个请求中设置 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);
}