Last active
November 28, 2023 18:55
-
-
Save ErikFontanel/4ee1ab393b119690a293ba558976b113 to your computer and use it in GitHub Desktop.
Pi-hole Youtube ad blocking
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
# This script will fetch the Googlevideo ad domains and append them to the Pi-hole block list. | |
# Run this script daily with a cron job (don't forget to chmod +x) | |
# More info here: https://discourse.pi-hole.net/t/how-do-i-block-ads-on-youtube/253/136 | |
# File to store the YT ad domains | |
FILE=/etc/pihole/youtube.hosts | |
# Fetch the list of domains, remove the ip's and save them | |
curl 'https://api.hackertarget.com/hostsearch/?q=googlevideo.com' \ | |
| awk -F, 'NR>1{print $1}' \ | |
| grep -vE "redirector|manifest" > $FILE | |
# Replace r*.sn*.googlevideo.com URLs to r*---sn-*.googlevideo.com | |
# and add those to the list too | |
cat $FILE | sed -r 's/(^r[[:digit:]]+)(\.)(sn)/\1---\3-/' >> $FILE | |
# Scan log file for previously accessed domains | |
grep '^r.*googlevideo\.com' /var/log/pihole*.log \ | |
| awk '{print $8}' \ | |
| grep -vE "redirector|manifest" \ | |
| sort | uniq >> $FILE | |
# Add to Pi-hole adlists if it's not there already | |
if ! grep $FILE < /etc/pihole/adlists.list; then echo "file://$FILE" >> /etc/pihole/adlists.list; fi; |
An alternative may be to add the following regex on the blacklist:
^r.+\.googlevideo.com$
Seems to work for me locally. The ad segments still appear but it's just a spinner for 5 seconds then 'Skip Ads' appear.
rjhancock,
Thanks for the idea, I just tried it cause I didn't understand it. After adding the regex ^r.+.googlevideo.com$
all youtube movies are blocked....not one runs.
How local did you mean?
Yea, I removed it last night as it looks like about half the videos are blocked if not more. Bad idea. So I wonder if there is a different pattern that might work instead.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
i believe this would be a solution.
`
FILE=/etc/pihole/youtube.hosts
curl 'https://api.hackertarget.com/hostsearch/?q=googlevideo.com'
| awk -F, 'NR>1{print $1}'
| grep -vE "redirector|manifest" > $FILE
sed -i $FILE -re 's/(^r[[:digit:]]+)(.)(sn)/\1---\3-/'
grep '^r.googlevideo.com' /var/log/pihole.log
| awk '{print $8}'
| grep -vE "redirector|manifest"
| sort | uniq >> $FILE
bash -c 'cat /etc/pihole/youtube.hosts >> list.1.raw.githubusercontent.com.domains'
pihole -g`