view my-corporate-stalkers/my-corporate-stalkers.js @ 15:7ffb8a48367e

Added initial version of 'my-corporate-stalkers' command.
author Atul Varma <varmaa@toolness.com>
date Wed, 01 Apr 2009 09:21:54 -0700
parents
children
line wrap: on
line source

var observerSvc = Cc["@mozilla.org/observer-service;1"]
                  .getService(Ci.nsIObserverService);

if (!globals.refererMatrix)
  globals.refererMatrix = {};

if (globals.myHttpObserver) {
  observerSvc.removeObserver(globals.myHttpObserver, "http-on-modify-request");
  globals.myHttpObserver = null;
}

globals.myHttpObserver = {
  observe: function(subject, topic, data) {
    subject = subject.QueryInterface(Ci.nsIHttpChannel);
    if (subject.referrer) {
      var refHost = subject.referrer.host;
      var host = subject.URI.host;
      refHost = refHost.split('.').slice(-2).join('.');
      host = host.split('.').slice(-2).join('.');
      if (refHost != host) {
        try {
          subject.getRequestHeader("Cookie");
          if (!globals.refererMatrix[host])
            globals.refererMatrix[host] = {};
          if (!globals.refererMatrix[host][refHost])
            globals.refererMatrix[host][refHost] = 0;
          globals.refererMatrix[host][refHost]++;
        } catch (e if e.result == Components.results.NS_ERROR_NOT_AVAILABLE) {
        }
      }
    }
  }
};

observerSvc.addObserver(globals.myHttpObserver,
                        "http-on-modify-request",
                        false);

CmdUtils.CreateCommand({
  name: "my-corporate-stalkers",
  author: {name: "Atul Varma", email: "avarma@mozilla.com",
           homepage: "http://www.toolness.com"},
  license: "MIT",
  description: ("Shows you what other websites know about you " +
                "based on the sites you visit."),
  preview: function(pblock) {
    var output = "";
    for (host in globals.refererMatrix) {
      output += host + " may know that you visit:\n";
      for (refHost in globals.refererMatrix[host])
        output += "  " + refHost + "\n";
      output += "\n";
    }
    jQuery(pblock).empty();
    jQuery(pblock).append(
      jQuery("<pre></pre>", pblock.ownerDocument).text(output)
    );
  }
});