一个自动更新 hosts 文件的项目。通过多 DNS 源解析与三级连通性检测,自动为 GitHub、TMDB、OpenSubtitles、Fanart 等域名生成可用 IP 列表。
-
多源 DNS 并行解析:使用
dig命令从多个 DNS 服务器查询 A/AAAA 记录(默认内置):- 223.5.5.5(阿里DNS)
- 119.29.29.29(腾讯DNS)
- 180.76.76.76(百度DNS)
- 114.114.114.114(114DNS)
- 支持自定义 DNS 列表覆盖默认配置
-
智能评分系统(8 线程并发):
- 三级连通性检测:
- HTTPS 直连检测(携带 Host 头,跳过证书验证)
- TCP 443 端口连通性检测
- Ping 检测(IPv4/IPv6 自动适配)
- 评分规则:
- 功能分:HTTPS成功=100分,TCP成功=50分,Ping成功=25分
- 延迟惩罚:ping延迟/10(有ping数据)或固定15分(无ping数据)
- 综合分数:
功能分 - 延迟惩罚
- 智能排序:按分数从高到低排序,每种协议取前 N 个最优 IP(N=MAX_IPS)
- 三级连通性检测:
-
协议支持:
True:双栈模式(IPv4 + IPv6)IPv4:仅 IPv4IPv6:仅 IPv6
-
数量控制:可设置每种协议最多保留的 IP 数量(默认值:1,范围:1~3)
-
支持的域名组:
- GitHub(包含主站、API、资源 CDN、Copilot 等 30+ 域名)
- TMDB(主站、API、图片 CDN 等)
- OpenSubtitles(主站、API)
- Fanart(资源 CDN)
-
自动化更新:GitHub Actions 每天定时运行一次(北京时间 00:00,默认双栈模式、每协议最多 1 个 IP)
以下内容适用于 fork 本仓库后需要自定义参数的用户。
自动定时运行:
- 每天自动触发一次(
0 16 * * *,即北京时间 00:00) - 定时触发默认参数:
DUAL_STACK:True(双栈模式)MAX_IPS:1(每种协议最多 1 个 IP,脚本默认值)USER_DNS_SERVERS: 空(使用默认 DNS 列表)
- 运行完成后自动提交到
main分支
手动触发:
- 打开仓库的 Actions,选择 "Update Hosts"
- 点击 "Run workflow",按需填写:
DUAL_STACK:True/IPv4/IPv6(默认True)MAX_IPS:1/2/3(默认1)USER_DNS_SERVERS: 支持两种格式(均可覆盖内置 DNS,非空即生效)- 逗号分隔(Actions 输入):
223.5.5.5,119.29.29.29,Ali:223.5.5.5 - Python 列表字符串(本地环境变量):
["223.5.5.5","119.29.29.29","Ali:223.5.5.5"] - 说明:
- 仅 IP 项会以 IP 作为名称写入注释
别名:IP会以别名作为 DNS 名称(示例中的Ali)
- 逗号分隔(Actions 输入):
- 运行完成后,最新
hosts将被提交到分支
生成文件格式:
- 文件头包含项目链接和更新时间(北京时间)
- 每个域名组有分组注释
- 每行格式:
IP地址 域名 # 检测方法 | DNS: DNS服务器名称 - 无法访问的域名会被注释掉,标记为 "完全无法访问"
- 文件以
# Kekylin Hosts Start和# Kekylin Hosts End标记区段