如何使用C ++与Firefox通信?

时间:2014-03-25 11:04:25

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

我正在进行项目,这是一个非常简单的家长控制软件,但是,我想知道firefox要求的网址是什么,基于它做出响应...如果你可以提供帮助因为我不知道如何让我的软件知道firefox请求的url是什么。怎么做? 我必须在我的大部分软件中使用C ++ ..但如果有更好的语言来完成这项任务,请告诉我

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

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