【问题标题】:Change User Agent WebBrowser Object C#更改用户代理 WebBrowser 对象 C#
【发布时间】:2012-03-17 18:29:46
【问题描述】:

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

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

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

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

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

有人可以帮我回答我的问题吗,我现在正在苦苦挣扎一天?

提前谢谢大家!

【问题讨论】:

  • 嗨 Wesley,我现在也在尝试做同样的事情:让网站“认为”我是使用 c# 的 iphone。我想我已经在 webbrowser 控件上尝试了这 3 种不同的方法,但到目前为止还没有运气。你能帮帮我吗?

标签: c# iphone browser user-agent


【解决方案1】:

以下是更改 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);

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2010-10-30
      • 1970-01-01
      • 1970-01-01
      • 2012-08-24
      • 1970-01-01
      • 2012-02-20
      相关资源
      最近更新 更多