this post was submitted on 14 Oct 2023
782 points (98.8% liked)
Piracy: ꜱᴀɪʟ ᴛʜᴇ ʜɪɢʜ ꜱᴇᴀꜱ
54609 readers
475 users here now
⚓ Dedicated to the discussion of digital piracy, including ethical problems and legal advancements.
Rules • Full Version
1. Posts must be related to the discussion of digital piracy
2. Don't request invites, trade, sell, or self-promote
3. Don't request or link to specific pirated titles, including DMs
4. Don't submit low-quality posts, be entitled, or harass others
Loot, Pillage, & Plunder
📜 c/Piracy Wiki (Community Edition):
💰 Please help cover server costs.
Ko-fi | Liberapay |
founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
They're going to randomize all vars and function names, mark my words.
Yup. Ad blockers work on pattern matching rules. Countering them might take some work but it's not impossible - make the URLs that do the bad shit indistinguishable from the ones that make the video works and likewise html elements. Randomise everything, make the paths to things unpredictable. I'm sure YouTube could even merge the ads into the content stream so they are unavoidable.
"I'm sure YouTube could even merge the ads into the content stream so they are unavoidable."
Who is going to tell him?
aren't they already? It's been some time since I worked in video. but I remember HLS manifest had ad insertion built-in.
Last part is already done. Ads are delivered by the same DNS as the video, which is why DNS-based blocking methods like Pihole don't work for YouTube video ads.
If you meant that Google will re-encode every video on their platform and insert ads like the sponsor segments, that's not feasible. Ads ads served on a bidding basis and the advertiser who pays most, gets their ad delivered. That would be Impossible unless you keep multiple copies of the video with different ad segments.
You don't need to re-encode the video. Look up HLS segments, which is the standard for streaming video and I assume YouTube uses it.
Each video is split into many segments, like 10 seconds long (though the duration doesn't matter). The browser first fetches a "playlist" which is just a list of these segments. Then the video player plays each segment in order. So Google could just insert ad-segments into the video stream, and if they did it cleverly, there would be no way to determine that they were ads.
They are legally obligated to show which part of the video is an ad (and contractually obligated to have a clickable link), which always leaves ad blockers a way to correlate and remove those segments though (essentially skipping forward during the ad, then lying to the backend when asking for additional segments as if the user had skipped through the video after the ad was over).
On Twitch they managed to outplay even uBlock, because the streaming is realtime and if you skip the ad segments, there's no data to fall back to and the backend won't send you the regular segments until the ad break is over (from what I understand). So at best you get a waiting screen instead of an ad.
However I'm not sure if it would make (financial) sense to apply a similar strategy on YouTube, as that would require preventing buffering the video until the ads have stopped playing (and wouldn't work at all for midroll ads since the video has already been buffered at that point). Not only would this be expensive to do in the backend, but it would likely cause disproportionate buffering on low-end connections which couldn't start loading the video while the ad is playing.
Yes, you get a "commercial break in progress" banner, but it's not loading ads when watching through HLS.
Ads on Twitch are not nearly as bad as on YouTube tho, so I actually have an exception for Twitch ads. I usually only watch esports tournaments and they make sure there are no ad breaks during games, just between segments. And on the rare occasion that I watch a regular stream, I get an ad or two maybe once every 45 minutes, which is fair.
The ads are really annoying if you streamhop frequently, because almost every time you switch stream you have to wait 30s-1m.
I pay for Turbo now so that's fine, but the way it's implemented seems really stupid to me, if you are looking for a stream to watch you sometimes get ad after ad after ad which can't possibly be good for viewer retention.
Pre-roll ads are stupid, yeah. At least give me some time to figure out if I want to watch the stream... But that a thing that's also worse on YT since they removed dislike count. Is it another clickbaity jump-cut-ridden garbage video or is it actually information? Roll the dice to find out!
If the browser itself could check those fragments though... 🤔
Yeah they are sooner or later going to do something like this. But then we can download videos and use Ai to remove the ads.
Will probably pop up YouTube proxys that does this on request so we don't even have to download.
it will be an interesting cat and mouse game or people will start to shift to another video sharing platform
Of course they are, for example when targeting HTML elements you generally need to target text not vars or function names.
At the end there will always be some way since to the user the text should be similar or the UI should be similar... So there will be always a way... But yeah it can get more complex.
The only exception is the case they implement the web integrity thing at browser level or equivalent.
The point being that if one can find the domain through which they push said script/the script itself, they can disable it (I use NoScript).