Awesome
Maza ad blocking
๐ฅ Top 1 in Hacker News
Comments: https://news.ycombinator.com/item?id=22717650
<img alt="banner" src="media/banner.png" width="100%">A command to squash all ads in all browsers
sudo maza start
Like Pi-hole but local and using your operating system.
Simple, native and efficient local ad blocker. Bash script compatible with MacOS, Linux, BSD and Windows Subsystem for Linux (WSL).
- Just bash ๐ค.
- It affects any browser or software installed ๐ฑ.
- You don't have to install any browser extensions or applications ๐ซ, you just use the tools of your operating system.
- You update the list of DNS to be blocked with a single command ๐.
- Pure Opensource โค๏ธ.
Index
- Commands
- Install or update
- Check if you block ads
- Auto update of domains to be blocked
- Uninstall
- Not blocking certain domains
- Add custom domains to block
- Alternative DNS list
- DNSMASQ (or support sub-domains: wildcards)
- Donations
- Community or questions
๐ Commands
๐ก Update database
sudo maza update
๐จ Start
sudo maza start
๐ Stop
sudo maza stop
โ๏ธ Status
sudo maza status
โ๏ธ Install or Update
๐ฅ Requirements
- bash 4.0 or higher
- curl
- Only macOS users, gsed:
brew install gnu-sed
Then you do this.
curl -o maza https://raw.githubusercontent.com/tanrax/maza-ad-blocking/master/maza && sudo rm -rf /usr/local/bin/maza && chmod +x maza && sudo mv maza /usr/local/bin
Optional but recommended, make a backup of your hosts file.
sudo cp /etc/hosts /etc/hosts.backup
๐งช Check if you block ads
You can run a test to see if the domains are blocked.
For example, you can run the following command.
curl googleadservices.com
If you get an error like this, it means that the domain is blocked.
curl: (7) Failed to connect to googleadservices.com port 80 after 2 ms: Could not connect to server
But if you get a response with HTML, it means that the domain is not blocked (maybe a 404 error).
๐ค Auto update of domains to be blocked
Open your cron
.
crontab -e
Add the following line at the end.
@daily maza update
Some users have reported problems creating daemons on MacOS. Fixed with TERM=dumb
.
TERM=dumb
@daily maza update
๐ช Uninstall
sudo rm /usr/local/bin/maza && sudo rm -r /root/.config/maza
๐ซ Not blocking certain domains
Edit /root/.config/maza/ignore
and add the domains you want to ignore.
Example:
ads-twitter.com
ads.twitter.com
By default, the following domains are ignored to avoid problems with the operating system.
localhost
localhost.localdomain
local
broadcasthost
ip6-localhost
ip6-loopback
ip6-localnet
ip6-mcastprefix
ip6-allnodes
ip6-allrouters
ip6-allhosts
0.0.0.0
Finally update Maza to apply the changes.
sudo maza update
๐ฏ Add custom domains to block
If you want to include your own domains to be blocked, you can add them to /root/.config/maza/custom-domains
. They must each be on one line, ignoring end slash or protocol (http
or https
).
For example:
beauty-tea.com
www.expaqua.cloud
ad.about.com
Then update the database to regenerate the list to include your domains.
sudo maza update
๐ Alternative DNS list
By default the Yoyo (Peter Lowe) DNS list is used (3.7k blocked domains). If you want to use another list, such as Steven Black's for example (with 135k blocked domains), you must add the URL of your list on line 8.
URL_DNS_LIST_CUSTOM="https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts"
DNSMASQ
Unfortunately the hosts file does not support sub-domains (wildcards), which is necessary to correctly filter all DNS. You will need to install locally a server for that purpose, Maza supports the Dnsmasq format.
MacOS
0 Update Maza
sudo maza update
1 Install
brew install dnsmasq
2 Configure
Edit the file.
/usr/local/etc/dnsmasq.conf
Add the following line at the end.
conf-file=(your user path)/.config/maza/dnsmasq.conf
Example
conf-file=/Users/myuser/.config/maza/dnsmasq.conf
Start DNSMASQ.
sudo brew services stop dnsmasq
sudo brew services start dnsmasq
3 Tell your OS to use your DNS server
Delete the list of macOS DNS servers and add the 3 addresses. The first one will be your local server, and the other 2 belong to OpenDNS, which you can use any other.
127.0.0.1
208.67.222.222
208.67.220.220
<img alt="network macos" src="media/network-osx.jpg" width="500">
Refresh your DNS cache
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
4 Restart/Start Maza
sudo maza stop
sudo maza start
Linux (Debian/Ubuntu)
0 Update Maza
sudo maza update
1 Install
sudo apt update
sudo apt install dnsmasq
2 Configure
Edit file in path.
/etc/dnsmasq.conf
Add the following line at the end.
conf-file=(your user path)/.config/maza/dnsmasq.conf
Example
conf-file=/home/myuser/.config/maza/dnsmasq.conf
Start DNSMASQ.
sudo systemctl stop dnsmasq
sudo systemctl start dnsmasq
sudo systemctl enable dnsmasq
3 Tell your OS to use your DNS server
3.1 Gnome Shell
In Gnome Shell, open Settings->Network
. Click in your connection.
Add your local server (dnsmasq), and the other 2 belong to OpenDNS, which you can use any other.
127.0.0.1,208.67.222.222,208.67.220.220
<img alt="gnome dns" src="media/dns-gnome.png" width="500">
3.2 KDE Plasma
In KDE Plasma, open Settings->Network->Connectios
. Click in your connection and tab ip4
.
Method
: Automatic (Only addresses).
Add your local server (dnsmasq), and the other 2 belong to OpenDNS, which you can use any other.
DNS Servers
:127.0.0.1,208.67.222.222,208.67.220.220
.
4 Restart/Start Maza
sudo maza stop
sudo maza start
Bonus: dnsmasq is in charge of solving all DNS
Add in configure file: /usr/local/etc/dnsmasq.conf
no-resolv
server=208.67.222.222
server=208.67.220.220
Bonus: dnsmasq have localhost
domains
If you want all your .localhost
domains, for example, point to localhost add in configure file: /usr/local/etc/dnsmasq.conf
or /etc/dnsmasq.conf
.
address=/.localhost/127.0.0.1
โ Buy me a coffee
Help me continue to improve.
ssh customer@andros.dev -p 5555
๐ฌ Get Help or talk with the community
๐ CREATE YOUR OWN PI-HOLE SERVER WITH MAZA
You can easily create your own DNS server on a Raspberry Pi, VPS or wherever you want, to connect your devices in just 10 commands thanks to Maza. Follow the tutorial.
โ ๏ธ CAUTION
Remember to make a backup copy of /etc/hosts
in case of unforeseen circumstances, neither the project nor its author will be responsible for any possible repercussions derived from not carrying out this action.
๐งโ๐จ Credits
<a target="_blank" href="https://andros.dev/">Andros Fenollosa</a>