#!/bin/sh # # Mac OSX Adblocker Script for IPv4 # Description: Blocks ads using system hosts file /private/etc/hosts, Ad-Domains would be redirected to 0.0.0.0 # Author: Daniel Hochleitner # Created: 10.09.2015 # Use: sudo ./adblock_hosts.sh # Get original hosts file from /private/etc/hosts # echo '!! Step 1: Get original hosts file' # into current directory if [ -f hosts_org.txt ]; then echo '--> original hosts file already saved in current directory'; else cp /private/etc/hosts hosts_org.txt fi # save into /private/etc/hosts_org if [ -f /private/etc/hosts_org ]; then echo '--> original hosts file already saved in /private/etc/hosts_org'; else sudo cp -p /private/etc/hosts /private/etc/hosts_org echo '--> saved hosts file into /private/etc/hosts_org' fi echo '!! Step 2: Get Adblock hosts files from WWW' rm -fr www_hosts mkdir www_hosts cd www_hosts # Host 1 curl -O https://adaway.org/hosts.txt mv hosts.txt hosts1.txt if [ -f hosts1.txt ]; then echo '--> adaway.org saved'; fi # Host 2 curl -O http://hosts-file.net/.%5Cad_servers.txt mv .%5Cad_servers.txt hosts2.txt if [ -f hosts2.txt ]; then echo '--> hosts-file.net saved'; fi # Host 3 curl -O http://winhelp2002.mvps.org/hosts.txt mv hosts.txt hosts3.txt if [ -f hosts3.txt ]; then echo '--> winhelp2002.mvps.org saved'; fi # Host 4 curl -O "http://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&showintro=0&mimetype=plaintext" mv serverlist.php\?hostformat\=hosts\&showintro\=0\&mimetype\=plaintext hosts4.txt if [ -f hosts4.txt ]; then echo '--> pgl.yoyo.org saved'; fi # Host 5 curl -O http://www.malwaredomainlist.com/hostslist/hosts.txt mv hosts.txt hosts5.txt if [ -f hosts5.txt ]; then echo '--> malwaredomainlist saved'; fi # Host 6 curl -O http://someonewhocares.org/hosts/zero/hosts mv hosts hosts6.txt if [ -f hosts6.txt ]; then echo '--> someonewhocares.org saved'; fi # merge files into new host file # echo '!! Step 3: merge files into new host file' cd .. cat www_hosts/hosts1.txt >> hosts_new_temp.txt cat www_hosts/hosts2.txt >> hosts_new_temp.txt cat www_hosts/hosts3.txt >> hosts_new_temp.txt cat www_hosts/hosts4.txt >> hosts_new_temp.txt cat www_hosts/hosts5.txt >> hosts_new_temp.txt cat www_hosts/hosts6.txt >> hosts_new_temp.txt # Replace special entries sed -i.bak '/localhost/d' hosts_new_temp.txt sed -i.bak '/broadcasthost/d' hosts_new_temp.txt sed -i.bak '/local/d' hosts_new_temp.txt sed -i.bak '/piwik.org/d' hosts_new_temp.txt sed -i.bak '/spclient.wg.spotify.com/d' hosts_new_temp.txt sed -i.bak '/securemetrics.apple.com/d' hosts_new_temp.txt sed -i.bak 's/127.0.0.1/0.0.0.0/' hosts_new_temp.txt # build new hosts file cat hosts_org.txt > hosts_new.txt # special 0.0.0.0 entry echo "# Special Entries" >> hosts_new.txt echo "0.0.0.0 0.0.0.0 # fix for traceroute and netstat" >> hosts_new.txt # adblock hosts entries cat hosts_new_temp.txt >> hosts_new.txt rm -f hosts_new_temp.txt* # write new hosts file into system echo '!! Step 4: write new hosts file into system' echo '--> writing file...' sudo cp hosts_new.txt /private/etc/hosts chmod 644 /private/etc/hosts echo '--> refresh DNS cache...' dscacheutil -flushcache sudo killall -HUP mDNSResponder echo '!! Finished !!'