【问题标题】:How to communicate with Firefox using C++? [closed]如何使用 C++ 与 Firefox 通信? [关闭]
【发布时间】:2014-03-25 11:04:24
【问题描述】:

我现在正在进行项目,这是一个非常简单的家长控制软件,但是,我想知道在 Firefox 中请求的 url 是什么,以便根据它做出响应......如果你可以帮忙,因为我不知道如何让我的软件知道 firefox 请求的 url 是什么 .. 怎么做? 我必须在我的大部分软件中使用 C++。但如果有更好的语言来完成这项任务,请给我建议

【问题讨论】:

  • 如果这个问题是关于 [java] 的,你能包括你的 Java 代码吗?
  • 人们停止投票给这个人,这些都是重要的问题。这很模糊,因为他需要一些方向。帮助他,否决票无助于为社区培养新成员。如果他是一个成熟的成员,我会理解反对票,但是当孩子注册时,你的反对票是不对的。

标签: c++ firefox firefox-addon firefox-addon-sdk


【解决方案1】:

在 Firefox 中,您需要使用名为 nsIHTTPChannel 的 XPCOM 组件。下面的这个脚本将阻止中止所有 rqeuests 到谷歌。通道已打开,但在打开与服务器的连接之前中止。

var {classes: Cc, results: Cr, utils: Cu} = Components;
Cu.import('resource://gre/modules/Services.jsm');

var httpRequestObserver = 
{
    observe: function(subject, topic, data)
    {
        var httpChannel, requestURL;

        if (topic == 'http-on-modify-request') {
            httpChannel = subject.QueryInterface(Ci.nsIHttpChannel);
            requestURL = httpChannel.URI.spec;

            if (/google\.com/.test(requestURL)) {
                httpChanel.cancel(Cr.NS_BINDING_ABORTED);
            }

            return;
        }
    }
};

Services.obs.addObserver(httpRequestObserver, 'http-on-modify-request', false);
//Services.obs.removeObserver(httpRequestObserver, "http-on-modify-request", false); //run this to remove observer

【讨论】:

  • 非常感谢大家..你们的回答很有用
  • 我的快乐人。我意识到你不是在制作一个 Firefox 插件。如果您想要使用此方法的插件的工作模板,请告诉我
  • 但据我所知,您提供的 XPCOM 代码会中止 rqeuests 到谷歌?我对吗?但是,我需要我的软件来获取 firefox 请求的 url,然后它将使用包含不允许的 url 的 db,然后如果有人请求的 url 不允许,该软件将采取诸如关闭浏览器和 olaying wave alert 文件之类的操作
  • 是的,它会的。但它不是一个完整的插件。您已将其打包为 xpi 并包含 rdf。你是在做一个插件还是这就是你需要的所有代码?
  • 亲爱的先生,我对基于网络浏览器的软件完全陌生,所以我希望这个答案能帮助你给我建议:假设 x man 需要一个使用 firefox 的 url 我希望 firefox 传递这个 url让我的软件做出决定.. 可能就像您使用 IDM 下载某些东西时发生的事情.. 所以我不明白添加是与 firefox 通信的方式.. 但是如何将请求的 url 传递给我的软件?也许将其写入 txt 文件还是有更好的方法?我相信您可能会发现我的问题有点愚蠢,但正如我所说,我对基于网络的应用程序完全陌生
【解决方案2】:

我可以建议一种替代方法吗?而不是为 Firefox 编写扩展程序、为 Chrome 编写扩展程序以及为 IE 编写扩展程序......在操作系统网络接口上监听流量并阻止不需要的 URL。

这通常是防火墙的工作。使用现有解决方案将提供解决问题的最有效方法。我不熟悉内置 Windows 防火墙或第 3 方替代方案的功能,但这样的事情对于 iptables (Linux) 来说是微不足道的。

【讨论】:

  • 非常感谢,我要和有心人讨论这个方法
猜你喜欢
  • 1970-01-01
  • 2015-07-13
  • 2023-03-23
  • 1970-01-01
  • 2016-09-12
  • 1970-01-01
  • 2011-06-24
  • 1970-01-01
  • 2011-03-15
相关资源
最近更新 更多