如何自动生成自用的中国域名直连模块
Updated at: 2025-02-19
因为很多列表太陈旧,也太多,很多可能你永远都访问不到。所以此文提供一种方法,可以自动从 Brook 图形客户端的日志或 CLI 的日志里提取中国域名,并增量生成自己的中国域名直连模块。
Windows 用户应在 GitBash 下运行
原理
从海外 IP 向海外 DNS 发起查询知乎的一个域名
brook ipcountry --ip `brook dohclient -s 'https://one.one.one.one/dns-query?address=1.1.1.1:443' -d pic1.zhimg.com --short`
结果是 US
从国内 IP 向阿里 DNS 发起查询知乎的一个域名
brook ipcountry --ip `brook dohclient -s 'https://dns.alidns.com/dns-query?address=223.5.5.5:443' -d pic1.zhimg.com --short`
结果是 CN
从海外 IP 向阿里 DNS 发起查询知乎的一个域名
brook ipcountry --ip `brook dohclient -s 'https://dns.alidns.com/dns-query?address=223.5.5.5:443' -d pic1.zhimg.com --short`
结果是 US
从国内 IP 向阿里 DNS 发起查询 Google 的一个域名
brook dohclient -s 'https://dns.alidns.com/dns-query?address=223.5.5.5:443' -d www.google.com --short
结果 108.160.166.57,显然是个被污染的 IP,但这是个 US 的 IP
方案
nami install brook 7z bun bun.plus
bunu https://bash.ooo/china.js
从自己的客户端或服务端日志里准备数据
根据上面所言,我们就有两种方案来判断一个域名是不是大陆域名:
A: 从海外 IP 向海外 DNS 发起查询, 比如开启 GUI 的情况下或在服务器端运行, 缺点是如果域名同时有国内和海外 IP 则会被认为是海外域名B: 从国内 IP 向阿里 DNS 发起查询, 比如在本地运行, 开启 GUI 情况下也没事,GUI 默认 bypass 了阿里 DNS, 缺点是如果返回的污染 IP 是国内的 IP 就会错乱,历史经验不会, 但无保证包。还有一个缺点是 Google 有一些域名有国内的 IP
比如: 从客户端的日志里准备数据,并采用方案 A,在本地开启 GUI 后运行
bunu https://bash.ooo/china.js --source gui --how A
比如: 从客户端的日志里准备数据,并采用方案 B,在本地运行
bunu https://bash.ooo/china.js --source gui --how B
比如: 从服务端的日志里准备数据,并采用方案 A,在服务端运行
bunu https://bash.ooo/china.js --source /path/to/log --how A
查看准备好的数据
bunu https://bash.ooo/china.js --table
弥补 A 和 B 方案的不足,手动微调数据
手动调整某个域名为国内域名
bunu https://bash.ooo/china.js --china zhimg.com
手动调整某个域名为国际域名
bunu https://bash.ooo/china.js --global gstatic.com
生成中国域名直连模块
bunu https://bash.ooo/china.js --modulea
总结
隔一段时间后,再次重复以上步骤,用不了几次就会生成最适合自己的完美的中国域名直连模块。