little-rat
little-rat copied to clipboard
A way to get and block requests of other extensions in firefox
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
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.
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.