更改用户代理WebBrowser对象C#

本文关键字:对象 WebBrowser 用户代理 | 更新日期: 2023-09-27 18:26:04

我知道有很多主题都包含与这个主题相同的主题,但这些主题都不能帮助我解决问题。

我正在用C#做一个简单的iPhone浏览器。它唯一应该做的就是表现得像一部iPhone。当您更改用户代理字符串时,这是可能的。

我在WebBrowser.Navigate事件中尝试了,在第4个参数中,您可以放置一个包含用户代理字符串的标头。但它只工作一次,在您单击WebBrowser中的某个内容后,它会将用户字符串更改为默认值。所以这对我来说不是一个可用的方法

然后我尝试了在互联网上找到的ExtendedWebBrowser控件。当你使用该控件时,你可以在属性窗口中设置用户代理,但这对我来说根本不起作用。

所以最后我尝试使用urlmon.dll来设置用户代理,但当他们谈论它时,他们都在谈论重新启动进程。我找不到任何使用该DLL的进程,所以我也不能让它工作。如果它能工作,就不可能每次我想使用应用程序时都重新启动它。

有人能帮我回答我的问题吗?我已经纠结了一天了?

提前感谢大家!

更改用户代理WebBrowser对象C#

以下是如何更改UserAgent

[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 ua = "YourUserAgentString";
UrlMkSetSessionOption(URLMON_OPTION_USERAGENT, ua, ua.Length, 0);

对于这个特定的问题,我没有任何要添加的内容,但应该提到的是,IE不会像iPhone那样呈现任何东西,尤其是对于包含iPhone特定标记、脚本和样式表的网站。

Google Chrome是基于WebKit的(与iPhone浏览器相同),开发者工具中有一个选项可以覆盖用户代理。这可能是一个比试图在C#下托管IE更好的解决方案。Chrome的调试工具在DOM中也表现得更好。