【问题标题】:GeckoFX new UserAgent each Tab/browser controlGeckoFX 新的 UserAgent 每个选项卡/浏览器控件
【发布时间】:2020-07-27 11:34:40
【问题描述】:

我正在编写一个有多个选项卡的程序。每个选项卡上都有一个 GeckoFX。我尝试了很多东西,不幸的是,当我打开新选项卡并创建第二个浏览器控件并更改用户代理时,第一个浏览器控件的用户代理也发生了更改。

有什么想法吗?

我希望每个浏览器控件有一个 UserAgent

           Dim page As New TabPage("Tab" & Tabcontrol_Main.TabPages.Count.ToString)
            Dim sUserAgent As String = "Tab" & Tabcontrol_Main.TabPages.Count.ToString
            Tabcontrol_Main.TabPages.Add(page)
            Dim browser As New GeckoWebBrowser
            browser.Name = "browser" & Tabcontrol_Main.TabPages.Count.ToString - 1


            GeckoPreferences.User.SetCharPref("general.useragent.override", RandomUserAgent(sUserAgent))
            page.Controls.Add(browser)
            browser.Dock = DockStyle.Fill

【问题讨论】:

    标签: c# vb.net user-agent geckofx


    【解决方案1】:

    通过 GeckoPreferences 设置用户代理确实是全局的。

    如果您以编程方式导航每个选项卡,则可以在每个 Navigate 调用的请求标头中设置用户代理。

    Navigate(string url, GeckoLoadFlags loadFlags, string referrer, MimeInputStream postData, MimeInputStream headers)
    
    MimeInputStream headers= MimeInputStream.Create();
    string simpleData = "User-Agent=hello";
    headers.SetData(simpleData);
    

    如果您还希望在每个选项卡中发生进一步导航时设置用户代理,那么我猜,您将不得不监听每个导航并修改每个导航。

    【讨论】:

    • 为了完成信息集,我将在这里写下我发现的内容:它与 XPCom 驱动程序有关。要以其他方式做到这一点,它必须被初始化多次。但我不知道这是否可能。另一种方法是检查 Firefoxplugins 是否可加载并使用其中一个。另一种方法是创建一个自定义的用户控件,具有自己的 XPCom 初始化。但是 - 现在,你的答案是最简单的。编程有点复杂——但最简单。非常感谢你! (该死,我的拼写不好)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-18
    • 2012-05-28
    • 1970-01-01
    • 2013-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多