5.8 KiB
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下载因未登记用途匹配反代明确未测;服务器文件检查不能替代用户实际下载链路验收。