Hacker News new | past | comments | ask | show | jobs | submit login
YouTube ads in Safari: you see them now, will you see them in the future? (adguard.com)
212 points by taxyovio on May 19, 2021 | hide | past | favorite | 269 comments



Despite the title being about YouTube, this is fundamentally about Safari's declarative Content Blocker API being totally inadequate in the face of modern ad delivery technologies. Yes, it's fast and relatively more secure compared to old ad blocking techniques (which requires granting full access to effectively arbitrary JS), but ad tech has evolved since 2015 and Safari's Content Blocking API has not evolved with it.

With other browsers showing varying degrees of interest in declarative content blocking, it's worth looking at Safari as a warning of what declarative content blocking, if unmaintained, will do to cripple ad blocking for users.


This is basically the exact fear which was being expressed by users when Google announced that they would require Chrome extensions to only use declarative content blocking starting with Manifest v3 (which anecdotally convinced me to switch to Firefox).


If we go down that road, however, sites can make ads completely indistinguishable from desired content. Same domain, same stream, no easily marked container. All of the imperative adblocking tech in the world, short of queuing everything through a neural engine post render, can block what is possible.

So there has always been a detente between adblockers and publishers, presuming the former hit a small enough set of users that it was just ignored. It seems that is no longer the case.


That would require delivering ads from first-party servers, right? So third-party ad and tracking networks would die a painful death.


More likely, they'd get upgraded to "first-party" tracking by acting as a CDN-layer where the ad networks do the proxying/caching to get the actual content upstream before merging it with the ads and serving whole thing in a single request. How would you block ads from Cloudflare if it became an ad network?


The same way you do now with ublock origin. By removing specific elements which match a rule.

The networks will still be able to track you, but ads will be blockable until pages discard the DOM and switch to canvas rendering the whole page


Then you serve the ads on the same set of elements that also contain critical content to the user. You can't block ads from Twitch / YouTube with a rule if the ads are baked into the stream itself. Same goes for any other kind of "element" that doesn't explicitly set itself apart from the actual content.

The ads have long ago started evolving away from a simple "here's an ad neatly placed into its own semantic container so that blockers can target it".


> You can't block ads from Twitch / YouTube with a rule if the ads are baked into the stream itself

you probably wont ever read this, but you actually can.

the pre/post video ads have always been blockable with ublock origin, and the mid-stream adverts, inserted by the content creators themselves can be skipped using SponsorBlock.


Couldn't they just be proxied through a first party server?


Some trackers are having people setup CNAME records on their domains, so the tracker cookies appear to be first party:

https://arxiv.org/abs/2102.09301


uBlock Origin already performs CNAME decloaking and blocks this approach, it’s pretty cool.


For anyone else who wanted to know more like me, here's a good rundown: https://www.reddit.com/r/uBlockOrigin/comments/f8qnpc/ublock...

Note that CNAME uncloaking only works on Firefox; chromium-based browsers do not support the required API.


And for me this is one of the reasons - probably the biggest - that I don't want to buy an ipad. Because it doesn't allow to run the full blown firefox

I've spent hours debating moving to ipad instead of android tablet and it ends to 1. lightning instead of usb-c (can't afford the ipad pro) but ok I can live with it and 2. firefox which is just a blocker


> uBlock Origin already performs CNAME decloaking and blocks this approach, it’s pretty cool.

... which in return is a static list of domains which needs to be regularly updated, and therefore is not really failsafe. uBlock0 uses Adguard's scraped dataset [1] as a fallback source to do this, as Chrome Extensions cannot make DNS requests without a DNS-via-HTTPS endpoint.

Firefox, however, has provided the `dns` API [2] to do requests via the native OS resolver (which in return is also not failsafe due to being unencrypted plain-old-manipulateable DNS UDP requests)

[1] https://github.com/AdguardTeam/cname-trackers

[2] https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/Web...


uBlock Origin on Firefox is able to perform CNAME uncloaking to block this shenanigan.


TBH that is the future. tracking won't die will just evolve to become harder to block.


That would partially defeat the purpose. First party adds see first party cookies, so they have no inherent cross site tracking ability.


And yet facebook is already do something along the same lines by adding fbcid=<trackingnumber> to every outbound link and then the site that receives the link can report back "I saw fbcid=<trackingnumber>". Sure it makes 3rd party tracking require more trust but wouldn't some analysis tell you if your client is trying to game your ads for revenue etc...?


Cross-site tracking via cookies (and 3rd-party cookies in general) has already been dead for years.


That would be more effort than including a single html-script tag to import google analytics. I have hope that most parties would decide that the extra server load and difficulties would make it not worth it.


You underestimate the desire for precision tracking, unfortunately. Hiding behind custom subdomains is common. Stepping up to cloaking it to be delivered from the application is more effort but it'll happen.


You overestimate the technical ability of publishers. Frankly, it’s pathetic to rely on a third party’s hot linked JavaScript, but no one can be arsed to understand how it works, so they just add the tags to GTM instead of realizing that they could trivially implement A/B testing or whatever themselves.


if you as the ad network don't connect to the end user directly: how can you be sure you're not being defrauded by the site owner?


still more effort than before. twiddling with server configs requires more work than inserting a js snippit.


I wonder if Google’s Web Packaging standard was intended to eventually make it possible to deliver both the page and the ads from the same server without enabling one party to tamper with the other.


While this is an obvious route you could take, this is a significant jump from the current behaviour where the content has to be signed by the owner of the domain that packaged it and is treated as if it was served by that domain (on a given scheme/port), and the same-origin policy applies like normal, and thus the ads would continue to be treated as third-party.

It _does_ potentially allow performance gains, insofar as you're then able to send a single bundle containing both first and third party content, but it isn't a gain from the point-of-view of avoiding adblockers (aside from the most primitive DNS/IP level ones).


...That's what YouTube does. Ad video content comes from redirector.gvt.com -> xxx.googlevideo.com just like solicited video content.

(Yes, I classify advertising as spam.)


But somehow it’s still blockable. I don’t see any ads in YT on Firefox + Ublock.


You can also reverse proxy it through your server. I did that once for Google analytics on a demo site.


> If we go down that road, however, sites can make ads completely indistinguishable from desired content.

This is exactly the reason why I'm building a web browser with a statistical representation of both the DOM/CSS Layout _and_ the network traffic, so that neural networks can be trained on classifying ads and malicious actors.

There's a lot of requirements in regards of networking for such a peer-to-peer system to work, like a consensus on DNS/CNAME/PTR or consensus on TLS cert validity.

But I honestly believe that this is inavoidable in the near future, given that most Browsers these days are just a Chrome/Chromium shim where obviously Google's business model conflicts with the idea of blocking ads.


I think by law, ads have to be declared as such for users.


That works in theory but fails in practice. Most ads will just have an "Opinion" tag stapled on them.


Blocking YouTube ads requires injecting JS, it had nothing to do with Manifest.


A major justification for removing the previous content blocking API was that it could be used to do things like inject JS. So clearly the intention is to have content blocking extensions not do that at all. Although in this specific case, it might still be possible.

AdGuard and uBO for example use the content blocking API to inject blocking "scriptlets" on sites where this kind of thing is required. That kind of usage is made much more inconvenient with Manifest v3.


I don't think so. Injecting JS is a valid use-case and will work forever, probably a huge majority of extensions do that. An intention is to make content blocking extensions more performant.

It's very easy to inject JS. I don't know whether you're talking from your own experience, but I wrote my little extension to replace uBlock (with my own list of rules and blocks) and to inject JS or CSS you just have to add a line in manifest.json which have nothing to do with blocking API.


See here where Justin Schuh says the sole motivation is for privacy reasons: https://twitter.com/justinschuh/status/1134092257190064128

I know it is easy to inject JS and that you can do it with the manifest file. But without the old content blocking API you can't dynamically inject different snippets on different pages based on filter lists for example (unless you inject something on every page).

I wouldn't be surprised if in the future, content blocking extensions won't be allowed in the store if they use such broad permissions for example.


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.


I use Wipr as a content blocker on both macOS and iOS. I never see ads on YouTube. But I've always felt that it might not be enough some day. Perhaps that day is nearly here.


This is a recent change by YouTube. Wipr uses the same content blocking API as Adguard and has the same limitations:

https://giorgiocalderolla.com/wipr-faq.html#youtube


I use Wipr, I’m in Australia and on Catalina. Now see Ads on YouTube, even when I update. Now I understand why.


Interesting. I tried Wipr on macOS Safari for a couple weeks about a year ago, and there was effectively no ad blocking on YouTube, Twitch, or Twitter, which is coincidentally where I spend the bulk of my time.

It was a frustrating experience, I've tried Safari multiple times over the years since it is so much better on battery life, but Chrome always wins in usability and adblocking.

I switched back to Chrome + uBlock Origin and could use those sites ad-free again. Well, except for Twitch, since they found a workaround for adblockers last year.


Sounds like you would be interested in Orion. https://browser.kagi.com


I use Wipr and I just saw an ad today for the first time on YouTube in Safari. Usually, it throws up an error and you refresh and the video plays, but today’s it was error, then a skippable ad.


I've been using Wipr. I've been getting the white placeholder screen for just about a year now. Every one in a while I get actual ads getting thru, before a new update fixes it.


In response to this article, I've disabled it in place of using the standalone Adguard app. So far I haven't gotten either symptom.


Note that YT changes aren’t yet rolled out everywhere. Also, if you’re not authorized there’ll be no issues, but it won’t stay like that forever.


I'm not authorized and started getting the new ads about a week ago (with wipr).


Adguard requires an electron app(wut?) to run in the background to provide much of its functionality, is Wipr like this too?


No. Wipr is a clean content blocker. I don’t know how it handles auto-updates of the blocklist, but I definitely don’t need to keep the app open nor does it add buttons to the interface like AdGuard does.


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.


Last I checked, selecting elements to block also required running the Electron app, which is somewhat annoying and unnecessary.


I think you’re right from the short-term perspective but largely irrelevant long-term. If Safari allowed arbitrary code execution, it’d be a little better for as long as it took publishers to deploy first-party ad injection. We’d still get the security problems, though.

You can already see what that’s like with podcasts where local ads are spliced right into the audio file. You’re not stopping that short of doing something like buffering the content and running it through an AI, and if that became widespread we’d just see more embedded placement (“Hey, protagonist, why are you so irresistibly sexy?” “It’s these new briefs from My Undies”).

Adtech is a multi billion dollar industry and the people making the content you want are enthusiastically supporting them. This is not a problem which technical tricks can solve – as soon as you do something effective, Google can deploy hundreds of engineers with huge resource budgets to foil you. That won’t change without something like regulatory changes to lower the financial pressure.


> if that became widespread we’d just see more embedded placement

Which is completely desirable. The problem isn't "ads", it's "targeted, personalized ads that rely on thoroughly destroying the the privacy of everyone on the internet in order to function". If a show/podcast wants to vet its own advertisers and endorse a specific product, that's great; it establishes a concrete relationship with the advertisers that has more value to both users and content creators than the anonymous, unvettable system of opaque middlemen currently peddled by targeted ad networks.


That’s one option but it’s not what’s happening. Historically ads were easily blocked because they came from different domains; as we’re seeing now increased deployment of blockers has lead to things like CNAME cloaking or even first-party hosting. The amount of money at play is enough that they’re going to keep trying more invasive approaches as the old ones become less profitable.

The podcasts I mentioned aren’t running their own ad network, they’re using a service which injects audio segments into your download. I’d expect things like that to become more common as ad revenues decline, with an endgame something like CDNs inserting tailored content directly to avoid any other hostnames or paths which easy to block.


> Historically ads were easily blocked

Historically ads were served by the site owner at their own discretion. Prior to that ads were served by TV and radio channels. None of those approaches were easy to block.

Dedicated ad networks on separate domains are relatively recent fad (since ~15 years ago). A lot websites still ship first-party ads, many have never stopped to.


First party ads are also a part of many content creators (eg. "this video is sponsored by NordShadowraid Wallet"), and currently, the only way to block them is via crowdsourcing (eg. sponsorblock addon).


If I can recognize an ad, I can construct JavaScript that can recognize that ad too. The current extension APIs let me inject that JavaScript, while the declarative ad blocking APIs do not.


This is a constant arms race, as anyone who’s looked at Facebook’s DOM knows, and if you’re successful it pushes to the end state I mentioned of ads becoming very similar to the content. The companies which depend on ad revenue aren’t going to go out of business voluntarily and many of them will find alternative paths to those ad dollars.


> where local ads are spliced right into the audio file. You’re not stopping that short of doing something like buffering the content and running it through an AI

This can be solved by crowdsourcing it: https://sponsor.ajay.app/


Currently, to some extent. Again, my point is that there’s a ton of money at stake and it’s not like companies are going to say “welp, someone blocked our ads, time to close up shop”. Each time blockers have gotten better, all that’s happened has been the ad delivery systems getting more sophisticated — and since the providers can run the same tools I don’t think that’s going to change. Containing some of the damage by, for example, continuing to restrict JavaScript at least has some benefits but things like YouTube ads are the same format and delivery path.


It's cat and mouse game, but currently ad blockers win all battles.


There's some misconceptions being put forth in the article which I, as a developer of a Safari ad blocker, would like to address.

Content blockers are limited by design to ensure privacy and speed, but they may work together with other kinds of Safari extension. So, when AdGuard guys say that the only debugging tool you can use is Console, know that this isn’t true. There’s SFSafariExtensionHandler API which you can use with blockers as another extension with higher privileges to track who blocked what. Very handy in debugging (and informative for the user).

Should I say that converting something like EasyList to Safari content blocker json is trivial? It is. Granted, ABP has more capabilities in its extended syntax, so you won’t be able to convert everything. There's also some rules that don’t match 1 to 1, but it isn’t something that can’t be solved.

Compiling speed, for the process that happens once the blocker rules json is changed, is irrelevant for the users, unlike battery life. Thanks to the compilation, content blockers have less overhead.

The number of rules limit is a non-issue. As explained in the original, EasyList has lot of mergeable rules. I may add that it has some overlapping rules too. And if for whatever reason you hit 50k limit, you can add another content blocker extension to your app.

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.

Speaking of YouTube ads, yeah, it’s a pain point. By blocking resources you can get to the point where an ad will be a white screen or a video loading delay. To get around those you have to get beyond what content blockers are offering. I’m thinking about adding that capability into my blocker, but it isn’t a priority.


>The number of rules limit is a non-issue

The big controversy some time back when Chrome wanted to implement a limit just like this with Manifest v3 says otherwise. This was both from users and adblock developers and it is exactly as bad as people said it would be. Saying it is a good idea because of privacy risks is completely off the rails. Sure you might run a tiny risk but without a proper adblocker like uBlock you do run a risk on every single webpage you open and unlike a good adblokcer you have no idea if you can trust a webpage until after they have already harvested everything they can about you. You cannot uninstall yourself from the thousands of databases you get added to to so it is in a totally other ballpark.


> Sure you might run a tiny risk.

Having a third party monitor and inject code into every page I visit on the internet or intranet means you are trusting the browser extension as much as you are trusting the browser manufacturer themselves.

The popularity of content blocking means the evaluation of lists of hundreds of thousands of rules on every page request becomes a significant source of slower page load speed. It is not surprising that the browser makers would try to add highly optimized, native code to execute these lists.


>Having a third party monitor

If you install an extension that shares your browsing habits then that is on you of course but good ad-blocking extensions doesn't do that and if the data doesn't leave the extension it isn't really monitoring you. I would personally trust the author of uBlock Origin and the in-built uBO made lists over Safari and Chrome any day. Both Apple and Google are running advertisement services so I don't see any reason to ever put any trust in them doing what is best for the user in blocking ads. I wouldn't really trust Mozilla that much either come to think of it.

>hundreds of thousands of rules on every page request becomes a significant source of slower page load speed

This is a myth really. Almost all websites the average user visit have some form of advertisement and/or tracking. Such sites load much faster with any good and modern ad-blocker installed. Besides, it is not like any developer worth his salt would run through hundreds of thousands of URLs looking for a match. The only time it does add any overhead is on a site with nothing to block at all and the amount is tiny compared to the time wasted on all the other sites.


Note that the rules limit has now been increased from 50k to 150k. Sorry if we failed to publicize this sufficiently.



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


> 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.

SFSafariExtensionHandler implements SFSafariExtensionHandling protocol, which has this function:

optional func contentBlocker(withIdentifier contentBlockerIdentifier: String, blockedResourcesWith urls: [URL], on page: SFSafariPage)

So, this is used in statistics extension that prevents me ever looking into the console. Helps to shorten the time it takes to add a new rule and see if it works.

> 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.

I totally agree! This is one of the reasons I don't use those lists as is. Thankfully, many unblock rules can be merged into the corresponding block rules in the form of "unless-domain" specifier.

> 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).

The statement that there's no privacy on macOS is incorrect. The user can see what privileges different extensions require, and can enable only those they are okay with, like content blockers. Due to their design, content blocker extensions can guarantee privacy, unlike the ones that can run JS code.


> 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.


> 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.

Yes, such a tool should exist - but I am not surprised it isn't in the API, since the input list has been compiled down at that point.


You may be amused to know that I debug my content blockers by keeping around a debug build if WebKit with a handful of breakpoints at the right spots to trace them. The experience really does suck…


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.


Honest question: Why not just drop support for Safari? If Apple wants to make it hard to write content blockers, they can do without content blockers, and the users can see ads and eventually switch to a browser that doesn't show them ads.


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.


I see, thank you. Hopefully it's just about not enough extension writer feedback, fingers crossed it'll get addressed!


The browser they switch to is more likely than not to be Chrome, furthering Google's control of the web.


> as a developer of a Safari ad blocker

As a Safari user and someone that wants a better browser blocker I really want to know what ad blocker you develop. May I suggest you add it to your HN profile


Do you have a link for your ad blocker? Thanks!


> but it isn’t a priority.

I would kill for this.


Unpopular opinion: you can subscribe to YouTube Premium to stop ads on YT on all your devices


Popular opinion: Youtube premium is laughably overpriced (in the UK anyway) due to bundling with the totally unrelated youtube music service.

The premium cost of 11.99 GBP per month gets you: * No ads. * Additional music service I don't want. * No additional made-for-youtube video content that I'm aware of. * The app removes one user-hostile non-feature: it no longer refuses to play audio while in the background (iOS). * The app gains no new features, The iOS system wide Picture-in-picture that every other video service supports is still blocked, including from the Safari browser.

Considering that I get the only features I want in desktop Firefox for free, it's incredibly poor value and badly marketed. They could get perhaps 2 GBP a month for no ads, but their other user hostile behaviour on iOS and that price makes it a joke.

The ads are so intrusive, frequent and low quality that I just stopped using youtube on iOS completely. Good job.


I set Insight [0] browser as the default browser on my iPhone and iPad just so that I can click links to YouTube that I get sent without having to watch some of the worst advertising ever produced. I still actually _use_ Safari as my main browser though.

[0] https://insightbrowser.com


I did yet I still get the embedded ads (lots of VPNs,“brilliant“ subscriptions) YouTubers rely on to make a living because while YouTube shares Premium revenues with Creators it doesn’t allow them to enable a version of their Videos without „sponsored content“ for subscribers. And whats more, because the YouTube Algorithm is totally broken with regards to recency bias, if friends send me links to YouTube Videos that are even slightly political, or related to covid, or any more popular category than what I like to watch, then I have to open them in an incognito tab and get all the ads because I don’t want to have my feed filled with that kind of content for weeks. When I use the App it even features it’s own incognito mode but even though I’m logged in the app, when I switch to incognito it shows me ads. So yea ad blocking is the best option as long as it remains feasible.


You might like that: https://sponsor.ajay.app/


Unfortunately, the web gets everyday closer to some kind of "interactive TV". Computations are moving to the server side and clients are merely there to get input and display information. An illustration is the very controversial Mighty browser. As a result, programs will shortly become dependent on having an internet connection. Today, people use more Google Docs than Notepad. This removes a lot of freedom because computing now comes at the price of a subscription (for internet but also for other services be it SaaS, data monetization or server costs for self hosting).


The entire server-first computational model of today is a direct result of the disastrous adoption of NAT, which killed peer to peer applications and from which the P2P market is still recovering from (uPnP was one such [failed] attempt to fix the problem, now WebRTC and its friends STUN/TURN are up next).

Google Docs doesn't have to run on Google servers. It could run on any operating system and work from anywhere provided that you and whoever you want to work with have public IP addresses. But because everyone and everything is behind a corporate or residential router, this avenue is not available unless you are willing to work for it -- and in the case of a corporate network, you literally can't do anything except connect to a third party proxy (or a first party server) in order to be able to talk to your friends' computers. There's also no good way to handle the mobile phone problem, in which your IP address changes every so often as you pass between cell towers.

Ultimately, having each client connect to a centralized server and shuttling data between them server-side ended up being the much better solution instead of the far more attractive option (to users anyways) of connecting to each other directly.


Your p2p Google Docs example is complicated. What if server applications as a paradigm won because it’s a much simpler approach? Centrally develop and release updates, keeping users all on one system. It’s especially important for network connected apps which want to handle user collaboration. You want everyone on one system, without competing versions.

Not saying it’s best for users, but just smarter and more practical from dev perspective.


Generally the way P2P applications dealt with this is by assigning one peer as the "host" that would disperse one single source of truth among all the other peers (granted there are security problems here if the host peer is running a hacked or modded client). If the host dropped, the peers would use a consensus algorithm to pick a new host, exactly the same as how database clusters pick a new writer node if the old one dies.

It may be easier for devs to use the server model, but it's also more expensive - standing up centralized servers that can scale to millions of users is $$$. I think there would be a lot more P2P software competing with server-based software if NAT wasn't a thing, because software companies would be able to build extremely scalable software without having to pay for the hosting costs themselves. While Google Docs has to handle millions of users, if I were to "host" my own document I would only care about handling my friends - maybe two or three or up to a few dozen, but it would be very rare that I would host a document for 1000+ people. Developing an application that can handle a few dozen connections would be much simpler than one that handles millions, I believe.


Only if you want to use google docs’ features and optionally share it with someone later down the line easily. Save that, you can simply send them your .rtf file over email and ask them to make changes then send it back to you once they’ve done that. Did I mention you can’t work on it at the same time?


Removing whatever Ublock Origin needed to exist in Safari is one of the dumbest moves Apple has made.

To get most of the battery advantages of Macs you're forced to use Safari. But when it comes down to having to see YouTube ads I'm willing to make the tradeoff and switch to Chrome.


Firefox + Ublock Origin works fine on macs


Not sure why this is downvoted, it works great for me.


This is one of the main reasons we started working on Orion three years ago.

WebKit + uBlock Origin = bliss

https://browser.kagi.com


Your waitinglist link is giving a server error


Thanks. Looks like form is glitching, reload seems to help. Or email me directly to skip the line as courtesy for reporting


[flagged]


Youtube shows ads on videos for a section of creators without paying them and also puts ads on creator's videos that do not want ads on them.


Yes, recently they have also sent an email regarding this change and other changes in their policy.

Even after all these measures, are they even making any profit yet?


That’s pretty strange for a video platform that is completely free to both users and creators. I wonder why they need to put ads on it.


I'd pay half a cent per video or whatever it works out to be, but I'm not going to pay by letting Google or any other corporations track my every move and action


There is Youtube Premium which is a flat fee: https://www.youtube.com/premium


It's a shame that they bundle it with a music subscription.


A laughably high flat fee. In the UK, 11.99 GBP per month.

For no new video content I want, no new features (they still block picture in picture on iOS app & web).

They bundle the crappy youtube music service which I also don't want.

It's a non-starter & overpriced by a factor of 5x.


It's not high at all, people just vastly undervalue content while spending much more on coffee and drinks without thinking.

There are Youtube originals but you're mainly paying for the delivery of content. Premium comes with a few extra features on mobile too.

Also you can use picture-in-picture on iphones/ipad by using the website. Play a video in fullscreen, tap to view the controls, then tap the PIP icon.


Which does not cut out all the ads on the most popular channels.


yeah, I pay for it for my nephews, since there's no stopping them from using YouTube..


I don't think blocking ads on YouTube prevents Google from being able to track you on YouTube


You have never switched channels during a commercial break?


No, but it's been about 10 years since I've watched linear TV.

That doesn't seem like any better of a user experience though. Sure, you don't see ads, but your show is still interrupted and now you end up missing bits and pieces of whatever you are watching. I don't really see any more value in watching 4 minutes of the middle of a random show than I already see in 4 minutes of ads.

Either way it's pretty rare for me to see ads these days, because I only use services that offer a paid ad-free option.


Part of the problem – as AdGuard concedes in the post – is that Easy List (which AdGuard and many other ad blockers use) is a woefully inefficient rule list with over 50,000 entries. Many of which are out of date, redundant and not optimised for performance.

This leads to excessive memory use and performance slowdowns and is one of the reasons why there is a 50,000 rule limit in the Safari Content Blocking API.

As a developer of an alternate ad blocker[1] for the iPhone, iPad and Mac you can deliver a full featured, quality ad blocker with less than 5,000 core rules. This provides a faster and more efficient ad blocking experience.

As they note however, YouTube ad blocking is a more difficult problem to solve, but can be done cleanly on macOS. At least at the moment it can't be done 100% on iOS without Apple rolling out some additional features to Safari on that platform.

[1] https://www.magiclasso.co/


I've tried using this ad blocker before (I'm sure I saw a mention of it on DF or HN a while ago) but disabled it and went back to AdGuard. It misses too many ads for me and doesn't give me enough control (I like specifying which lists to use or if I want to just block social media widgets vs ads vs analytics/trackers.)


> you can deliver a full featured, quality ad blocker with less than 5,000 core rule.

I guess that depends on how far you stray from the top [x] sites of alexa?


On side note on this topic, I am pretty sure I am being A/B tested on youtube with some form of dynamic ad inclusion.

A friend sent me a youtube link, I opened it on Firefox for Android (with the latest ublock lists), it immediately served me an ad.

This had never happened to me before, I actually assumed I opened it by mistake on Android's youtube app.

The only way I found that I could block it was using the older embedded videos url (www.youtube.com/embed/<video-id>)

Anyone has more info on what are they doing exactly? I found a reddit post with similar complaints but everyone was equally clueless. Seems like they decided to point artillery at ublock.


Might or might not be what you’re describing, but it’s probably inevitable that YT will someday bake ads and mid-rolls into the videos themselves, especially if they have racks of super-fast video encoding hardware to play with[0]. Gotta pay the bills (and shareholders).

0: https://blog.youtube/inside-youtube/new-era-video-infrastruc...


I have Brave on my iPhone for the sole purpose of watching YouTube ad-free. It works flawlessly.


I just switched from Android and I love iOS (iPhone 12 mini). But man do I miss Firefox (the real one, not the Safari skin) and man do I miss f-droid (specifically gems like GadgetBridge). If only I could have those 2 things.


There's Cydia: https://cydia-app.com/

And if you have a Mac, you can build and install apps on your own device with Xcode. No Apple developer paid account required.

AltStore does something similar by signing IPA files with your personal key: https://altstore.io/.


The site you linked to (hxxps://cydia-app.com/) is unofficial, links to piracy and spyware sites, and should not be trusted. The official Cydia site is https://cydia.saurik.com/ but it doesn't include much information about Cydia and jailbreaks. To find out what jailbreaks are available for your device, check the r/Jailbreak wiki. (https://www.reddit.com/r/jailbreak/wiki/ios/canijailbreak)


A better 'how to jailbreak' is https://canijailbreak.com/ which is ran by some well-respected community members https://justapengu.in/about


Thanks, too late to edit. Wasn't obviously a scam when I first looked at it.


As a long time AdAway (with Root) user on on my daily driver, I am struggling with ads after moving to iPhone (12 mini). Most Games (I have tried) are barely playable for ads. And I miss "NewPipe" sooo much :(

I am keeping an old android device around just for using NewPipe.


I also kept my OnePlus3 and flashed it with lineageOS with MicroG. Specifically for NewPipe and GadgetBridge indeed.


Has anyone used iOS browsers with adblocking built in?

How do Firefox and Brave compare to Adguard or 1BlockerX?

Any other browsers out there that do a better job?


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.


Brave on iOS does inject JS into YouTube and other sites. It uses exactly the same `+js(...)` injections as Brave on desktop and Android, as well as uBlock Origin, which is really helpful.

Unfortunately, JS can't solve everything... the WKWebView restrictions are definitely a huge frustration. Brave for Android and desktop both build from a single codebase, but everything has to be reimplemented to work on iOS too.


I’ve been trying Brave this week and unfortunately it performed absolutely uselessly on some busy websites, locking up for *several seconds* every time I open a new tab. It might be a temporary bug, but I moved to DDG as my secondary browser anyway. Safari and DDG handle those same pages effortlessly.


Which sites are causing issues?


I don’t remember which one exactly but Brave lags a lot if you open a video, scroll down, and open another video, in quick succession. It starts locking up for half a second or more once you reach the tenth video on YouTube. This is an iPhone 11 Pro, the whole UI stops being responsive


At some point, YouTube is just going to stich these into the main video.


This already exists on yt in the form of sponsored content in pro youtubers' videos, I use an extension called SponsorBlock that uses crowdsourced reporting to find and skip these portions... this crowdsourced approach will only work well for popular videos but unpopular vids are less often monetizable and thus not ad-ridden anyway


It also won't work for spliced ads that vary in length.


Server-side dynamic ad inclusion is relatively not new tech. I’m surprised they don’t do it already tbh


I would assume Google would prefer to not piss off the millions of adblock using techies (including journalists) if that can be avoided.


Seriously, youtube is absolutely unusable for me with ads, they completely destroy the experience and I'd just do something else if forced to see them.

In the UK, for TV we have limits on the number and total minutes of ads per hour, youtube needs to look at these.


I think Twitch is approaching this? Or at least splicing in a blank feed while the actual ad plays into the non-premium feed, so even if you block the ad, you still see a blank stream until the ad finishes.


Either they allow skipping through the ads or they somehow signal that it’s a different segment.


The battle between ad platforms and users is going to be never ending. For YouTube, the _right_ thing to do is to pay for the premium option which removes ads. Otherwise as difficult as it is to say, you are getting something for nothing and people do make a living from YouTube videos.

Ok, maybe you can contribute to a patreon outside of YouTube, but you’re not going to do that for everyone and those videos are not served for free (even if Google is not short on cash)


Serving videos without ads was how YouTube's monopoly was built. It became an ad platform later. That created an expectation that YouTube was a library in the public interest. Pre-2010 Google marketing had that public interest and internet stewardship angle to it.

Serving content over the web assumes that the content will be downloaded by a browser for rendering. Control over what and how that content gets rendered is controlled by the user. I think this aspect made, and still does make in the present tense, the web what it is. That's why the browser is called a user-agent--an agent that acts on behalf of the user.

YouTube could also move to another protocol, or develop a proprietary one to protect its interests. Otherwise it feels like they want to have their cake and eat it too.


> Serving videos without ads was how YouTube's monopoly was built. It became an ad platform later. That created an expectation that YouTube was a library in the public interest.

That's hard to believe, from my POV. Way before the Viacom lawsuit, and even before it got bought out, YouTube (the startup) was notorious for its sky-high burn-rate: serving video is not cheap. I don't think any reasonable person thought Google spent billions on YouTube without intending to recoup the costs (Google was already serving ads by then).


You're mentioning the end user's learned expectation to get videos for free.

But what about the creator's expectation to get paid for their hard-earned views, to then pay for the gear purchased and the production of the entire video, including team members?

If you're really anti ads, don't take the content for free, find another piece of content that answers your ad-free philosophy.


I'm saying platforms can't have it both ways. If they want to avoid ad-blockers and video downloaders then pick another medium, or invent one and create a new thing that achieves this objective. The web is not TV. Public content on the web is public and user-rendered. That's what made the web and YouTube what it is today.

YouTube has every right to create a proprietary YouTube client (which they do on mobile devices) and prevent browsers from accessing it. Don't serve files to my browser if you don't want me to use them.

Creators, for better or worse, are putting themselves at the mercy of YouTube, as serfs to feudal lords. I'm sympathetic, and happy to pay (and do) for your goods directly, but don't complain to me if your lord mismanages your affairs.

Even TV users had VCRs to save content "offline".


Sure, it is all on YouTube/Google's fault if you decide to install an adblocker and not participate in the compensation of the creator who made the very video you are enjoying.

Definitely not illegal to do so, so do as you please, but don't turn yourself into a white knight by some mental gymnastics with the sementics behind what a user agent is. You want to enjoy the video without ads, regardless of the consequences on the creator who made that video — and accessorily, the service hosting it and streaming it to you!


Most YouTube creators offer side channel donations via Patreon. Prefer paying the value generator than the middle man.


Youtube provides the hosting and audience. That has value.


Maybe they should charge the uploader then


Why would they when ads pay for it? Why would you not pay for premium if you don't want ads since you're consuming the video?


Well, a different middleman.


> If you're really anti ads, don't take the content for free, find another piece of content that answers your ad-free philosophy.

Google is in the process of breaking this deal themselves - they're now adding ads to videos which users did not opt to monetize, and they're keeping 100% of the revenue. Taking the content for free, if you will.


They, at least, offer a free hosting service. Not ideal to monetize on the back of the creator's work, but it's not comparable with friendly piracy rationalised through semantics behind what User Agent means (as per parent comment).


Not free anymore - they're now adware that's monetizing your viewers after unilaterally changing terms and cutting you out of the deal. It arguably puts them on equal footing with people who unilaterally change the terms of the site usage deal and block their ads.

Remember, forcing you to watch ads means it's not free - it's you trading irreplaceable moments of your life for something. Unless your time is worth absolutely nothing, ads are extremely expensive to you.


Why are you constantly ignoring the fact that they also keep paying for all the bandwidth, encoder CPU use and development of playback platforms for any device brand capable of showing a video out there?

Try running a hosting platform yourself and you'll quickly see just how crazy expensive bandwidth is. It's just ridiculous to expect that someone will 100% subsidize your video bandwidth for free.


Was YouTube losing money before they made this change? Their monetized content more than covered the bills for the content that wasn't monetized, and that free content their users gave them kept viewers on the site and watching ads. YouTube wasn't running a charity before they made this change, that free content they were given was valuable. They're just hoping that if they squeeze the golden goose harder it will lay more eggs.


They're a for-profit business, so again, why do you expect your content to be hosted at a complete loss while you monetize on external channels? Seems a bit entitled to expect corporations to give you things for free because other people pay for it.


> They're a for-profit business, so again, why do you expect your content to be hosted at a complete loss while you monetize on external channels?

This is begging the question that hosting non-monetized content is actually a net loss for YT. I'm saying it's actually not, instead the aggregate volume of free content keeps viewers on the site longer, and the higher viewership numbers result in a significant net profit.

More likely, YT decided that this arrangement, while profitable, wasn't making enough money for them, and because they must show their investors ever-increasing profit margins they decided to mildly poison their user experience in exchange for higher profits.


YouTube only had 100 million users in 2009[0] - not an insignificant amount, but even after introducing ads in the same year[1], they've gained 2 billion+ users.

0: https://www.comscore.com/Insights/Press-Releases/2009/3/YouT...

1: https://www.theatlantic.com/technology/archive/2011/08/infog....


I think even with YouTube taking a large cut, people should really consider Premium if they use it a lot. It means that there will actually be something to back up the claim people make that they would pay to not have sites serve them ads.

Also Premium views are worth more to content creators than ad supported views, so it does help the people you love to watch. Not as much as through something like Patreon obviously, but it's a bit unreasonable to support every creator that way.


One of the reasons I justify spending money on Premium is that it supports the creators. I get a bunch of people who think it's silly I pay for Premium, but I really hate watching ads so for me that alone makes it worthwhile.

One channel I really like I have the youtube membership and pateron subscriptions. It's a UK true crime podcast that does every recording with professional camera and audio in a recording studio. Seems like it's expensive to do and I get a lot of entertainment out of them so seems fair to help them out a bit more, especially since most of their videos probably get demonetized.


How do I find out what portion of a subscription goes to a creator?


It's not clear to me what you are asking, but if your question has a definite answer and it relates to Youtube as a business, I can probably help answer. Youtube has been my full-time job for years.

About Premium generally, if you can afford it and you are considering it, there is no reason to hesitate. I say that both as a channel owner and as someone who pays for Premium every month. You never see an AdSense ad again, and you make that happen while still supporting the channels you enjoy. Pretty win-win, IMO.

Two things that most people don't know about Premium:

1. On a per-view basis, Premium views are actually 'worth more' than ad-watching views. We're talking tiny fractions of a cent, but they add up.

2. Most so-called "demonetized" views remain eligible for Premium revenue.


the amount matters to me

if the creators only get 1c/month from my premium and google get the lion's share I'll continue to block ads and support via patreon/merch instead


I doubt there is a set amount assigned. It would be weird and hard to calculate. User A watched 3 videos so their views are worth 1 dollar, user B watched 300 videos so their view is worth a cent. It’s far more likely that a premium user view is worth 1 cent and a normal user is worth .5 of a cent. So the amount going to creators would depend on how much you viewed (and how long)


Agree, in the UK the service is overpriced (exchange rate?) and bundled with Youtube Music subscription service for an extremely unpalatable 1.99 GBP per month.

How much of that money is just paying for music licensing I don't want or need?


Is this a serious comment that 1.99 is overpriced for unlimited content?


The subscription costs me $12/month. If my goal is to support creators, I’d like to understand what portion of that subscription is actually going to the creators, versus Google.

It sounds like the answer to that is “very little” since you mentioned fractions of a cent per view. So if I watch a few dozen videos from a single creator in a month, can I safely assume they’ll get a couple cents that month from me?

I get that it adds up, otherwise the creators wouldn’t bother creating for the platform, but I’m not sure that helps me justify paying Google another $11.96 a month.


Youtube premium in the UK is 11.99 GBP a month, and is bundled with youtube music service.

* I don't want a music subscription service, and I don't want to pay for it. * That price is the same as an actual full video streaming service like Netflix, but I get no new video content for my money. * Premium does remove the user-hostile block on background audio playback on iOS, but does not remove other user-hostile behaviour like blocking the iOS system wide Picture in picture from working.

I am extremely skeptical of the revenue sharing with creators that I like, and would rather give money to them in some direct way than trust google not to give my money to random music artists / their pockets.

The price is a joke, at least 4x what is reasonable. I shall continue using Firefox and uBlock Origin to get 100% of the features I want for free.


But Google is going to use my data for advertising, with or without premium. An adblocker gives me the luxury of not seeing ads while keeping my data private.


I don't think any adblocker could realistically stop Google from tracking what you do on YouTube.


Flushing browsing data regularly should, except of course if you have to login to youtube.


Maybe it's only for the EU, but on adsettings.google.com you cab tell it not to use personalised data for ads.


Google still has the data though.


Unfortunately, I do not trust this setting at all. They still have the data and they will hoard them, and use it for unknown purposes.


I would pay to get rid of ads. The only problem is that I would need to log into YouTube to take advantage of that.

If I log into YouTube, that requires me to be logged into Google everywhere and I do not want that at all. The only solution is to use Firefox containerization or use separate browsers or separate browser profiles for things and I'm not going to do any of those because all of those options are annoying to me.

If my ad blocker stops working on YouTube and/or if they require me to login, I'll simply stop visiting YouTube. There's plenty of other things to do!


I have a separate profile that is set-up for Google (In Brave). You could also use a container tab if using Firefox (Or even a profile, but FF profiles don’t work as well as Brave ones).

You can also see the YouTube creators who have BAT accounts set-up.

I do pay for YT premium family as well as I don’t want other family members to see ads.

Regarding FF profiles - if using more than one at a time, you need to set the others to -no-remote, and then opening links only ever opens up in the main windows. In chromium browsers when opening outside links whatever browser profile that had focus last opens the links).


Google Contributor allowed exactly this, and after setting it up you did not need to be logged in to use it.

It's closed down now due to internal politics.


Agreed. I’m happy to pay for youtube premium but I don’t want to log into google because google will ask for my phone number, and my YouTube activity will be tracked. I only use YouTube logged out.


> If I log into YouTube, that requires me to be logged into Google everywhere and I do not want that at all.

You can use Firefox Containers to sandbox Google logins.

Alternatively, you can use a different browser when accessing Google-owned websites.


If you click on a YouTube link now will the browser know what container to open that in?


Yes, you can configure it in a way that every Youtube link opens in the Youtube container.


I would, but:

1. I feel a 45% cut to YouTube is too big. Compare that to Patreon, which takes 5%. Granted YouTube offers a lot more for their cut, but the difference feels too big, especially given point 2 below.

2. YouTube is extremely untransparent about revenue sharing, so it feels like I'm paying Google, not the creators.

So give me more transparency and take a smaller cut, and I'll be happy to disable my ad blocker and start paying membership.


> I feel a 45% cut to YouTube is too big

YouTube is offering up the tech behind streaming the videos, the storage, the bandwidth, the development work on both the client and server ends, and the ongoing payment processing. As well as the audience install-base. And this isn't a situation where the end users are paying for the software via buying hardware from Google (Pixels being the exception) like it would be with just an app store. YouTube provides far more than anyone else. And they make the money to do so via advertising. You're paying the money in place of YouTube's revenue stream in addition to the money going to the creators.

Patreon is mostly a payment processor and gatekeeper. They don't host videos or provide any of the other services mentioned above. To host videos, the creator pays another provider like Vimeo $84 a year for 5GB/week in uploads to $600 for unlimited video uploads. Live streaming is $900 a year.


While this is all true, it doesn't obviously counter the GP's contention. It's a good argument as to why YouTube's cut isn't the same as Patreon's, but that doesn't mean that 45% isn't to high.


Considering Youtube probably doesn't break even ( Alphabet don't list YouTube expenses separately, only revenues, which is suspicious), and the vast majority of content on YouTube is thoroughly unmarketable and unprofitable ( think vacation videos, school lessons, etc.), maybe, maybe not?


I agree it's not clear.


Patreon has different plans which take anywhere from 5-12%. On top of that they charge payment processing fees and bank transfer fees. In terms of service you are getting nothing but a profile page. A flat 30% fee is considered standard for most online marketplaces.

Considering how much more complex and expensive video hosting is, and everything else YouTube offers, I don't think a 45% cut is unreasonable. In fact YouTube does have direct paid channel memberships (which is a much closer business model to Patreon), and for that they take 30%.


YouTube subscription views are worth far more to the creator (some 10x (I've even heard 100x from some creators) more) than full ad views within the same video.

So, regardless of YouTube's cut, it's much more valuable to the creator, and valuable to you (no embedded ads). Win win, at least until an alternative arises.


I suspect in the big picture this is not true.

The kind of people with disposable income to give for paid subscriptions are far better targets for nearly all adverts, since they are far more likely to buy the premium products that have a far larger and budget, and therefore give the creator more per impression.

I don't think YouTube reveals to creators enough information about which audience members generated which revenue for them to make that connection.


You would be wrong.

A simple google search revealed the following topical article.

https://www.dailydot.com/upstream/totalbiscuit-youtube-red-p...

The relevant quote: “... a Red view is on average worth 20x that of a normal ad view.”

Another youtuber i follow recently said that this is still true today.


But not all ad views are the same... An ad view from someone likely to subscribe to Red might be worth 20x an ad view from someone not likely to subscribe to Red.


Now give me a bit of slack here, because I'm arguing a position I don't necessarily 100% believe in, and I don't pay for youtube red myself. But your argument sounds a bit to me like someone saying "I think this supermarket takes a too big cut on these apples, maybe if they split the price 50-50 with the growers I'd be happy to pay, but as it is I think I'll just take them for free"


While I do agree that I deprive Google of some revenue, not watching ads is not stealing. Otherwise, whole US would be in jail for going to the toilet during Friends commercials. :) Ad blockers simply automate that process for me.

I love supporting creators via Patreon. I hate feeding a giant that will any day turn against both creaters and viewers.

Not sure if I'm rationalising or defending creators.


Your pretending to care about creators but giving them nothing. If you stopped visiting youtube but used other platforms and gave sure.. but it doesn't sound like that is happening.


I'm not pretending. I support my favourite creators via Patreon. Feels more than "nothing". :)


The arguments that blocking ads are somehow unethical or depriving a business providing a hosting service of its cut of ad revenue hold very little weight for me.

If a service wants to ensure viewers pay, it would be easy enough for any organisation with the resources to offer large-scale video hosting in the first place to put the content behind a paywall and earn revenue actively from giving access to that content. That way, access without paying would be more difficult and, in most places, probably illegal.

But these services typically don't do that. Why? Presumably they have made a decision that offering the content openly is in their interests, even if they then have to rely on passive revenue channels such as ads, affiliate/referral payments, or promoting associated brands.

In that case, I don't think they have much right to complain when a lot of people access the content they make freely available in legal ways but without contributing to indirect revenue streams when they have no obligation to do so.


Eh, it's more like the grocery store is firing apples off into public airspace, wrapped in invoices. Many people pay the invoiced amount but some don't.


> 1. I feel a 45% cut to YouTube is too big. Compare that to Patreon, which takes 5%. Granted YouTube offers a lot more for their cut, but the difference feels too big, especially given point 2 below.

You can't be serious with this comparison. Patreon's bandwidth, storage, and processing needs are a rounding error compared to youtube, even after adjusting for the number of users.


> I feel a 45% cut to YouTube is too big. Compare that to Patreon, which takes 5%. Granted YouTube offers a lot more for their cut, but the difference feels too big, especially given point 2 below.

Agreed. If we look at the Bandcamp model, they only take 10% to 15%, and that's still high compared to Patreon.


Bandcamp starts at 15% and goes down to 10% after you cross $5,000 per year in digital sales. Payment processing fees are separate and an additional 4-6% according to Bandcamp. So fees start at 19%-21% and go down to 14%-16% once you exceed $5,000 in sales per 12 month period.


I understand I pirate software. You shouldn't have to justify why you are not paying them anything. You clearly want it for free.

I would rather pay them nothing and complain how much someone else is takin as well.


3. It includes a music subscription that makes it more expensive than Netflix, I find this quite insane considering they’re in the business of hosting user generated content.


Do you hold the same opinion about Apple's app store? Do they have a right to their 30% cut?


YouTube has the right to send or not send the file to my computer. My browser has the right to process the video on my behalf, including not showing it to me if it is an ad.

My right to decide what my purchased computer does trumps YouTube's right to make a few cents by showing me ads.


I watch YouTube on my TV and the ads are annoying enough that I actually looked into subscribing to YouTube Premium to make the ads go away (and better support the content creators I follow). But I'm not ready to pay YouTube $12/month just to make ads go away. I would probably pay $5/month. Netflix's basic plan only costs $9/month.


> I actually looked into subscribing to YouTube Premium to make the ads go away

Please don't; this gives money to (and thus rewards and encourages) advertisers; use something like http://youtube-dl.org/ instead.


YT Premium also includes YT music, and the creators you want to support get extra from Google when Premium users subscribe. For me, it’s worth the price and has almost entirely replaced TV for me (still need my F1 races...)


A totally unrelated service that you have to pay for ( and more expensive than rivals) is not a positive.


I am using https://github.com/yuliskov/SmartTubeNext and it is pretty good.


The price of Youtube Premium is high because it's bundled with a music subscription. That's a shame and is also the reason I don't subscribe.


Me too.

And the fact that even with premium, PiP on iOS is still deliberately broken on web & in their app.


It also enables tracking of what I watch by the company I trust the least in the world with tracking me.


THen the right thing to do is not bundle that premium feature with other youtube music bullshit and inflate the price to 5x what it should be.

And also, stop user-hostile behaviour on iOS to block OS level features (PiP, background audio) from working, even if you pay up.

I would rather block ads and use Firefox exclusively than pay that much for a still-compromised experience.


> For YouTube, the _right_ thing to do is to pay for the premium option which removes ads.

Even if you pay for premium, you'll still get sponsored ads in the content.


Yeah and when you pay for a cinema ticket you still have to see the actors drinking conveniently angled cans of coke


There's a difference between product placement and intrusive ads that interrupt content for minutes at a time. YouTube Premium customers paid to get rid of the latter.


YouTube Premium customers paid to get rid of ads placed by YouTube. A simple solution for channels that embed ads in their videos themselves (or have any other kind of content that you don't like for any reason) is to simply unsubscribe.


Yes but that is like not visiting a site after you found out it uses tracking or like peeing in your pants for warmth. It only work if you never see videos you haven't already subscribed to beforehand.


All of that started because people were ad blocking in the first place. More competition and less eyeballs meant CPMs have been crashing for decades now.

Sure, you can do it (piracy is okay too) but let the creators support themselves somehow.


No ad blocking is going to get rid of that though, until you run something analyzing the actual video/audio content and not just the source of streams or how they're loaded.


There's an extension called SponsorBlock that does exactly that. It uses user-submitted timestamps.


This exists and was posted on HN recently[1]. If an extension developer can detect when sponsored ads play on YouTube, so could Google.

[1] https://news.ycombinator.com/item?id=26886275


SponsorBlock doesn't detect sponsored segments. Users mark the segments and submit them to a database.

If Google did try to automate it, you can be sure that people would just move to integrating the sponsorship into the content. Those are the worst kind of videos and I don't want to encourage more of them.


There are some programs/videos that are only available on premium and do not include sponsored content.


There are? Name some.

I know Cobra Kai started out that way, but has now been solved off to Youtube as they abandoned that model.

They certainly don't mention exclusive content as a region to pay for Premium.


That's on the creator, and no ad blocker will stop sponsored content.


SponsorBlock will. It does require someone to flag the ads first though but so does most ads on adblocker lists.


Google could certainly detect when sponsored ads start in YouTube content and skip them to honor their "no ads" agreement with YouTube Premium customers.

That, or they could pay content creators fairly so that they don't have to shill for NordVPN in every video they release.


I'm not confident any automated system could properly detect a sponsored segment. Some creators are quite sly with how they're worked in.

> pay content creators fairly so that they don't have to shill for NordVPN in every video they release.

I'm with you on that.


> I'm not confident any automated system could properly detect a sponsored segment. Some creators are quite sly with how they're worked in.

SponsorBlock does it, and Google could make it part of their policy for content creators to mark sponsored ad segments in their videos so that they can be skipped.


[deleted]


They didn't say they don't have a premium option. They said that for users buying Premium is the right thing to do if you don't want ads.


For iOS YT users: hit refresh when the ad starts playing. Watch the ad go away. Voila.


If you don't want ads get Youtube Premium.


Ok, I always dismissed the nag screens for this without even looking at them. But your comment made me curious. It's friggin €15,99 per month! I pay less for Netflix + Apple TV combined!


Stop buying subscriptions via things from the App store and many will be 25% cheaper. Still a rip off at 11.99 EUR though as it's 11.99 USD which should be something like 10 EUR not the same number.


Install uBlock Origin instead.


If I'm gonna pay for a service it sure as shit isn't gonna be from a company with no customer support system


They have plenty customer support if you're a paying customer. Pay for Google One [0] for example and you get Customer Support for all Google services.

[0] https://one.google.com/about/support


Have you actually tried Google customer support? I had more success out of staring at a banana for half an hour and waiting for an epiphany than paid GSuite support.


I've used it 4 times, for Stadia, GPay and twice for Fi. Every time I got the help I needed fairly quickly and they resolved my issue.


I've contacted Google's customer support for Stadia recently (by chat) and they were good and reactive.


Google customer support is actually Hacker News. People post their problems here so that hopefully some Google insider will see it and deal with it.


Doesn't work. I get VPN ads from all the bigger Youtubers even after paying the premium fee.


That's very disingenuous of you.


While I use adblockers, I agree with this sentiment.

It's easy to forget that ads pay for YouTube content, they pay for web content. Google gets an overwhelming cut, sadly. Ads fund the creators that make the content. This revenue is not much and is often barely enough to survive.


This one single problem is why I switched to Firefox. Even the FF mobile app does a much better job.


You can't switch to Firefox on iOS. It's Safari,or Safari with Firefox' UI. Apple forbids other web browser engines on iOS.


I realize that, but it doesn’t change the fact that with Firefox I don’t get ads on YouTube, whereas with Safari I do (ipad). FF probably just has additional content blocking features by default. Even when I install other content blockers on my device, safari still shows ads on YouTube.


If you are using Android, be sure to check out Youtube Vanced. It cuts out all the ads very effectively, allows you to set a preferred video quality, and recently it has started blocking even in-video ads and product placement! Truly some next gen ad blocking tech.


Would migrating to the modern Safari extension API, which permits JavaScript injection into pages, be a better path forward here for this website modification tool?


Safari on macOS supports executing custom JS on web pages since forever, regardless of what version of API is used.

It’s not supported on iOS, though.


More accurately, it is not supported automatically. You can do Safari App Actions, but who wants to hit a menu on every navigation?


Ah. Thanks!


It's because of things like this—not to mention the added overhead/middleman—that I think ad blocking at the DNS level is the best way to go. With both Android and iOS supporting encrypted DNS system-wide, blocking at the DNS level is more convenient than ever (mobile & wifi are covered, no need to set DNS for each wifi network, etc.).

I realize of course, though, that DNS level blocking is mostly a non-starter with regards to YouTube since the ads are served up from the same domains as the videos (mostly? generally? not certain here).


I run a Pi-Hole on my local network, and I still see YouTube ads -- they're served from the same CDN as the videos. The way in which YT delivers ads (pre-, mid-, and post-roll videos on the same CDN/domain as the content) seems, on the surface, to thwart any type of static ad detection.


This is more of a rant on Pi-hole than related to Youtube ads but...

Pi-hole can be fine but it isn't effective if you want it to block not only the lowest hanging fruits which a browser adblocker could easily block too but also stuff that doesn't follow the rules and might use hardcoded DNS IPs if they can't get the reply they want from the DNS server. With some Windows PC's, Apple devices, Chromecasts and Androids I quickly saw Pi-hole hang because of tens of thousands of requests if I tried to force all DNS through it. Because I'm a geek I turned to my homelab instead of the RPI4 and ended up with two nginx load balancers with two Pi-holes behind each (yes, 4 Pi-holes). Even though they were now running in virtual machines on a dual Xeon HP Proliant they still died when they got flooded. The hardware could easily take the hammering of requests but the software not so much (often the counter skyrocketed to 40000 requests before it died). Now I just block 100% of DNS requests at the gateway/firewall (OPNsense) instead and oh boy does it catch and log a lot of stuff the Pi-hole didn't. The amount of software that use hardcoded DNS, make example.com requests and try to reach RFC TEST-NET IPs is just staggering.

Sorry about the rant but just in case you didn't know that Pi-hole is only effective against good network citizens like, well, now you know.


Last year, I added firewall rules to my router to block:

* Any outbound DNS and DNS-over-TLS requests coming from anything other than my Pi-Hole * Any outbound HTTPS requests to DNS-over-HTTPS providers that I know of

It's surprising how many hits I got to those block rules. Makes me very worried about the adoption of DoH: all its privacy and anti-tampering advantages also apply to devices that violate privacy, like smartphones and smart TVs. I want to keep those under control.

I'm curious about your setup: how many devices do you have in your network that you need a load-balanced Pi-Hole setup!? My RPi4 has been rock-solid, but it sounds it doesn't have to handle nearly as much load as yours. Makes me wonder if my next hardware purchase should be a small server to host a hypervisor instead of a single RPi.


>Makes me very worried about the adoption of DoH

Yes, this is what made me look closer at what happens at my LAN and got me into this mess. It is a loosing battle but I try to block things like DoH and DNS IPs via blocklists[1]. Pfsense add-on pfBlockerNG does this pretty well. I then strictly only allow DNS over TLS from the DNS server out on WAN.

>how many devices do you have in your network that you need a load-balanced Pi-Hole setup!?

I can see it wasn't very clear in my comment but it wasn't the amount of devices that caused the problem. It only takes one or two misbehaving devices that hammers pi-hole to make it hang. Pi-hole worked wonderfully until I forced all DNS requests to be redirected to it. I then got many many requests a second from some devices (Edit: because they didn't like the NXDOMAIN reply they got). Try refusing access to Google DNS if you have some Cromecasts. As far as I can remember they really don't like this. Any Android phone with only one DNS IP set will also default to Google DNS as a secondary DNS IP...

1: Blocking DNS servers really isn't easy. Not only do some devices use other ports but they aren't all well known. I had requests to 216.239.32.10 for example and had no idea this is yet another Google DNS IP (ns1.google.com?).


would love to know more about this setup... I'm very worried about DoH


Sadly I don't think you can ever win a battle against DoH unless you control all devices on the network and can live without any that try to use it. I would hate to run an enterprise or school network these days!

My home LAN is a total overkill setup because I like tinkering with this stuff. If you want more control then my advice would be to look at enterprise hardware as often used enterprise hardware can be found cheaper than way worse equipment made for home users. Just make sure it doesn't have loud fans or that they can be disabled (which they mostly can outside hot server rooms). I swapped out my switches with some cheap HP 1910-24G managed switches and connected them with fiber. I got 3 of those cheaper than the one crappy Linksys I had before which last had a firmware update months before I bought it! But if I had to recommend a single easy solution I would buy a ready to go OPNsense device. I only know this shop in Sweden though: https://teklager.se/en/products/routers/

Basically what I did after I stopped using pi-hole was to setup pfsense (later switched to OPNsense when I found out that pfsense isn't actually open source) and broke up my LAN (via VLANs, which is where the HP 1910's came into the picture) into three pieces:

-DMZ that is totally open for Playstation etc. No access from or to this to/from anything on LANs

-LAN1 where only whitelisted things have WAN access. This is where all normal traffic is at.

-LAN2 where anything that need access from WAN are connected (this also have its own WAN IP)

Geeky!


Have you tried self hosted adguard? It's very performant and can use any of the lists you can use with pihole: https://github.com/AdguardTeam/AdGuardHome

Switched a few years ago and it's great!


No I haven't tried Adguard but as far as I know it is another DNS server that blocks ads like pi-hole? To block everything there has to be a firewall like OPNsense in the mix and at that point I might as well use it as DNS too.


If, at some point, all we have is hostnames and url lists to block with, the ad folks will figure out how to unblock themselves.


I run my own little ad blocking DNS service and the thing I'm probably most concerned about is websites/publishers/etc. deciding to serve their ad and user tracking assets from their own domains. Though most would probably need—or choose—to use subdomains and be easily blockable all over again.


Same here, I can think of a million ways to circumvent DNS blocking. The good thing is, most sites are not gonna adopt them very quickly. Besides, DNS blocking would have value even if all sites started doing that: there's plenty of malware/phishing domains to be blocked and I don't think those have better alternatives!


Brave on iOS still blocks YouTube ads.


If anyone wants to join my YouTube premium family plan, send me an email! It’s ~$4/mo.


Or become Turkish


Maybe slightly tangential since this is about Safari - but have 𝗬𝗼𝘂𝗧𝘂𝗯𝗲 𝗮𝗱𝘀 𝗿𝗲𝗰𝗲𝗻𝘁𝗹𝘆 𝗿𝗲𝗮𝗽𝗽𝗲𝗮𝗿𝗲𝗱 𝗶𝗻 𝗖𝗵𝗿𝗼𝗺𝗲?

The declarativeWebRequest YouTube adblocker I threw together in half an hour a few months ago recently stopped working on my end too.

Opting out of targeted ads serves you the bottom of the barrel, which was enough motivation to waste a day of JS spelunking (YouTube's changes "conveniently" make declarative blocking nonviable).

Here's what works for me... and here's hoping it still works tomorrow :)

  ▶ manifest.json:
  {
    "name": "ytadblock",
    "description": "(license: CC0)",
    "version": "2.0",
    "manifest_version": 2,
    "declarative_net_request": {
      "rule_resources": [{
        "id": "1", "enabled": true, "path": "ytadblock.json"
      }]
    },
    "permissions": [
      "declarativeNetRequest",
      "*://youtube.com/*",
      "*://www.youtube.com/*"
    ],
    "content_scripts": [
      {
        "matches": ["https://*.youtube.com/*"],
        "js": ["contentscript.js"],
        "run_at": "document_start"
      }
    ],
    "web_accessible_resources": ["inject.js"]
  }

  ▶ ytadblock.json:
  [{
    "id": 1,
    "priority": 1,
    "action": { "type": "block" },
    "condition": {
      "regexFilter": ".*\\.googlevideo\\.com/.*ctier=",
      "resourceTypes": [
        "main_frame", "sub_frame", "script", "image", "xmlhttprequest", "media", "other"
      ]
    }
  }]

  ▶ contentscript.js:
  console.log('hi from contentscript');
  var s = document.createElement('script');
  s.src = chrome.runtime.getURL('inject.js');
  s.onload = function() { this.remove(); }
  document.documentElement.prepend(s);

  ▶ inject.js:
  'use strict';
  (function() {
    var parse = JSON.parse;
    JSON.parse = function(input) {
      var data = parse(input);
      if (typeof data['playerResponse'] !== 'undefined') {
        data.playerResponse.adPlacements = [];
        data.playerResponse.playerAds = [];
      }
      return data;
    }
    var fetch_ = fetch;
    fetch = async function(...args) {
      let response = await fetch_(...args);
      let text = await response.text();
      if (response.url.match(/\/player\?/)) {
        try {
          var json = JSON.parse(text);
          if (typeof json['playerAds'] !== 'undefined') {
            json.adPlacements = [];
            json.playerAds = [];
          }
          text = JSON.stringify(json);
        } catch (e) {}
      }
      return new Response(text, {
        status: response.status,
        statusText: response.statusText,
        headers: response.headers
      });
    };
    var trap = {
      get(target, key) {
        if (key == 'create' || key == 'createAlternate') {
          return function(...args) {
            args[1].args.raw_player_response.adPlacements = [];
            args[1].args.raw_player_response.playerAds = [];
            return target[key](...args);
          }
        } else if (typeof target[key] === 'object' && (key == 'player' || key == 'Application')) {
          return new Proxy(target[key], trap);
        } else {
          return target[key];
        }
      }
    };
    var yt = new Proxy({}, trap);
  })();
Notes:

- Ad video requests can actually be distinguished by the "ctier" parameter in the xxx.googlevideo.com URL. (I presume "c" is related to the "CSI" that seems to be everywhere on Google properties.) The sole declarative block is intended as a fallback in case the JavaScript hooks fail; you'll know if you hit these, because ad videos will spin for 5 seconds before they fail - and there might be MoRe ThAn OnE - and this may drive you very, very crazy. :)

- Initial page loads now contain a JavaScript blob with content and ad video info. After a lot of stumbling around I got the idea to turn the `yt` object into a Proxy and intercept the yt.player.Application.createAlternate() function, which said blob is passed into as an argument.

- YouTube seems to be using a mixture of requests to ".../player?" via Fetch and XHR POSTed requests to ".../watch?.*pbj=1" to fetch next-video-info when you click video links. Hooking XHR proved... depressingly tricky (...wow...), so I got the idea from https://greasyfork.org/en/scripts/32626-disable-youtube-vide... to hook JSON.parse instead (koooool). Hooking Fetch, or at least YouTube's use of Fetch, was thankfully not that hard.

The above is quite brittle, depends on how YouTube works now, and may get caught in the crossfire of unrelated site changes. ¯\_(ツ)_/¯*


Yay; the /player endpoint can also use XHR. Add the following before the 'return' in the JSON.parse intercept:

  if (typeof data['adPlacements'] !== 'undefined') {   
    data.adPlacements = [];
    data.playerAds = [];
  }


I just fast forward them lol




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: