ios_rule_script
ios_rule_script copied to clipboard
希望能通过服务器自动化脚本,验证域名或IP属地后,在添加到对应属地的分流规则中(尤其是中国分流规则)
已经发现了中国分流规则中,包含了,一些的非中国的域名或IP。有些错误,是非常明显的,比如在china和chinamax合集当中,包含了如下错误域名:
如:https://browserleaks.com
如何,自动化的,避免这样的错误?
只要通过,域名解析网站查询,就会发现在,这是个browserleaks.com域名是美国公司域名。比如
https://www.nslookup.io/ : 获得域名基本信息和IP信息
https://ipinfo.io/ :根据IP查询地理位置
建议:
通过自动化脚本,对“规则集”中的域名,进行地理位置的二次验证。
如果归属地非中国大陆,则从中国的规则集中,自动删除(或自动注释)对应域名。其他地区也毅然如此。
@blackmatrix7
目前有类似的功能,但只运用于广告类型的规则,用于判断域名是否还可以访问。
其他类型的规则,涉及很多因素,不一定能准确的判断。
以browserleaks.com为例,规则中是DOMAIN-SUFFIX,从程序的角度,很难判断二级域名会指向哪个国家的IP。
如果browserleaks.com是指向美国纽约,cn.browserleaks.com指向中国深圳,那对于这条规则就非常难处理。
再加上CDN的问题,可能在不同地区执行程序,对于同个域名会解析出不同的IP地址,会更加复杂。
至于IP的问题,因为IP-CIDR是一个IP地址段,把地址段中的每个IP取出判断归属地,再移除错误的IP会严重影响生成时间。
这是我目前想到的问题,如果有其他更好的解决方案,欢迎一起讨论。
感谢作者 @blackmatrix7 的 回复
正如您说,由于无法遍历子域名,所以,对于的确没有什么好的办法。
从这个角度来看,下一代GFWlist、或下一代域名分流方案,必然是,跟APP代理工具,高度整合后的产物。
也就是说,未来必然会有一个服务器,专门从VPN客户端中,收集使用者使用过的域名(脱敏收集),然后将所有人使用过的域名在服务器汇总,进行排重(数据清洗),这样就可以近似的拿到 “所有子域名”(只要样本集足够大),从而提前对这些子域名做IP地理位置判断。
那如果,这样获得的域名集合太大,怎么办?
还可以通过云端的AI,预测,当一个用户行为,当其访问了A域名后,下一步可能要访问哪些子域名(从其他用户提交的样本中进行学习,生成模型),从而,服务器提前做各种预处理 预推送。(以便可以最小化传送域名集合以便最小化的内存暂用,甚至提前加载网页)
从这个角度来看,在AI系统融合之后,静态规则集也许会逐渐被淘汰。而VPN的作用也不仅仅是翻墙,更是能加速网页响应速度。
@blackmatrix7
怎样查一个网站下的所有二级网站?
https://dnsdumpster.com/
https://www.zhihu.com/question/19827294/answer/237452765
首先,关于二级域名难以遍历的问题。通过上述办法,是否有能力,静态方式查询到一个域名下的所有子域名?然后通过脚本判断。
其次,关于CDN干扰地理位置的问题,的确,这个恐怕很难解决。
@blackmatrix7
怎样查一个网站下的所有二级网站?
https://dnsdumpster.com/
https://www.zhihu.com/question/19827294/answer/237452765
首先,关于二级域名难以遍历的问题。通过上述办法,是否有能力,静态方式查询到一个域名下的所有子域名?然后通过脚本判断。
其次,关于CDN干扰地理位置的问题,的确,这个恐怕很难解决。
思路很不错 但验证域名来源或者 IP 属地并不能直接决定这个程序的分流是什么样的 网络本身是非常复杂的。 一个域名根域名在大陆和海外可以是不同的解析结果,倘若按照如题的服务器自动化脚本,服务器是在海外还是大陆?结果应该取值为哪个结果? 除非你是网站管理员 否则你肯定是没办法查到所有的子域名的。
一个域名根域名在大陆和海外可以是不同的解析结果,倘若按照如题的服务器自动化脚本,服务器是在海外还是大陆?结果应该取值为哪个结果?
这个我觉得服务器应该是要在大陆,因为代理是为了解决网络问题,海外的解析结果对于分类规则没有什么意义。但是大陆不同地区或不同的运营商会有不同的解析结果,有时候差异可能很大。只能靠多个服务器去解析全国结果,如 https://ping.chinaz.com/www.google.com ,如果结果列表中有解析在境外的,有解析在境内的,又该怎么去分类这又是一个问题。
遍历子域名
这能得到最精准的分流规则,但是我认为代价太大,因为有些域名的子域名可能有上万个那么多,比如有博客托管平台将用户名作为三级域名,假设能拿到所有三级域名,可能要遍历几百万个域名,这开销是非常大的,而且有可能遍历完了还发现都指向了同一台服务器,意义太低。
@blackmatrix7 另外我想问下一个需求是否可行:很多服务都是分地区的,比如 iCloud、OneDrive、Apple 等等,不同地区的域名不相同,可能 .cn
的我直连快,.com
的我走代理快,把它们放在同一个规则集中没有意义。是否可以分为 iCloud 与 iCloud-CN?就像 Steam 和 Steam-CN 一样。如果这能作为一个 feature 的话我开一个新的 issue。