HNHacker News
TopNewBestAskShowJobs

ameshkov

2,363 karma · joined October 15, 2017

https://twitter.com/ay_meshkov
submissionscomments
ameshkov··on AdGuard Home: Network-wide ads and trackers blocking DNS server
Actually, AdGuard Home checks for updates periodically (unless it’s docker or snap) and can update itself right from the admin panel.
ameshkov··on Ad blocking is under attack (2017)
I only talked with the layer of the defending side. They say that this is a nonsense, but with such a complex matter you can never be absolutely sure.
ameshkov··on Ad blocking is under attack (2017)
iOS? Do you have "advanced protection" enabled? Since some time ago standard content blocking rules are not enough and we need a WebExtension to be allowed to run on YT to block ads there.

Oh and one more thing: there's an option to "share" video from the YT app or YT webpage to AdGuard. This is probably the only possible way to get rid of ads when you're using the YouTube app.

ameshkov··on Ad blocking is under attack (2017)
This is my article from 2017.

Here's a short update on what happened since then:

1. DMCA takedowns did not destroy ad blocking (thank god), but there were a couple more times when it was tried, nothing huge though.

2. Streisand effect is a thing and the domain in question was blocked by everyone and everywhere. There was even a special filter list and later a browser extension which only purpose was to block such domains. It got some traction but later got abandoned: https://github.com/paulgb/BarbBlock. If something like that happens again I am pretty sure it can be revived very quickly.

3. The corporations still try different angles to prohibit ad blocking. The last example I know about is something like this: Axel Springer claimed that the web page and all its content (including subrequest) and ads is subject to copyright law. So when you modify the web page with adding new styles or blocking a web request you violate the copyright.

ameshkov··on EasyList is in trouble and so are many ad blockers
Oh no, that were numbers for a month, not a day
ameshkov··on EasyList is in trouble and so are many ad blockers
Thank you! I've passed that to EasyList maintainers.
ameshkov··on EasyList is in trouble and so are many ad blockers
In this particular case this is not the case and they don't retry. They just really want to download updates REALLY often.
ameshkov··on EasyList is in trouble and so are many ad blockers
You're missing three orders of magnitude.
ameshkov··on EasyList is in trouble and so are many ad blockers
Author here. Actually, it's getting better, I've just looked up the stats and for the last 30 days we only served 70TB of access denied pages, this is about 33-34B requests.
ameshkov··on AdGuard publishes the first ad blocker built on Manifest V3
This question was discussed so many times in W3C group.

Mostly this boils down to one thing: there needs to be an alternative to service workers and there are tons of legitimate use cases for long-living background pages or workers. I think by this point everyone agrees on that, the question is when this alternative will be made available to developers. It’s only 3 months until the deadline after all.

ameshkov··on AdGuard publishes the first ad blocker built on Manifest V3
The main issue is that their lifetime is limited and they're getting constantly killed. This happens all the time even when the service worker is being actively used.
ameshkov··on AdGuard publishes the first ad blocker built on Manifest V3
DNS-based solutions can't block everything since they're limited to blocking domains. But wait until we bring a content filtering proxy to AdGuard Home, this will be the day when you'll finally get clean pages and you won't need any extension at all for that.
ameshkov··on AdGuard publishes the first ad blocker built on Manifest V3
We did our best with Safari, but believe me, it actually works worse than AdGuard in Chrome and Firefox. Safari with all its limitations is no better than Chrome with MV3.
ameshkov··on AdGuard publishes the first ad blocker built on Manifest V3
It's worse than it was and the reason for that is not the declarativeNetRequest, but replacing background page with a service worker.

You see, now extensions are supposed to do background work in an ephemeral service worker. This service worker lifetime is very short (up to 5 minutes, then it's getting killed forcibly). So it's constantly getting killed and waked back up. Waking up includes doing some initialization which consumes additional cpu cycles.

The situation will improve when Google implements the alternative to service worker (so-called "Offscreen documents"), but no one knows when exactly this will happen.

ameshkov··on AdGuard publishes the first ad blocker built on Manifest V3
As I understand, Edge will also migrate to MV3 completely.

Also, I am not entirely sure other Chromium-based browsers will be able to maintain MV2 compatibility in the long run.

ameshkov··on AdGuard publishes the first ad blocker built on Manifest V3
> The service workers vs. background script issue discussed by AdGuard will affect many or most extensions.

This is so true. It is often overlooked, but the root problem of Manifest V3 is not declarativeNetRequest, but this service worker move.

Firefox and Safari implemented an alternative to them so there's a chance.

Google proposed a different solution (called "Offscreen documents") which is also not too bad, but I doubt they'll implement it by the January deadline.

ameshkov··on AdGuard publishes the first ad blocker built on Manifest V3
No plans were announced so these are purely my speculations but to me it seems logical.

The only piece of reliable information is this: I once asked Google engineer whether they plan to support declarative cosmetic rules (that's what we do ourselves in MV3 and that's why the extension still requires wide permissions) and the answer was that they definitely do plan to do that in the future.

ameshkov··on AdGuard publishes the first ad blocker built on Manifest V3
Let's be fair to Safari devs, you should probably search for all statuses and not just the bugs and feature requests that are still open:

https://bugs.webkit.org/buglist.cgi?bug_status=UNCONFIRMED&b...

ameshkov··on AdGuard publishes the first ad blocker built on Manifest V3
This sort of boycotting will only work when widely supported by both developers and users and this is not the case. Despite all the public outcry and news outlets telling that the end is near, it didn't affect the Chrome's share.

> Without us chrome would likely not be in the position it is today and google could not dictate the terms like they do.

I kind of disagree with this. Google Chrome's current popularity stands on two things:

1. It is a great browser and it does its job very well.

2. Google in the first years was very active with its distribution. And this is not only about the link on their homepage. I remember how 10 years ago every piece of software you were trying to install was bringing Chrome alongside.

Engineers recommending Chrome to their friends and relatives shouldn't be discounted, but I tend to think that it's less important that the two other points above.

ameshkov··on AdGuard publishes the first ad blocker built on Manifest V3
All true, and we (content blockers devs) were saying this all for years, since MV3 was first announced. MV3 brings very little (if any) privacy and security enhancements, this is for the future MV4 when extensions will be dumbed down to sets of declarative rules.

We'll now need to rely on Chrome team for implementing what we need. But they do it painfully slow or not do at all.

Also, where will we get the new ideas if every browser follows that path? Take Safari for example, every little improvement that we requested [1] was inspired by what we already did in other browsers long ago.

Anyways, a working content blocker on MV3 is possible. I even think a casual user won't feel much difference. But there is a big difference under the hood and to feel the consequences we have to wait a few years.

[1]: https://bugs.webkit.org/ (search for those reported by @adguard.com). Just a very small part of what we requested was implemented, content blocking is not a priority I guess, and it won't be a priority for Chrome.

ameshkov··on Apple bans accounts of developers from Belarus
Tbh I thought these sanctions are against govt officials and not the general population.
ameshkov··on Firefox Addons Unable to Update, Undisclosed AMO Issues
Same issue with all our addons. What’s even more frustrating is that unlisted addons are also affected, you cannot even sign an addon since it needs to go through a manual review now.
ameshkov··on Cloudproxy – hide your scrapers IP behind the cloud
It’d be easier to use Cloudflare WARP command line client for the same purpose.

Apple uses Cloudflare for their private relay so there’s a chance that these IPs won’t be blocked.

ameshkov··on YouTube ads in Safari: you see them now, will you see them in the future?
Well, to be fair, not really. Scriptlets will continue to work just okay.

To be completely honest, Manifest V3 technically is not THAT bad and it's capabilities at the current moment are really close to what major ad blockers can do.

There're still some things that bother me:

1. Debugging a content blocker is really inconvenient (not as bad as Safari though) 2. The future. What if its development stalls after it's released? 3. Google's goal (probably, for Manifest V4) is to make content blocking completely declarative, i.e. get rid of any host permissions and content scripts.

ameshkov··on YouTube ads in Safari: you see them now, will you see them in the future?
Running the app is not mandatory and neither is adding buttons to the interface. If you just need content blockers, you can simply enable just them, close the app and forget about it until you feel the need to check filters updates.
ameshkov··on YouTube ads in Safari: you see them now, will you see them in the future?
I do honestly believe they want to make content blockers good. Maybe the problem is that we don't communicate our pains good enough, maybe it's that they don't hear us sometimes, but I think that we have the common goal and this post will help them understand us better.
ameshkov··on YouTube ads in Safari: you see them now, will you see them in the future?
> SFSafariExtensionHandler implements SFSafariExtensionHandling protocol, which has this function

First of all, shame on me for missing this, and thank you for pointing this out.

Unfortunately, this still does not solve the issue in question - we cannot figure out which rule was triggered. But it is definitely better than nothing, at least knowing what's blocked we can try creating something resembling a debugging tool.

> Thankfully, many unblock rules can be merged into the corresponding block rules in the form of "unless-domain" specifier.

Some of them can be handled this way, some of them cannot. Trying to handle all possible issues automatically right on the device is not at all as trivial as simply converting EasyList. And we need to do it that way (real-time, on device) because our goal is not to just convert a few lists, but also to provide maintainers with a tool they can use to develop their lists and test&fix them for Safari.

> Due to their design, content blocker extensions can guarantee privacy, unlike the ones that can run JS code.

Content blockers that can run JS code can guarantee privacy better by doing their work better than the others.

Anyways, let's not go further on this, we won't change each others view on this and we've already stated our positions.

My point was that we want to extend the declarative API, it has nothing to do with running JS.

ameshkov··on YouTube ads in Safari: you see them now, will you see them in the future?
All those browsers have to use Safari (WKWebView) internally so they are close.

There’s an important difference, these browsers can also run additional JS on web pages and partly compensate for missing content blocking capabilities. This could help to an extent, but I am not sure if the said browsers do that.

ameshkov··on YouTube ads in Safari: you see them now, will you see them in the future?
Well, I have the same exact experience and frankly, it is not what I intend to repeat again.

At least developers can do that. But most of the people who maintain filter lists are not developers and cannot afford enjoying compiling WebKit for the sake of finding what exact rule has blocked this or hidden that.

ameshkov··on YouTube ads in Safari: you see them now, will you see them in the future?
As someone who contributed to the post we're discussing, let me please respond.

> There’s SFSafariExtensionHandler API which you can use with blockers as another extension with higher privileges to track who blocked what.

I am not sure what you mean here. This API (available only on macOS) does allow injecting scripts and stylesheets, it does not provide any feasible debugging tools. Granted, you may inject a script that will get some information about what's blocked, but it's far from what's required.

Just compare what Safari provides with AdGuard's filtering log on any other platform or with uBlock Origin's log. The lack of such tool is the main reason filters maintainers avoid dealing with Safari.

> Compiling speed, for the process that happens once the blocker rules json is changed, is irrelevant for the users

Compiling speed is the reason for the rules limitation.

> There's also some rules that don’t match 1 to 1, but it isn’t something that can’t be solved.

Unfortunately, there is something that cannot be solved, and YT is a great example of that something.

> The number of rules limit is a non-issue

I have to disagree here.

We're not dealing with EasyList alone, there're many other lists (regional lists for instance). You may say - okay, let's split them all to different content blockers. There's a serious problem with that, though. Different content blockers are completely independent. However, that's not how those lists are being developed - there're lists that are supposed to influence each other.

Let's take the simple example - unblocking something. For instance, here is the most obvious example that happens all the time. There may be a regional list that unblocks something blocked by EasyList (or EasyPrivacy) because this "something" breaks an important website in that region. Putting EasyList into one content blocker and the regional list into another breaks the regional list.

> And the most important thing. It seems that AdGuard guys don’t get why content blockers in Safari don’t run scripts. It’s privacy. But Safari itself doesn’t prevent you from doing that, only not as a part of content blocker extension that is privacy-safe.

We accept that argument despite me being literally sick of hearing it (so there's privacy on iOS, but no privacy on macOS since scripts are allowed to extensions there, okaay).

What's important is that we do not propose allowing running arbitrary scripts. We propose extending the declarative API in a controlled manner and it does not conflict with Safari vision.

Also, that's just one of the feature requests (and bug reports) reported over the years.

edit: typos

← PreviousPage 3 of 6Next →