A Firefox extension that can search an IP across several OSINT websites

I do a lot of research on IP addresses, networks, etc, and rely heavily on free / open source websites. To save myself time I made a simple Firefox extension that allows me to highlight and right-click an IP and search either Shodan, Who Is Your VPN, IPinfo, Spur, anad Scamalytics either individually or all at once in separate tabs. You can easily install this your self by creating the below files in a directory on your computer then going to about:debugging in Firefox and loading in the files as a temporary add-on.

manifest.json

{
  "manifest_version": 2,
  "name": "IP Lookup Extension",
  "version": "1.0",
  "description": "Right-click IP address lookup in multiple databases.",
  "permissions": [
    "contextMenus"
  ],
  "background": {
    "scripts": ["background.js"],
    "persistent": false
  },
  "icons": {
    "48": "icon.png"
  }
}

background.js

function createUrl(template, ip) {
  return template.replace('$IP', encodeURIComponent(ip));
}

const services = [
  { id: "shodan", title: "Shodan", url: "https://www.shodan.io/host/$IP" },
  { id: "ipdb", title: "IPDB", url: "https://whoisyourvpn.com/ip/$IP" },
  { id: "ipinfo", title: "IPinfo", url: "https://ipinfo.io/$IP" },
  { id: "spur", title: "Spur", url: "https://spur.us/context/$IP" },
  { id: "scamalytics", title: "Scamalytics", url: "https://scamalytics.com/ip/$IP" },
  { id: "all", title: "All", url: null } 
];

browser.contextMenus.create({
  id: "search-ip",
  title: "Search IP",
  contexts: ["selection"]
});

services.forEach(service => {
  browser.contextMenus.create({
    id: service.id,
    title: service.title,
    contexts: ["selection"],
    parentId: "search-ip"
  });
});

browser.contextMenus.onClicked.addListener((info, tab) => {
  if (info.menuItemId === "all") {
    services.forEach(service => {
      if (service.url) { 
        const url = createUrl(service.url, info.selectionText);
        browser.tabs.create({ url });
      }
    });
  } else {
    const service = services.find(s => s.id === info.menuItemId);
    if (service) {
      const url = createUrl(service.url, info.selectionText);
      browser.tabs.create({ url });
    }
  }
});

And here’s a cute little magnifying glass you can use for icon.png!

icon

1 Like

Thank you very much for sharing. This is really incredible. IPinfo users will definitely find your extension quite useful!

You can also add Host.io there as well. Host.io is IPinfo’s sister site. It provides domain information as well as all the IP metadata information available on that.

:link: example.com (Example Domain) - host.io