広告ブロックをbindで(続き)

広告のドメインの正引きを失敗させることで表示できないようにしているのだけれど、PHPで書いてたのでPythonに書き直した。これをbindでincludeして、nullゾーンに叩き落とす。

#!/usr/bin/env python3

import datetime
import re
import urllib.request as req

now = datetime.datetime.now()
URL = f"https://280blocker.net/files/280blocker_domain_{now.year}{now.month:02}.txt"
CONF_FMT = '''
	zone "{0}" {{
		type master;
		allow-query {{ localnet; }};
		file "null.zone";
		allow-update {{ none; }};
	}};
'''

with req.urlopen(URL) as f:
    lines = f.read().decode('utf-8').splitlines()
    for line in lines:
        trimmed = line.strip()
        if re.match('^([a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9]*\.)+[a-zA-Z]{2,}$', trimmed):
            print(CONF_FMT.format(trimmed))
タイトルとURLをコピーしました