el1t / uBlock-Safari

uBlock Origin - An efficient blocker for Chromium, Firefox, and Safari. Fast and lean.
GNU General Public License v3.0
2.74k stars 97 forks source link

Explanation of the state of uBlock Origin (and other blockers) for Safari #158

Open ghost opened 5 years ago

ghost commented 5 years ago

Very quick tl;dr: uBO will no longer work with Safari, use Firefox or a new "content blocker" app (see below for good replacements).

In the past few months, and especially in the past week, there have been a lot of posts and comments questioning the status of uBlock Origin for Safari. This should answer all questions on the status of uBO for safari.

uBlock Origin was ported for Safari in 2016, and was updated regulary (mostly changes from the main project) until 2018 when development completley stopped. Since then Apple has begun phasing out Safari extensions as extensions, and has instead been implenting a new extensions framework which is extremley limited in adblocking functions, only allowing "content blockers", which are just links bundled as an app which Safari enforces. From Safari 12 / macOS Mojave, old legacy Safari extensions were still allowed, but came with warnings saying that they will slow down your browsing (they infact won't, or at least not noticably). Safari also recently shut their Extension Gallery, instead redirecting it to the mac app store. Though it is still curently possible to install uBlock Origin by downloading the extension from Github (edit: must follow these instructions, it will not be starting from Safari 13 / macOS Catalina, when the legacy entension API will be fully deprecated.

It will not possible for uBlock Origin to work with the upcoming Safari 13 / macOS Catalina release If you are a current user of uBlock Origin for Safari here are the options to continue blocking ads:

  1. For the moment continue to use Safari 12 with uBlockOrigin. Anybody with uBO currently installed, it won't be removed until you update to Safari 13. If you don't have uBO installed, and wish to install on a pre-Catalina version of Safari, Download the latest (and final) release here and follow these instructions to install it. Unfortunately it's a bit complicated. This will stop working with macOS Catalina (coming "this fall"). Update: It appears that it is not possible to install uBO permanently, it will always uninstall on a restart of Safari. If you have it, it should stay.
  2. Switch to a different browser. If you choose this, I strongly recomend Firefox. Chrome will itself be ending support for uBlockOrigin soon. If battery life is an issue for you get Firefox Beta, Nightly or Developer which has massive battery life improvements to bring it on par with Safari / Chrome being tested (note: somewhat unstable). This will come to the stable version, hopefully in time for uBO-Safari's eol.
  3. Get a content blocker. Not nearly as powerful as uBO, but the best option if you want to stay with Safari. Do not get the app called "uBlock", this is unassociated with uBlockOrigin (read about the split here), and is simply a content blocker with a big negative feature of having acceptable ads built in (which is AdBlockPlus's pay-to-play ad and tracker unblocking program). It shares no code with uBO and has no advantages over any other content blocking app. Here are some recomendations of content blockers:

Top picks

Other Good Options

Do Not Reccomend

Update: Here is a statement from gorhill (uBO developer) on the state of Safari

Edit: a lot people are asking about uBlock Origin not working in the future on Chrome. If you'd like more information on this, here is an article from ghacks from january, and a statement from gorhill, developer of uBlock.**

There has been discussion of this on Reddit Github and Hacker News.

dpkonofa commented 5 years ago

What differentiates an "ad-blocker" from a "content-blocker" that makes it impossible for this change? Isn't an "ad-blocker" just a "content-blocker" that only blocks a very specific type of content?

Tongzhao9417 commented 5 years ago

thanks for u summation. it's so sad:( i have used it for three years and it's time to say goodbye...

ghost commented 5 years ago

What differentiates an "ad-blocker" from a "content-blocker" that makes it impossible for this change? Isn't an "ad-blocker" just a "content-blocker" that only blocks a very specific type of content?

I must admit the the terminology isn't very clear. A Safari "content-blocker" app sends a list to Safari, and Safari blocks it. A regular blocker (like uBO) blocks content itself. Safari content blockers aren't all bad, they are more secure in that they can't possibly collect your browsing history (not that uBO does), but lack the level of customisation and power that a regular blocker like uBO can provide.

nheeren commented 5 years ago

Thanks! You should pin this issue.

ghost commented 5 years ago

Thanks! You should pin this issue.

only @el1t can do that

Rjevski commented 5 years ago

Just FIY I would not recommend buying 1Blocker. I paid both for the initial version and the "1Blocker X" one on IOS but I had the constant feeling the filter lists weren't being updated and I wasn't sure of their origin (I'm assuming they use EasyList for the ads, but which one do they use for privacy & annoyances?).

AdGuard for Safari is free, open-source and is compatible with uBlock-style filter lists (it has code that does its best to convert them to Safari content blocking lists). You can choose to use EasyList, EasyPrivacy, Fanboy's lists or any of the regional lists so I would recommend it over 1Blocker.

ameshkov commented 5 years ago

Adguard for Safari, the most effective, but contains electron (chromium). I'm not entirely sure how it works, but it will cost performance and battery life on your computer so I would avoid it.

  1. Electron is used for the UI part of it only. All other parts are native.
  2. Running the electron part in the background is not necessary. Although, it is recommended so that AG could update filters automatically.
  3. The linked issue was resolved in the latest release

I'm not entirely sure how it works

You can take a look - https://github.com/AdguardTeam/AdGuardForSafari

ghost commented 5 years ago

Adguard for Safari, the most effective, but contains electron (chromium). I'm not entirely sure how it works, but it will cost performance and battery life on your computer so I would avoid it.

1. Electron is used for the UI part of it only. All other parts are native.

2. Running the electron part in the background is not necessary. Although, it is recommended so that AG could update filters automatically.

3. The linked issue was [resolved](https://github.com/AdguardTeam/AdGuardForSafari/issues/210) in the latest release

I'm not entirely sure how it works

You can take a look - https://github.com/AdguardTeam/AdGuardForSafari

Thank you for responding. Ive updated the post and corrected my errors.

Based on point 2, for filters to update, the electron part needs to be running. Does leaving this running for filters to update have any serious power or performance issues?

ghost commented 5 years ago

Just FIY I would not recommend buying 1Blocker. I paid both for the initial version and the "1Blocker X" one on IOS but I had the constant feeling the filter lists weren't being updated and I wasn't sure of their origin (I'm assuming they use EasyList for the ads, but which one do they use for privacy & annoyances?).

AdGuard for Safari is free, open-source and is compatible with uBlock-style filter lists (it has code that does its best to convert them to Safari content blocking lists). You can choose to use EasyList, EasyPrivacy, Fanboy's lists or any of the regional lists so I would recommend it over 1Blocker.

thats odd, when I wrote this post, everything I could find had it as the best or one of the best. This guy tested them quite thoroughly from 2015 to 2018, and found 1Blocker to stand out. Looking at it again now, it seems that 1Blocker requires an app update to update their lists (entirely based on the changelog), which would explain the slow rate of updates. Tommorow I will investigate further and update my list once again.

ameshkov commented 5 years ago

Based on point 2, for filters to update, the electron part needs to be running. Does leaving this running for filters to update have any serious power or performance issues?

Not really. Here's how it looks on my MBP, and in my case, I am actually actively using it, not just keep it in the background:

There was indeed an issue with the version of Electron we were using previously, but it's now gone.

On the other hand, I share your sentiments about Electron. The UI is generally worse and slower than it could be if we made it native. But it allowed reusing a lot of existing code from the Chrome/FF extensions so here we are.

freediverx commented 5 years ago

AdGuard is SLOOOOOOOOW. Horrible piece of software. Typical of garbage created with Electron.

On Sep 20, 2019, at 7:48 AM, Andre Borie notifications@github.com wrote:

Just FIY I would not recommend buying 1Blocker. I paid both for the initial version and the "1Blocker X" one on IOS but I had the constant feeling the filter lists weren't being updated and I wasn't sure of their origin (I'm assuming they use EasyList for the ads, but which one do they use for privacy & annoyances?).

AdGuard for Safari is free, open-source and is compatible with uBlock-style filter lists (it has code that does its best to convert them to Safari content blocking lists). You can choose to use EasyList, EasyPrivacy, Fanboy's lists or any of the regional lists so I would recommend it over 1Blocker.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/el1t/uBlock-Safari/issues/158?email_source=notifications&email_token=ABG2XK6YVNHD3TOMSJCNLA3QKS2BJA5CNFSM4IUSZ4XKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD7GOCOQ#issuecomment-533520698, or mute the thread https://github.com/notifications/unsubscribe-auth/ABG2XK75SB54BJJIQT2KCTTQKS2BJANCNFSM4IUSZ4XA.

freediverx commented 5 years ago

For anyone claiming AdGuard is “fine”…

When you first click on the AdGuard toolbar button you get this:

Click on the Run button and you have to wait 8 seconds for this monstrosity to load:

Close that eyesore and go back to Safari. Clock on the AdGuard button again and it always takes a full 2 seconds for the following pop-up to appear:

And of course then you have to go through a multi-step process for selecting a screen element on the page, experimenting with the slider, previewing, and then saving your change. Nothing responds to keyboard commands like hitting the Escape button because of course it doesn’t.

On Sep 20, 2019, at 9:37 AM, Walter A freediverx@gmail.com wrote:

AdGuard is SLOOOOOOOOW. Horrible piece of software. Typical of garbage created with Electron.

On Sep 20, 2019, at 7:48 AM, Andre Borie <notifications@github.com mailto:notifications@github.com> wrote:

Just FIY I would not recommend buying 1Blocker. I paid both for the initial version and the "1Blocker X" one on IOS but I had the constant feeling the filter lists weren't being updated and I wasn't sure of their origin (I'm assuming they use EasyList for the ads, but which one do they use for privacy & annoyances?).

AdGuard for Safari is free, open-source and is compatible with uBlock-style filter lists (it has code that does its best to convert them to Safari content blocking lists). You can choose to use EasyList, EasyPrivacy, Fanboy's lists or any of the regional lists so I would recommend it over 1Blocker.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/el1t/uBlock-Safari/issues/158?email_source=notifications&email_token=ABG2XK6YVNHD3TOMSJCNLA3QKS2BJA5CNFSM4IUSZ4XKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD7GOCOQ#issuecomment-533520698, or mute the thread https://github.com/notifications/unsubscribe-auth/ABG2XK75SB54BJJIQT2KCTTQKS2BJANCNFSM4IUSZ4XA.

benjamingr commented 5 years ago

What about building uBlockOrigin as either a proxy with a root certificate or using applescript and making it a Mac app?

vassudanagunta commented 5 years ago

Further options are being discussed in uBlockOrigin/uBlock-issues#145.

vassudanagunta commented 5 years ago

@p4t44, you may want to link to the HackerNews discussion of the whys and pros and cons of Apple's change to Safari: https://news.ycombinator.com/item?id=21025252

ghost commented 5 years ago

Based on point 2, for filters to update, the electron part needs to be running. Does leaving this running for filters to update have any serious power or performance issues?

Not really. Here's how it looks on my MBP, and in my case, I am actually actively using it, not just keep it in the background:

There was indeed an issue with the version of Electron we were using previously, but it's now gone.

On the other hand, I share your sentiments about Electron. The UI is generally worse and slower than it could be if we made it native. But it allowed reusing a lot of existing code from the Chrome/FF extensions so here we are.

As AdGuard's performance is far from settled, I've linked here. If it goes fast for you, use it. If it goes slow for you, don't use and delete it.

xtian commented 5 years ago

Just FYI for anyone reading this thread: AdGuard for Mac requires installing a kernel extension which as far as I know none of the other options do. I didn't feel comfortable with that so I went with one of the other options.

El-Fitz commented 5 years ago

I would also suggest Little Snitch or some free equivalent, using block lists. Since it's a firewall, it won't be impacted by any changes in Safari.

CrazyPython commented 5 years ago

I was using a manually installed build of uBlock Origin on Safari, but Safari crashed twice, and uBlock was dissabled.

kfur commented 5 years ago

@p4t44 @freediverx Do you need nifty macos app or just good ad blocker ? You don't need to run it. Electron app i needed only for rule updates. It can't slow down your safari browser. So i think slowness of this app it's not critical issue. You can run it from time to time just for update rules.

kfur commented 5 years ago

@El-Fitz but functionality of this ad blocker will be limited to blocking hosts when real ad blockers much more powerful and it will diffidently slow down your browser. Better use dnscrypt-proxy with blocklist in this case if you could satisfied by host blockers.

ameshkov commented 5 years ago

@p4t44

As AdGuard's performance is far from settled, I've linked here. If it goes fast for you, use it. If it goes slow for you, don't use and delete it.

Why? It seems settled that the UI is slow as it's Electron-based, and I don't argue with that. It just has nothing to do with ad blocking performance, and there's no one on this thread complaining about that. Also, "slow" does not mean that it consumes additional energy or whatever. It simply takes more time to render when you decide to use it.

cosmarc commented 5 years ago

Just wanted to leave this here: https://thehackernews.com/2019/09/browser-chrome-extension-adblock.html

ghost commented 5 years ago

@p4t44

As AdGuard's performance is far from settled, I've linked here. If it goes fast for you, use it. If it goes slow for you, don't use and delete it.

Why? It seems settled that the UI is slow as it's Electron-based, and I don't argue with that. It just has nothing to do with ad blocking performance, and there's no one on this thread complaining about that. Also, "slow" does not mean that it consumes additional energy or whatever. It simply takes more time to render when you decide to use it.

It used to be that it was slower even without the UI open before a recent update. It is also reccomended that you leave the app open constantly for filters to update (which or may not slow it down). I can link you to a dozen reports of AdGuard going slow, so I think it is unreasonable not to mention it in the list.

Slow means that 1) it takes longer to use, 2) uses excessive CPU and memory to make the rest of your computer go slower and 3) use more battery. I'm really not sure wether it is significantly slower then alternatives, and I don't have the time or will to figure it out. I've linked to this thread so anybody unsure can read the comments of the AdGuard developer and decide for himself.

I think that if you are considering AdGuard, download it. Check activity monitor, if it takes up a lot of CPU or battery, uninstall and get something else. If it doesn't, then don't and use it.

Sangeppato commented 5 years ago

I would just like to mention a couple of advantages that Wipr has over Ka-Block:

Note that with the new Content Block API you don't need to have a white-list option built into the extension, because you can exclude content blocking on specific websites directly from Safari going to Preferences -> Websites -> Content Blockers

ghost commented 5 years ago

I would just like to mention a couple of advantages that Wipr has over Ka-Block:

* Wipr works with YouTube, while Ka-Block doesn't

* Wipr is actually made of 3 extensions in order to be able to overcome the 50k rules limitation imposed by Apple, so it can go up to 150k and block more stuff (Ka-Block can fail to block ads on some websites in my experience)

* I don't know if Ka-Block can do this, but Wipr can automatically update the filter list in background without having the app up and running all the time.

Note that with the new Content Block API you don't need to have a white-list option built into the extension, because you can exclude content blocking on specific websites directly from Safari going to Preferences -> Websites -> Content Blockers

Updated the post.

tcelestino commented 5 years ago

If I've known about this, I wouldn't update Safari 😢

El-Fitz commented 5 years ago

@kfur true; it doesn't offer the same level of ad blocking. But how would it slow down the browser? It doesn't run in it, and the requests just fail before even leaving the computer

anywayaura commented 5 years ago

bois ghostery lite is pretty good

kfur commented 5 years ago

@El-Fitz i think LS was developed not for it. I assume that software like dnscrypt-proxy or system host file will work faster.

speckz commented 5 years ago

FYI, you can install Firefox Focus on iOS and use that as a content blocker in Safari. See https://support.mozilla.org/en-US/kb/focus#w_step-one-allow-safari-to-use-content-blockers-you-only-need-to-do-this-once

flinhong commented 5 years ago

I've changed to Firefox now in all my platforms.

And testing the AdGuardHome on a server and then use the DNS filter through Argo tunnel on my Mac for Safari. Seems that this only works as a regular content blocker.

greener2015 commented 5 years ago

I have downloaded MS Edge Chromium base. UBlock Origin works with it.

superlex commented 5 years ago

Hello :)

@p4t44

Safari content blockers aren't all bad, they are more secure in that they can't possibly collect your browsing history (not that uBO does), but lack the level of customisation and power that a regular blocker like uBO can provide.

Yep. Except for AdGuard Icon and AdGuard Advanced Blocking, all AdGuard extensions don't have access to the page, so they are more secure than uBlock Origin, for example. Then, because they use Safari content blocking API, they can block the elements before they're loaded.


I think AdGuard for Safari is the best option if you like uBlock Origin: 1) uBlock0 and AdGuard share almost the same filter lists (EasyList, AdGuard Base, EasyPrivacy, Adguard Tracking Protection, etc..), so you have the same - best - ad blocking quality ;) 2) uBlock0 and AdGuard share almost the same filter syntax, so you can use your user filter list with both of them; 2.1) AdGuard introduced scriptlets, that are almost compatible with uBlock0 js (see compatibility table here); 2.2) Compatibility with uBlock0 filters will be improved in the future (see issue here), so you can use uBlock0 filter lists as custom ones.

In addition:

PS: I don't like electron, but as @ameshkov said:

Running the electron part in the background is not necessary

open it - update filters - close it.

PPS: Thanks @p4t44 for this - explanation of the state of uBlock Origin for Safari - issue ;)

yuzujin99 commented 5 years ago

could ub0 be installed as an app, just like iina do with it's safari extension?

alvarnell commented 5 years ago

I’m sure it could, but as explained in the initial posting here, it would not be able to provide much of the functionality that made it the best available. So it would be a wasted effort.

Sent from my iPad

-Al-

On Sep 21, 2019, at 23:37, sayo melu notifications@github.com wrote:

 could ub0 be installed as an app, just like iina do with it's safari extension?

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or mute the thread.

ghost commented 5 years ago

could ub0 be installed as an app, just like iina do with it's safari extension?

An app could be made with similar functionality to uBlock Origin, but it wouldn't be uBlock Origin, as it would work completley differently.

troymaclure commented 5 years ago

Adguard for MacOS has the most complete list and is not restricted to the 50000 rules like the Safari extension. You can even add custom lists from Filterlist for a more fine tuned list like Facebook ads or Youtube comments and so on. The price of the app is not cheap but it works system wide and as so on all browsers installed.

superlex commented 5 years ago

@stephanepiriou

Adguard for MacOS has the most complete list and is not restricted to the 50000 rules like the Safari extension.

Just to clarify: with AdGuard for Safari the total number of rules that can be used simultaneously is 300.000 (50.000 per group) :)

Btw, as you said, AdGuard for Mac can

  • filter your traffic in all browsers and apps on your Mac
  • have an unlimited number of filter rules
  • provide a better filtering quality (due to the lack of browser API restrictions)

(see details here and here)

isdn commented 5 years ago

FYI, Adguard for Mac, as a system-wide app, installs its own root SSL certificate to the system and does MitM. And it is not open source.

nidlol commented 5 years ago

best option for Safari users? to stay on Safari 12.1.2 😬

ghost commented 5 years ago

best option for Safari users? to stay on Safari 12.1.2 😬

Safari 13 will come with macOS Catalina later this year, so may not be a good permanent solution for most people.

GB-CG commented 5 years ago

Which one from the App Store is the most efficient in terms of CPU/memory/energy?

lx4r commented 5 years ago

I'm curious what the differences between Safari and Firefox Beta/Developer/Nightly are in terms of CPU load and battery consumption. Does anyone have a benchmark on that?

ghost commented 5 years ago

Which one from the App Store is the most efficient in terms of CPU/memory/energy?

Do you need whitelisting or constant filter updating? If not, I think they all should be the same.

ghost commented 5 years ago

I'm curious what the differences between Safari and Firefox Beta/Developer/Nightly are in terms of CPU load and battery consumption. Does anyone have a benchmark on that?

Haven't seen anything comparing to Safari, but here it is comapred to Chrome.

https://bugzilla.mozilla.org/show_bug.cgi?id=1429522#c45

GB-CG commented 5 years ago

Do you need whitelisting or constant filter updating? If not, I think they all should be the same.

I don't mind. If they theoretically perform the same and does its job then fair enough. But still, a comparison of all the apps would be nice to see.

autigers1970 commented 5 years ago

Well my two cents: Adguard is working well for me combined with the built in Safari content blocker. I'd been using Unicorn Blocker but something changed with Safari recently and I couldn't fine tune the rules to block things without breaking other things. Not noticing any added overhead on my 2013 MacBook Pro 13". The only thing I'll say is that when you add a custom filter in Adguard, it does take 2-3 seconds for it to process before letting you add another. So if they could improve that performance, that would be great.

ameshkov commented 5 years ago

@autigers1970 we definitely will improve the overall UI performance in the next update (v1.6). It's just we were more focused on the adblocking quality, but it seems it's time to focus on other things for some time.

nidlol commented 5 years ago

best option for Safari users? to stay on Safari 12.1.2 😬

Safari 13 will come with macOS Catalina later this year, so may not be a good permanent solution for most people.

this is in anyway not a recommendable solution, since there may be severe bugfixes in future releases... was more of a joke...

Safari is dead. I have to accept it.