Files
smartdns/en/docs/config/ad-block.md
2023-08-06 22:00:31 +08:00

114 lines
3.2 KiB
Markdown

---
hide:
- toc
---
# Ad Blocking
SmartDNS can block ads by returning SOA for the corresponding domain name.
Note: If you're using OpenWrt with LuCI, please refer to OpenWrt's domain blocking configuration method.
## Basic Configuration Method
1. Block ads via `address /domain/#` option, for example:
```shell
address /example.com/#
```
In the `address` option:
* `/domain/` uses a suffix matching algorithm that includes its subdomains;
* `#` alone indicates both IPv4 and IPv6 blocking;
* use `#6` to block IPv6 only;
* use `#4` to block IPv4 only;
* use `-` to unblock this domain.
1. Block IPv6 only:
```shell
address /example.com/#6
```
1. If you want to unblock a particular subdomain:
```shell
address /sub.example.com/-
```
1. The prefix wildcard matches the main domain name
```shell
// prefix wild card
*-a.example.com
// only match subdomains
*.example.com
// only match the main domain name
-.example.com
```
Note: * and - are only supported at the beginning of the domain name. Wording in other locations is not supported.
## Usage of Domain Set
For a single domain name blocking, you can conveniently use the address parameter to block it. For more domain names, you can block it through the domain-set, which is more convenient to manage the list of advertising domain names.
Use `domain-set` to configure the collection file, such as:
```shell
domain-set -name ad -file /path/to/adblock.list
address /domain-set:ad/#
```
The format of `adblock.list` is one domain per line, such as:
```shell
a.com
b.com
...
```
## Using Community SmartDNS Ad-Blocking Lists
The community provides regularly updated ad-blocking list files for SmartDNS. You can directly use these ad-blocking list files, and add them to SmartDNS as an option with `conf-file`. Additionally, you can download and update these files periodically, then restart SmartDNS to take effect.
1. Download the configuration file to the `/etc/smartdns` directory:
```shell
wget https://anti-ad.net/anti-ad-for-smartdns.conf -O /etc/smartdns/anti-ad-smartdns.conf
```
1. Modify the `/etc/smartdns/smartdns.conf` file to include the above configuration file:
```shell
conf-file /etc/smartdns/anti-ad-smartdns.conf
```
## Ad Blocking Lists
| Project | Description | Configuration File |
| -- | -- | --
| [anti-AD](https://anti-ad.net/) | Anti Advertising for smartdns | https://anti-ad.net/anti-ad-for-smartdns.conf |
| [adrules](https://adrules.top/) | AdRules SmartDNS List | https://adrules.top/smart-dns.conf |
## Non-SmartDNS List Format
For non-SmartDNS data, simple shell commands can convert it.
### hosts Format
The following command converts the `/path/to/hosts/file` file (replace the path with your actual file) to the format supported by SmartDNS:
```shell
cat /path/to/hosts/file | grep -v "^#" | awk '{print "address /"$2"/#"}' > anti-ad-smartdns.conf
```
### dnsmasq Format
The dnsmasq format is similar to SmartDNS, but not compatible. You can convert it using the following command:
```shell
cat /path/to/dnsmasq/file | grep address | awk -F= '{print "address "$2"#"}' > anti-ad-smartdns.conf
```