我有一个带有webbrowser控件的简单WPF应用程序。当我指示控件加载页面时,我希望控件告诉服务器它正在尝试加载页面,因为它是移动设备,因此加载较小版本的页面。我知道很多网站只是在地址之前添加移动设备,所以google.com的移动页面只是mobile.google.com,但我想知道是否有办法加载让网络服务器自动将我的webbrowser控件转到该网站的移动版本?我觉得应该有一个非常简单的方法来做到这一点,但我无法弄明白:)。
提前致谢!!!
答案 0 :(得分:9)
实际上,WebBrowser支持通过Navigate方法中的标题更改用户代理:
this.yourWebBrowserControl.Navigate( new Uri( "http://www.yoursite.com" ), string.Empty, null, string.Format( "User-Agent: {0}", "Your user agent string here" ) );
答案 1 :(得分:1)
我知道这是旧的,但这很容易做到:
首先,您需要用户代理字符串,并且需要进行字符串格式化。这是我在下面的方式 wbMobile是一个webbrowser控件。此示例将带您进入移动bing网站
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"));
这将使用移动用户代理字符串导航到网页,并允许您在Web浏览器控件中即时查看移动网站
答案 2 :(得分:0)
这通常由网站使用User Agent控制,这不是您可以使用标准WebBrowser控件更改的内容。有一个基于Chromium的替代WPF webbrowser控件,您可以从CodePlex下载。它可能不支持开箱即用的用户代理欺骗,但它是开源的,因此您可以在代码中手动将其更改为iPhone,Windows Mobile等。
答案 3 :(得分:0)
Changing the user agent of the WebBrowser control
但有时候" navigator.userAgent"未设置标题 - 解决方案。 在这种情况下,您必须使用 UrlMkSetSessionOption 。 MSDN
// 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);
您可以找到here
的正确用户代理字符串玩得开心!