gpt4 book ai didi

c# - Winform Webbrowser 被识别为移动设备

转载 作者:行者123 更新时间:2023-11-30 16:49:49 25 4
gpt4 key购买 nike

我正在尝试通过 winforms 中的网络浏览器控件打开网站。尽管无论它打开什么网站,它都是通过移动版本打开的。我的网络浏览器被识别为移动设备。

最佳答案

您可以使用 Navigate 导航到该页面方法并将合适的 User-Agent 字符串作为 additionalHeaders 参数传递。

该技巧对于根据用户代理字符串在服务器端检测移动模式的站点很有用。对于某些不检测移动模式且仅具有基于浏览器大小的客户端响应设计的站点,您可以将浏览器控件调整为合适的大小以显示移动 View 。

示例

这是一个 example Windows Phone 10 上 Edge 的用户代理字符串。
您可能想使用 different user agent .

var additionalHeaders = "User-Agent:Mozilla/5.0 (Windows Phone 10.0; Android 6.0.1; " +
"Microsoft; Lumia 950 XL Dual SIM) AppleWebKit/537.36 (KHTML, like Gecko) " +
"Chrome/52.0.2743.116 Mobile Safari/537.36 Edge/15.15063\r\n";

this.webBrowser1.Navigate("http://www.stackoverflow.com", null, null, additionalHeaders);

因此您会在移动模式下看到 stackoverflow 站点:

enter image description here

注意 - 作为更好的选择,为所有后续请求设置用户代理

作为一个选项,您可以使用以下代码为所有后续请求设置用户代理:

[DllImport("urlmon.dll", CharSet = CharSet.Ansi)]
private static extern int UrlMkSetSessionOption(int dwOption, string pBuffer,
int dwBufferLength, int dwReserved);
const int URLMON_OPTION_USERAGENT = 0x10000001;

string additionalHeaders = "User-Agent:Mozilla/5.0 (Windows Phone 10.0; Android 6.0.1; " +
"Microsoft; Lumia 950 XL Dual SIM) AppleWebKit/537.36 (KHTML, like Gecko) " +
"Chrome/52.0.2743.116 Mobile Safari/537.36 Edge/15.15063\r\n";
private void Form1_Load(object sender, EventArgs e)
{
UrlMkSetSessionOption(URLMON_OPTION_USERAGENT,
additionalHeaders, additionalHeaders.Length, 0);
webBrowser1.Navigate("http://google.com");
}

关于c# - Winform Webbrowser 被识别为移动设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35905145/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com