-1

我有一个带有 webbrowser 控件的简单 WPF 应用程序。当我指示控件加载页面时,我想让控件告诉服务器它正在尝试从它是移动设备加载页面,因此加载页面的较小版本。我知道很多网站只是在地址前添加移动设备,所以 google.com 的移动页面只是 mobile.google.com,但我想知道是否有办法加载让网络服务器自动将我的网络浏览器控件定向到网站的移动版本?我觉得应该有一个非常简单的方法来做到这一点,但我就是想不通:)。

提前致谢!!!

4

4 回答 4

10

实际上,WebBrowser 确实支持通过 Navigate 方法中的标头更改用户代理:

this.yourWebBrowserControl.Navigate( new Uri( "http://www.yoursite.com" ), string.Empty, null, string.Format( "User-Agent: {0}", "Your user agent string here" ) );
于 2010-11-24T17:21:31.850 回答
1

我知道这是旧的,但这是一件容易的事:

首先,您需要用户代理字符串,并且它需要被格式化。这就是我在 wbMobile 是一个 webbrowser 控件下的做法。这个例子将带你到手机必应网站

wbMobile.Navigate(new Uri("http://m.bing.com/", UriKind.RelativeOrAbsolute), string.Empty, null, string.Format("User-Agent: {0}", "Opera/9.80 (J2ME/MIDP; Opera Mini/9 (Compatible; MSIE:9.0; iPhone; BlackBerry9700; AppleWebKit/24.746; U; en) Presto/2.5.25 Version/10.54"));

这将使用移动用户代理字符串导航到网页,并允许您在网络浏览器控件中即时查看移动网站

于 2016-05-04T19:10:35.203 回答
0

这通常由站点使用User Agent控制,这不是您可以使用标准 WebBrowser 控件更改的内容。有一个基于Chromium的替代 WPF webbrowser 控件,您可以从CodePlex下载。它可能不支持开箱即用的用户代理欺骗,但它是开源的,因此您可以在代码中手动将其更改为 iPhone、Windows Mobile 等。

于 2009-10-07T18:56:19.660 回答
0

Boydski 的解决方案不适合我。这种情况的最佳解决方案:

更改 WebBrowser 控件的用户代理

但有时“navigator.userAgent”没有设置标题 - 解决方案。在这种情况下,您必须使用UrlMkSetSessionOptionMSDN

// import .. use a internal static class like "Native" ;)
[DllImport("urlmon.dll", CharSet = CharSet.Ansi)]
internal static extern int UrlMkSetSessionOption(int dwOption, string pBuffer, int dwBufferLength, int dwReserved);

// usage
string userAgent = "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us)";

UrlMkSetSessionOption(0x10000002, null, 0, 0);

UrlMkSetSessionOption(0x10000001, userAgent, userAgent.Length, 0);

您可以在此处找到正确的用户代理字符串

玩得开心!

于 2015-07-03T07:27:55.207 回答