Userscripts is a notable exception of this rule as in this case the user instructs the extension what JS to execute.
Userscripts is a notable exception of this rule as in this case the user instructs the extension what JS to execute.
I have used both browsers, and I find sideloading in Chrome to be completely painless. I use many sideloaded extensions in Chrome (mostly because I wanted to make small edits to existing extensions).
I guess I'm trying to figure out whether all this fuss is really a limitation of Manifest v3, or merely Chrome Web Store policy. If the latter, I don't see a problem as long as sideloading is possible, and I really hope UBlock Origin will just go that route.
Sideloading is the real freedom which everyone should rally around and protect. (I am extremely unhappy with Mozilla's approach to this, if you can't tell.)
This remote JS stuff is a CWS policy.
(I appreciate you answering my questions!)
Other than that, you can probably really do everything you could do with the webRequest API, but the complexity of doing it essentially reduces to the halting problem: You'd have to statically analyze all Javascript loaded by the page and figure out if it's going to do any requests you don't want to happen and then rewrite these parts. Maybe there's clever things you could do by shimming all web APIs that can issue HTTP or other requests, but that also doesn't sound fun.
On the other hand, with an API that just gets to veto every outgoing request, you can trivially achieve the same goal.
Another area where in-page Javascript is limited compared to an extension is the same origin policy. A very fancy ad-blocking extension could e.g. run an image classification AI on third-party image resources and hide the ones that look like visually distracting, flashing etc. ads by default – in-page Javascript can't.
> Simple injected Javascript can't e.g. undo requests (from other scripts or just normal resources like third-party images)
But could you detect the request, see what element it loaded in, and then hide that element? Or is that much more complicated than I'm imagining?
There is. But you must be running firefox on Linux, on specific distribution (i.e. Debian or Fedora), built by that distribution and the extension has to be installed system-wide by root. Then the signature won't be enforced.
Mozilla banned non-store extensions in their last Firefox for Android overhaul a few years ago and afaik does not plan to allow them again.
This is the reason why the anti-paywall extensions are all gone/DMCAed.
It's a massive power shift away from the user. No idea why Mozilla did that.
The answer is Firefox Nightly or Firefox Developer, you're freely to install unsigned addons in these editions.
I do use Firefox for Android Nightly. How would I install an unsigned addon there?
I don't think it's possible. ... but if it were, this would be very useful to get the Anti-Paywall addons back.
But it's easier with Ice Raven or Smart Cookie Web Preview:
- https://old.reddit.com/r/browsers/comments/18ezd3g/iceraven_...
- https://github.com/CookieJarApps/SmartCookieWeb-Preview/rele...
I'm also not sure if sideloaded extensions can receive automatic updates, but the much bigger problem is getting people used to sideloading unsigned extensions with full web site access: Tech support scammers will have a field day with that.
On platforms where sideloading is either impossible (iOS) or usual (Android), adblockers are completely inaffective. The gatekeepers simply don't allow them to exist. This is true even though the maker of iOS ostensibly (!) isn't ad supported.
> I'm also not sure if sideloaded extensions can receive automatic updates
They can't (at least without some external software), which is why the ability to load remote Javascript would be important. For less frequent updates, they could prompt the user.
You could have app approvals go through some truly public, government-run agency... except frankly I'd object to that too on free-speech grounds.
Mozilla routinely fails its users and spends a lot of money on downright bad ideas. They are a pinnacle of intransparency and most of their press releases are written in Newspeak, far worse than Google, ironically.
In this very thread we have a discussion about Mozilla putting the boot on its formerly open extension ecosystem.
So it is an odd idea that the manufacturer of the browser (Google, Apple, Microsoft, or Mozilla) should have a say in how much I can trust my content blocker.
The last group of stakeholders I would want involved in decisions about my content blocker is the ad-funded tech industry.
They can't update the entire extension automatically, but should be able to get updated blocklists no problem.
So I guess not in regular?
A lot of people recommend switching to Developer Edition to use unsigned extensions, but that's aligned to the Beta update channel. There's no way to get stable releases + unsigned extensions.
Whatever the security argument, I find this completely antithetical to user freedom, especially given that it's allowed in Chrome! I just can't believe that Mozilla is the one restricting their own users.
(It's also news to me that unsigned extensions can be enabled in ESR, I thought it was just Nightly and Developer. That's nice I guess.)