UBlock Origin 1.17.4 released
github.com
github.com
I also use uBO for injecting my own styles on pages, like adding an absolute timestamp to github: https://news.ycombinator.com/item?id=15743008
In case you're worried that it'll catch incorrect elements via generic selectors or the like, the list is almost entirely site-specific selectors (see [1]). The (much smaller) list of generic selectors can be found at [2].
[1] https://github.com/yourduskquibbles/webannoyances/blob/maste...
[2] https://github.com/yourduskquibbles/webannoyances/blob/maste...
Glad you find it useful!
Personal anecdote: While developing & maintaining a list it can be difficult to know if others are finding it useful because once it is being used (if it is done properly and doesn't break sites), there should be almost no feedback from the user base because they may just think the web is working as it should be and don't realize why it is how it is.
Also, to iOS passersby: here's an annoyances blocker for your Safari blocking pleasure: https://itunes.apple.com/us/app/unobstruct/id1255281426
Not sure if this is what you mean exactly, but uBlock Origin (as well as a lot of other Firefox extensions) can be installed[1] on Firefox for Android.[2]
[1] https://addons.mozilla.org/en-US/android/addon/ublock-origin...
Adaway was great, but that required root of course
Chrome has never been an option for us with privacy in focus.
The guys behind uBO should get some price or something.
Many stuff is disabled by default, but it’s a moving target. There are some tutorials online to read.
It depends on what the browser is used for. Some hardening breaks certain sites.
Some stuff to look at:
- dns-prefetch - geo - cookie - dom (disable, breaks sites) - browser.cache.disk - clipboard.events - media.peerconnection - healthreport - spoofRefererHeader
Chrome doesn’t remove history when closed is a big issue.
https://gist.github.com/0XDE57/fbd302cef7693e62c769
I had some problems with sendRefererHeader, so it can definitely break some websites
That makes sense. Checking the Referer header is a quick and dirty way to implement cross-site request forgery (CSRF) protection.
Also, the DNS cache size explanation is a bit backwards. "Number of cached DNS entries. Lower number = More requests but less data stored." Where do you think that data is stored? Bigger cache size means fewer requests that inform a third-party (your DNS server) of which sites you're visiting. (Information leaks from the speed of resolving a query might be a concern, but I'm not sure how doable this is from a webpage.)
And then it disables all caches (including in-memory) for... what reason, exactly? You can configure firefox to clear all your browser data when you close it.
But then they force-enable WebGL, which enables quite a few tracking techniques. This list is weird.
I guess all I want to say is don't blindly apply settings from this list. The author traded a lot of convenience, speed, and security for some perceived privacy.
I am not a security expert, but I tend to agree with this. I took a look at the script and noticed a few of the things you pointed out, and I have had horrible experiences running random scripts I found on Github before from claimed-to-be "experts", so I'll stick with the defaults (and UBlock).
There are efforts to prevent this in the future but for now disabling or limiting DNS cache seems the only viable option.
Unfortunately, there is no real documentation of the various about:config parameters. So one has to trust doubtful sources on what settings would be useful, or spend many hours reading the source code of Firefox.
I don't understand why each setting is not documented on the about:config page. It would bind the documentation to the release, providing the info suitable for the FF version. I can't see any drawback, except that developers would have to provide a small description of every setting they introduce, which I hope they already do somewhere.
Here is my own frustrating experience with about:config. I sometimes hit Ctrl-q when I meant Ctrl-w. So instead of closing a tab in FF, I close the application and loose my input on some pages. I tried to restore the (previously default) behavior of asking for confirmation before quitting. I had 2 settings in "about:config" named "browser.warnOnQuit" and "browser.showQuitWarning". Only the former one is documented in the mozillaZine wiki. It seems the latter was the old name of this setting, which FF updates never migrated.
So I changed the config, and nothing happened. After several variations, I headed for the source code of FF, and saw this setting was ignored when "restoring sessions" was active. There is no way to ask for confirmation in modern FF.
> I don't want the administrative workload coming with donations. I don't want the project to become in need of funding in any way: no dedicated home page + no forum = no cost = no need for funding. I want to be free to move onto something else if ever I get tired working on these projects (no donations = no expectations).
> Have a thought for the maintainers of the various lists. These lists are everything. This can't be emphasized enough.
[1] - https://github.com/gorhill/uBlock/wiki/Why-don't-you-accept-...
Don't know how it would be for an opensource project. Mentioning something like "open source browser extension uBlock Origin" probably...
Interesting how people report their donations, patreons, etc.
https://support.patreon.com/hc/en-us/articles/207099566-Will...
If there is no money involved the project cannot be bribed by ad tech. The only acceptable ads are the ones the user white lists.
See here: https://github.com/gorhill/uBlock/wiki/Why-don't-you-accept-...
Just curious. I am on a similar boat but sometimes find some sites to be unreadable after having UBO and some other privacy adjustments through about:config.
Thanks!
Is there an example of a site that is unreadable after a default install of UBO for you? I'd be curious to check it out..
Never had this issue. Even in Slack, where UBO blocks 778 elements atm.
On the otherhand I also run NoScript temp-whitelist only so all sites that rely on javascript are broken by default for me until I figure out which CDN/etc to temp whitelist.
https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-de...
Unless you have some reason not to use it, it's much easier than changing about:config on each computer, you just copy over the user.js file.
Here's a hardened option (no affiliation): https://github.com/pyllyukko/user.js
And a relaxed version: https://github.com/pyllyukko/user.js/tree/relaxed
As expected it will increase any font that doesn't meet your minimum size.
If you're fine with per-site settings, just use the zoom option.
You can use ungoogled-chrome.
1. Hide Quora notification icon
2. Hide YouTube notification icon
3. Hide stackoverflow questions you might be interested section(right bottom section)
How do you use other than ad-blocker?
https://en.m.wikipedia.org/wiki/Wikipedia:Wikipedia_Signpost...
The wikipedia page is completely broken on mobile devices during the fundraiser. (Text in the popup is so large that it becomes impossible to hit the close button).
I have donated to wikipedia for the past 5 years, and will continue to do so. But the fundraiser banner is just terrible, and persists after you donated.
I'm beginning to realize that instead of using YouTube: explicitly search for video -> watch video -> read a comment or two -> close tab
YouTube has been using me: open main page -> get distracted by a video that an algorithm knows I'll be interested in -> click a couple more recommended videos -> fall down the auto-play ad revenue rabbit hole -> hour later: 'oh yeah, why did I open YouTube...?' -> perhaps search for intended video, perhaps get distracted again -> etc. etc
This trend has become synonymous with popular internet services over the past 10-20 years. These services are marketed as a way to connect with distant friends, view all the multimedia the internet has to offer, save us money, etc. when in reality the majority are leveraging large-scale data collection combined with neural nets to hijack our brains' reward systems just for the sake of greed. God bless uBlock!
It's not a content-blocker version, but it's a port of Chrome version.
[0]: https://github.com/el1t/uBlock-Safari/issues/122
[1]: https://github.com/el1t/uBlock-Safari/issues/130
[2]: https://developer.apple.com/documentation/safariextensions
Apple are basically neutering _all_ blockers, unfortunately. I don't know if they're planning on filling the void though.
Apple recommends all adblock extensions now use the content blocking API which is superior from a user privacy perspective. When using the content blocker apis, the extension cannot view or read which web pages are visited. Prior extension APIs had full access to browsing history (which obviously can be easily abused).
The content blocker API is different but does allow full featured and sophisticated adblockers. I know because I create one which is very efficient, effective and free - Magic Lasso Adblock (https://www.magiclasso.co/)
Meaning that if the blocker misses something (and it will), I have no way to deal with it.
This "privacy" canard is just Apple being Apple and punishing users in the name of full control. The #1 and #2 most used adblockers by everyone have no legitimate privacy concerns.
This is extremely disappointing. There are "Apple-approved" blockers on the App Store but none is as efficient as uBlock Origin, they also lack transparency.
When compiling the content blocking rules, Safari also ensures the rules fit within reasonable execution limits to ensure there is absolutely no speed decrease due to blocking. If the rules are excessive, they are rejected by Safari.
In terms of effectiveness, yes there is variability between different blockers. We are the creators of one blocker for iOS and Mac and have found that it is extremely effective and in tests we've done provides a 2x speed-up on web page loading and rendering speed (for the top news and media sites we tested)
Buddy, your product is not fully featured. In ublock, you can click and block individual elements or domains, in your product,the feature to whitelist any site is even a beta feature... And your app costs money, because the free version doesnt offer all blocking lists.
It also seems like i can not use my own lists, or language specific lists. Btw, where can we download your content lists to make sure you do not just resell free, community driven lists?
So thanks for promoting Safaris terrible adblocker framework with a paid product that is lightyears inferior to the free Ublock we are discussing here.
However, as of iOS 9, Apple has provided a new model for blocking ads: the content blocking API, which relies on lists of filters that the browser applies automatically. This is meant to replace an extension running JavaScript on your page to do the same thing, which means that blocking is faster and doesn't mean you have to trust the extension author to make sure they're not doing anything malicious.
So I heavily experimented with squeezing performance out of a JS-based trie-implementation for LZString[0]. Back then some early experimentation suggested that using TypedArrays was likely to be slower than using objects with numerical keys, and for non-degenerate input using a trie based on plain arrays and indexOf calls was the fastest[1]. However, it's been a while since I looked at those numbers (and I suspect that with uBlock's use case look-up performance matters more than insertion performance, which makes it very different from LZString's).
But it should be obvious that HNTrie's implementation[2] is something I'm very interested in ;).
[0] https://github.com/pieroxy/lz-string/pull/98
[1] https://github.com/pieroxy/lz-string/blob/ba8988028d78962eba...
[2] https://github.com/gorhill/uBlock/blob/2a91a685ce3d2dae5d3c2...
Incidentally, I did write a JS/WASM version of LZ4 block encoding[1] (also used in uBO). I do wonder if it could be of interest for the LZString project.
My understanding is that the output of LZ4 compression would need to be further processed to make it JS string-friendly (for localStorage purpose).
Maybe worth exploring if even with that extra step[2], the performance gain if any is worth it?
[1] https://github.com/gorhill/lz4-wasm
[2] Encode 7 bytes into 8 valid ASCII characters?
Anyone know why regex performance on Safari is so diabolically bad?
Safari 12.0.1 on OS X 10.13.6.
Test 100 needles against 16 dictionaries of hostnames
- Set-based x 3,149 ops/sec ±0.75% (59 runs sampled)
- Regex-based x 281 ops/sec ±0.78% (61 runs sampled)
- Trie-based (1st-gen) x 14,118 ops/sec ±1.66% (66 runs sampled)
- Trie-based JS (2nd-gen) x 12,349 ops/sec ±0.58% (61 runs sampled)
Chrome 70.0.3538.110 on OS X 10.13.6 64-bit.
Test 100 needles against 16 dictionaries of hostnames
- Set-based x 3,376 ops/sec ±1.95% (61 runs sampled)
- Regex-based x 4,492 ops/sec ±1.66% (27 runs sampled)
- Trie-based (1st-gen) x 9,431 ops/sec ±0.69% (51 runs sampled)
- Trie-based JS (2nd-gen) x 8,627 ops/sec ±0.63% (47 runs sampled)
- Trie-based WASM (2nd-gen) x 12,169 ops/sec ±0.58% (64 runs sampled)
Done.There is too much junk on sites, poorly designed elements that take up half my screen, social media elements, video elements - I tend to block those elements freely.
Sites that load but stay "blank" until you disable filtering
Adblock Warning Removal List
https://easylist-downloads.adblockplus.org/antiadblockfilter...
https://itunes.apple.com/app/adguard-for-safari/id1440147259
https://itunes.apple.com/app/apple-store/id1047223162
These two.
The one linked by fragebogen is the non-origin version which you probably do not want to use.
Benchmarking, the higher ops/sec the better.
Firefox 63.0 on Windows 10 64-bit.
Test 100 needles against 16 dictionaries of hostnames
- Set-based x 1,443 ops/sec ±3.46% (54 runs sampled)
- Regex-based x 4,093 ops/sec ±1.18% (25 runs sampled)
- Trie-based (1st-gen) x 8,993 ops/sec ±1.92% (59 runs sampled)
- Trie-based JS (2nd-gen) x 7,923 ops/sec ±2.81% (44 runs sampled)
- Trie-based WASM (2nd-gen) x 10,100 ops/sec ±1.75% (54 runs sampled)
Done. Benchmarking, the higher ops/sec the better.
Firefox 63.0 on Fedora 64-bit.
Test 100 needles against 16 dictionaries of hostnames
- Set-based x 1,707 ops/sec ±1.93% (60 runs sampled)
- Regex-based x 4,078 ops/sec ±0.88% (25 runs sampled)
- Trie-based (1st-gen) x 10,038 ops/sec ±1.41% (64 runs sampled)
- Trie-based JS (2nd-gen) x 7,258 ops/sec ±1.03% (40 runs sampled)
- Trie-based WASM (2nd-gen) x 8,033 ops/sec ±1.08% (44 runs sampled)
Done. Benchmarking, the higher ops/sec the better.
Firefox 65.0 on Windows 10 64-bit.
Test 100 needles against 16 dictionaries of hostnames
- Set-based x 1,647 ops/sec ±2.23% (13 runs sampled)
- Regex-based x 1,178 ops/sec ±4.95% (48 runs sampled)
- Set-based x 1,854 ops/sec ±1.94% (59 runs sampled)
- Trie-based (1st-gen) x 275 ops/sec ±4.61% (56 runs sampled)
- Regex-based x 2,947 ops/sec ±2.32% (61 runs sampled)
- Trie-based (2nd-gen) x 671 ops/sec ±2.60% (47 runs sampled)
Done.
- Trie-based (1st-gen) x 9,311 ops/sec ±1.61% (51 runs sampled)
- Trie-based JS (2nd-gen) x 7,121 ops/sec ±1.28% (40 runs sampled)
- Trie-based WASM (2nd-gen) x 7,983 ops/sec ±2.44% (63 runs sampled)
Done.
And mine seems to look different than yours, but similarly lopsided. Benchmarking, the higher ops/sec the better.
Firefox 63.0 on Linux 64-bit.
Test 100 needles against 16 dictionaries of hostnames
- Set-based x 1,992 ops/sec ±0.71% (15 runs sampled)
- Regex-based x 5,148 ops/sec ±0.18% (30 runs sampled)
- Trie-based (1st-gen) x 11,797 ops/sec ±0.49% (63 runs sampled)
- Trie-based JS (2nd-gen) x 8,471 ops/sec ±0.50% (47 runs sampled)
- Trie-based WASM (2nd-gen) x 9,543 ops/sec ±0.48% (52 runs sampled)
Done.
I don't see why trie matching performance would depend on the host OS... Unless WASM runs out of process and requires some form of IPC, I guess?Benchmarking, the higher ops/sec the better. Safari 12.0 on Apple iPhone (iOS 12.1).
Test 100 needles against 16 dictionaries of hostnames - Set-based x 3,763 ops/sec ±0.19% (68 runs sampled) - Regex-based x 392 ops/sec ±0.16% (66 runs sampled) - Trie-based (1st-gen) x 20,669 ops/sec ±0.15% (69 runs sampled) - Trie-based JS (2nd-gen) x 16,926 ops/sec ±0.71% (69 runs sampled) Done.
Benchmarking, the higher ops/sec the better.
Firefox 63.0 on Windows 10 64-bit.
Test 100 needles against 16 dictionaries of hostnames
- Set-based x 1,917 ops/sec ±1.21% (14 runs sampled)
- Trie-based (2nd-gen) x 829 ops/sec ±0.64% (66 runs sampled)
Done.
- Regex-based x 4,475 ops/sec ±0.37% (27 runs sampled)
- Trie-based (1st-gen) x 8,624 ops/sec ±0.29% (48 runs sampled)
- Trie-based JS (2nd-gen) x 8,848 ops/sec ±0.43% (49 runs sampled)
- Trie-based WASM (2nd-gen) x 10,441 ops/sec ±0.30% (57 runs sampled)
Done.
Interestingly, my CPU only boosts to 4.3 GHz during this benchmark and CPU utilisation of the Firefox process only goes up to 8%. Benchmarking, the higher ops/sec the better.
Safari 12.0.1 on OS X 10.14.1.
Test 100 needles against 16 dictionaries of hostnames
- Set-based x 3,801 ops/sec ±1.01% (62 runs sampled)
- Regex-based x 370 ops/sec ±0.68% (60 runs sampled)
- Trie-based (1st-gen) x 15,679 ops/sec ±0.73% (63 runs sampled)
- Trie-based JS (2nd-gen) x 16,408 ops/sec ±2.50% (62 runs sampled)
Benchmarking, the higher ops/sec the better.
Firefox 63.0 on OS X 10.14.
Test 100 needles against 16 dictionaries of hostnames
- Set-based x 1,703 ops/sec ±3.46% (57 runs sampled)
- Regex-based x 4,210 ops/sec ±1.95% (26 runs sampled)
- Trie-based (1st-gen) x 9,961 ops/sec ±0.74% (65 runs sampled)
- Trie-based JS (2nd-gen) x 7,120 ops/sec ±0.61% (40 runs sampled)
- Trie-based WASM (2nd-gen) x 7,993 ops/sec ±0.81% (44 runs sampled)
Benchmarking, the higher ops/sec the better.
Chrome 70.0.3538.110 on OS X 10.14.1 64-bit.
Test 100 needles against 16 dictionaries of hostnames
- Set-based x 3,414 ops/sec ±5.66% (53 runs sampled)
- Regex-based x 4,667 ops/sec ±2.50% (28 runs sampled)
- Trie-based (1st-gen) x 10,665 ops/sec ±1.31% (56 runs sampled)
- Trie-based JS (2nd-gen) x 7,852 ops/sec ±1.66% (43 runs sampled)
- Trie-based WASM (2nd-gen) x 11,930 ops/sec ±2.49% (58 runs sampled)
MacOS 10.14.1Hardware:
MacBook Pro (15-inch, 2017)
Processor: 2.9 GHz Intel Core i7
Memory: 16 GB 2133 MHz LPDDR3
Graphics: Radeon Pro 560 4096 MB
Intel HD Graphics 630 1536 MB
Benchmarking, the higher ops/sec the better.
Safari 11.1.2 on OS X 10.12.6.
Create dictionaries
-Set-based x 1,393 ops/sec ±0.85% (60 runs sampled)
-Regex-based x 1,798 ops/sec ±0.75% (61 runs sampled)
-Trie-based (1st-gen) x 419 ops/sec ±1.35% (61 runs sampled)
-Trie-based (2nd-gen) x 986 ops/sec ±0.77% (63 runs sampled)
Done.