容器化的无污染DNS服务
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

53 lines
2.1 KiB

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import os
from IPy import IP, IPSet
source = [
'curl -sL https://github.com/misakaio/chnroutes2/raw/master/chnroutes.txt | sed \'/^#/d\'',
'curl -sL https://github.com/metowolf/iplist/raw/master/data/special/china.txt',
'curl -sL https://github.com/17mon/china_ip_list/raw/master/china_ip_list.txt',
'curl -sL https://gaoyifan.github.io/china-operator-ip/cernet.txt',
'curl -sL https://gaoyifan.github.io/china-operator-ip/china.txt',
'curl -sL https://gaoyifan.github.io/china-operator-ip/chinanet.txt',
'curl -sL https://gaoyifan.github.io/china-operator-ip/cmcc.txt',
'curl -sL https://gaoyifan.github.io/china-operator-ip/cstnet.txt',
'curl -sL https://gaoyifan.github.io/china-operator-ip/drpeng.txt',
'curl -sL https://gaoyifan.github.io/china-operator-ip/googlecn.txt',
'curl -sL https://gaoyifan.github.io/china-operator-ip/tietong.txt',
'curl -sL https://gaoyifan.github.io/china-operator-ip/unicom.txt',
'curl -sL https://gaoyifan.github.io/china-operator-ip/cernet6.txt',
'curl -sL https://gaoyifan.github.io/china-operator-ip/china6.txt',
'curl -sL https://gaoyifan.github.io/china-operator-ip/chinanet6.txt',
'curl -sL https://gaoyifan.github.io/china-operator-ip/cmcc6.txt',
'curl -sL https://gaoyifan.github.io/china-operator-ip/cstnet6.txt',
'curl -sL https://gaoyifan.github.io/china-operator-ip/drpeng6.txt',
'curl -sL https://gaoyifan.github.io/china-operator-ip/googlecn6.txt',
'curl -sL https://gaoyifan.github.io/china-operator-ip/tietong6.txt',
'curl -sL https://gaoyifan.github.io/china-operator-ip/unicom6.txt',
]
ips = set()
for script in source:
raw = os.popen(script).read().split('\n')
ips.update(filter(None, raw))
v4 = IPSet()
v6 = IPSet()
for ip in ips:
try:
ipAddr = IP(ip)
(v4 if ipAddr.version() == 4 else v6).add(ipAddr)
except:
pass
ips = []
for ip in v4:
ips.append(str(ip) + ('' if '/' in str(ip) else '/32'))
for ip in v6:
ips.append(str(ip) + ('' if '/' in str(ip) else '/128'))
with open('china-ip.txt', 'w') as fileObj:
fileObj.write('\n'.join(ips) + '\n')