fn_b/docs/maintenance/CFN_SUBSCRIPTIONS.md

5.8 KiB
Raw Blame History

cfn 免费订阅发布与检测调查

调查日期:2026-10-18。范围:用户授权只读调查;经白色机跳转读取线上文件、配置,并以只读事务查询最近三篇已发布文章;未发起线上 HTTP 请求、节点连通测试、客户端核心加载、安装、定时任务或生产变更。

当前发布链路

  • cfn:bgp-jp01,Nginx /etc/nginx/conf.d/clashfreenode.com.conf 的根目录为 /www/wwwroot/clashfreenode-new.com/public。另有 /www/wwwroot/clashfreenode.com 旧目录及旧 public/sub;不能将旧目录的文件认作当前发布结果。
  • 当前文章使用 articles / categories 数据;免费节点分类 freenode。最近已发布文章 slug 为 fn20261018、fn20261017、fn20261016,分别包含对应日期的三类订阅链接。
  • 订阅文件由 nodehub 线上版本 nodebus.net 托管:/cfn/<每日变化目录>/<YYYYMMDD>-v2ray.txt、-singbox.txt、-clash.yaml。线上磁盘 /www/wwwroot/nodebus.net/public/cfn/。不复制每日目录值;每天从已发布文章的最终链接发现,不能仅替换日期。
  • nodehub 的 routes/web.php 注册 POST /api/freenode/file/put,处理器 app/Http/Controllers/Api/v1/FreenodeController.php::filePut 接收 site_code_short 与各格式 raw,生成按日期变化的目录并写文件。所读处理器检查空内容和写入结果,未执行 YAML/JSON/节点字段/客户端核心校验。本次没有追查上游爬取转换实现,不能据此认定全链路均无校验。
  • cfn GithubController::getFnToday 是向配置的 master 站 /api/v1/freenode/url_feed_today/cfn 转发请求的代码入口,不是本地订阅文件读取。本次未调用;清单返回的实时性和内容尚未验收。

线上文件检查结果

以下是直接读取文件后的结构解析,不等同于 HTTP 下载或客户端导入验收。

日期 Clash proxies Sing-box outbounds(含3个控制项) V2Ray非空链接行
2026-10-18 1875 1947 2021
2026-10-17 1318 1263 1326
2026-10-16 1292 1241 1308
  • 九个文件的 YAML / JSON / 外层 Base64 基础解析成功;Sing-box 文件后缀是 .txt,实际内容是 JSON。格式应由声明和内容共同确定。
  • 今日 Clash:基础字段齐全、端口范围检查通过,未发现重复名称、空服务器及策略组内缺失引用;未执行核心兼容检查。
  • 今日 V2Ray:解码后第4、78个非空链接行在协议名前含 U+FEFF BOM;近两天也分别发现2行。这是实际编码异常;是否跳过节点或导致整体失败取决于客户端,未实测。不可把外层Base64解码成功视为订阅全部正确。
  • 今日 Sing-box:outbounds[6](从0计数,type=vmess)包含空 server 和 server_port: 0,是需要拦截的节点字段异常;未运行核心,未确认客户端实际报错文案。
  • 不同格式节点数量不同;协议覆盖和转换筛选原因尚未追查,不直接把数量差认定为丢节点故障。
  • 线上 PATH 中未发现 mihomo / sing-box / xray;本次不安装。语法检查通过不能替代对应版本核心的配置校验。

检测目标与后续边界

用户要求的是爬取、加工后的最终订阅能否被客户端接受,不要求逐节点连通或测速。后续检测应区分:文章与订阅地址发现、最终文件下载、外层编码与结构、节点字段、客户端核心兼容。错误报告隐藏节点密码、UUID和令牌。每日执行时间、通知方式及可用 HTTP 访问路线留待后续;手动检测器部署状态见下节。

手动检测点部署与首轮验收(2026-10-18)

用户授权搭建并手动运行,明确暂不做定时和通知。已按Git提交/推送/拉取流程部署到白色机,检测代码版本 dce13098426ac238dd8a774c81c228a3e9214657;入口见 检测器使用与回滚。白色机路径和依赖关系由GemDocs的 TOOL-CFN-CHECKER 唯一登记,不修改现有Nginx、代理、订阅或源站数据。

本机与白色机9项针对性测试通过。固定核心 Mihomo v1.19.32、Sing-box v1.14.3,以及独立离线GeoIP数据库,下载SHA256均核对官方发布摘要。无常驻服务/代理、定时器、通知;源站SSH凭据仅随手动调用临时传入并清理,不长期保存。

最终手动报告:白色机 /var/lib/cfn-subscription-checker/20261018-183812-043270/report.json(北京时间18:38开始);文章 fn20261018,日期检查通过。报告总状态 fail 是订阅内容异常,不是检测器部署失败。

格式 实测结论 范围
Clash 1875个节点;静态检查通过,Mihomo完整配置检查通过;核心峰值RSS 76984 KiB(约75MiB) 未测节点连通或GUI导入
Sing-box 1944个代理出站,另3个控制项;outbounds[6]缺server、uuid且端口为0;1.14.3明确拒绝旧DNS servers格式 只代表固定版本兼容性;核心在首次错误停止,尚无后续错误全量清单;峰值RSS 64920 KiB(约63MiB)
V2Ray 2021个非空链接行;2处BOM、1处VMess载荷解析失败、84条非标准直接JSON VMess(需客户端导入器核验)、9处端口问题、1处URI authority问题 静态发现共97项(不是97个唯一坏节点);未执行GUI导入;不能将84条变体直接断言为所有客户端不支持

首次运行因离线缺GeoIP导致Mihomo检查blocked_dependency,补齐独立校验数据后复跑通过;保留首轮报告以区分环境问题和订阅问题。核心在PrivateNetwork与资源限制内运行,未产生节点连接;上述RSS不包含主Python脚本,也不是整机总峰值。HTTP下载因未登记用途匹配反代明确未测;服务器文件检查不能替代用户实际下载链路验收。