如何获取WebBrowser的用户代理? (。网)

How to obtain WebBrowser's user agent? (.net)

我需要获取 WebBrowser WinForms 控件(.net 2 或 3.5)的当前(或默认)用户代理字符串。

我找到了如何将其更改为我自己的字符串 (Changing the user agent of the WebBrowser control),但我更喜欢使用默认字符串。

简而言之,我使用 WebBrowser 允许用户登录站点。然后我获取会话 cookie 并将其用于我的 JSON HttpWebRequest,并希望使用相同的用户代理来防止出现问题。

您可以插入一些 javascript 来获取用户代理并将其传回 WinForms 应用程序。

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        webBrowser1.Navigated += webBrowser1_Navigated;
        webBrowser1.Navigate("www.google.com");
    }

    private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e)
    {
        var scriptingObject = new UserAgentScriptingObject();
        webBrowser1.ObjectForScripting = scriptingObject;

        HtmlElement scriptEl = webBrowser1.Document.CreateElement("script");
        scriptEl.SetAttribute("text", "function myscript() { window.external.SetUserAgent(navigator.userAgent); }");
        webBrowser1.Document.GetElementsByTagName("head")[0].AppendChild(scriptEl);
        webBrowser1.Document.InvokeScript("myscript");
    }
}

[System.Runtime.InteropServices.ComVisibleAttribute(true)]
public class UserAgentScriptingObject
{
    public void SetUserAgent(string userAgent)
    {
        MessageBox.Show(userAgent);
    }
}