dnakov / little-rat

🐀 Small chrome extension to monitor (and optionally block) other extensions' network calls
MIT License
2.1k stars 64 forks source link

A way to get and block requests of other extensions in firefox #17

Open Landius opened 1 year ago

Landius commented 1 year ago

TLDR: use browser.proxy.onRequest.

MDN doc about the firefox's proxy API, it's quite different from chromium's chrome.proxy.

use browser.proxy.onRequest.addListener(listener, {urls:['<all_urls>']}) to get requestDetail. usually, the requestDetail.documentUrl of extension request is in format like: moz-extension://${internalUUID}/path listener returns an invalid proxy to block request 🤣

internalUUID is unique for each extension, but it's different from the extension id returned by browser.management.getAll(), and I can't find a way to get it in extension. one way to get internalUUID is, open this page about:debugging#/runtime/this-firefox, run some snippet in devtool:

const idPairArr=[];
for(let card of document.querySelectorAll('.card')){
  const fields = card.querySelectorAll('dd.fieldpair__description');
  if(fields.length>=2){
    idPairArr.push({
      extensionId:fields[0].innerText,
      internalUUID:fields[1].innerText
    })
  }
}
console.log(idPairArr);

related issues: #8, #14

dnakov commented 1 year ago

Hey that's great! I tried proxy.onRequest in chrome a while ago, and yes, didn't show extension traffic, nice find for firefox! Thanks for the pointer, I'll try digging into it as well.

SullieLore commented 1 month ago

Could I please request that Firefox (specifically Zen Browser, which is basically Firefox) is looked at again as a new home/continuation for Little Rat? I must say, without Little Rat I feel like most extensions are not worth using. Thanks for your hard work.