菜单

域名轮换系统

相关源文件

目的与范围

域名轮换系统是 new-pac 仓库的关键组成部分,通过以可预测的模式定期更改域名来维持对审查规避工具的持续访问。本文档解释了域名轮换的技术实现,包括域名的更新方式、受影响的文件以及系统的自动化方式。

有关更新脚本本身及其执行环境的信息,请参阅更新脚本GitHub Actions 工作流程

系统概览

域名轮换系统通过定期增加域名中的数字部分来工作。这项技术通过增加审查系统阻止所有访问点的难度,帮助维持对规避服务的访问。当一个域名被阻止时,系统已经转移到下一个域名。

来源:update_wiki_page.py21-26 update_wiki_page.py29 update_v2ray_wiki.py22-34

域名类型和更新模式

该系统管理两种主要类型的域名,每种都有其自己的更新模式和目的

域名类型模式目的更新位置
Fan域名fan[NUMBER].635876.xyz用于直翻通道Wiki页面“直翻通道.md”
Y域名y[NUMBER].582185.xyz用于V2Ray主机配置Wiki页面“v2ray免费账号.md”

两种域名类型都遵循相似的模式,即只增加数字部分,同时保持基础名称和域名后缀不变。

来源:update_wiki_page.py29 update_v2ray_wiki.py23

实现细节

域名更新机制

域名更新过程依赖于正则表达式来识别域名模式,以及一个辅助函数来增加数字部分。

  1. 模式匹配:正则表达式识别当前域名格式
  2. 提取:域名被分割成前缀、数字和后缀部分
  3. 递增:数字部分增加1
  4. 重构:各部分被重新组合成新的域名

对于 Fan 域名,其实现位于 update_wiki_page.py 中。

来源:update_wiki_page.py21-26 update_wiki_page.py29

V2Ray主机和Vmess更新

V2Ray域名更新更为复杂,因为它需要同时更新Markdown表格中显示的主机以及Base64编码的vmess链接中嵌入的主机信息。

来源:update_v2ray_wiki.py22-35 update_v2ray_wiki.py39-50

更新vmess链接的具体步骤

  1. 使用正则表达式提取Base64编码的vmess链接
  2. 将Base64解码为JSON
  3. 更新JSON对象中的主机字段
  4. 将JSON重新编码为Base64
  5. 用更新后的链接替换原始vmess链接

来源:update_v2ray_wiki.py39-50

时间戳更新

除了域名更新,系统还会更新时间戳以反映更改发生的时间。时间戳格式使用北京时间(亚洲/上海时区),并遵循特定的中文日期格式。

来源:update_wiki_page.py10-12 update_wiki_page.py31-36 update_wiki_page.py51-56 update_v2ray_wiki.py11-13 update_v2ray_wiki.py52-57

自动化系统集成

域名轮换系统通过 GitHub Actions 工作流程自动执行,该工作流程以固定间隔(通常每10分钟)运行更新脚本。

来源:update_wiki_page.py update_v2ray_wiki.py

技术限制与注意事项

域名轮换系统存在一些技术限制和设计考量

  1. 可预测模式:轮换遵循可预测的递增模式,这可能被预测并阻止
  2. 硬编码域名:域名模式在更新脚本中是硬编码的
  3. 单次递增:每次更新周期域名只递增一个数字
  4. 文件特定更新:每个更新脚本都针对特定的文件和模式

尽管简单,这种方法已被证明能有效保持对规避工具的访问,通过领先于封锁努力。

总结

域名轮换系统通过以下方式持续更新用于规避工具的域名:

  1. 定期增加域名中的数字部分
  2. 更新文档和配置中所有对这些域名的引用
  3. 维护时间戳信息以反映最新更新
  4. 通过GitHub Actions自动化整个过程

该系统是仓库维护审查规避工具可靠访问的核心组成部分。