服务方要求在下载订阅时附带特定 HTTP 请求头,不能把这些值随意写进节点传输设置。订阅下载和节点连接是两条不同流程,必须先确定认证发生在哪一步。
这项功能属于哪个版本
2026-10-04 官方发布记录中,2.2.6 是稳定版,2.3.10 是预发布版。2.3.10 说明新增为订阅更新设置自定义 HTTP headers,内容采用 JSON。本文针对该预发布版本,不假定稳定版存在相同入口。
在订阅分组的编辑设置中核对对应请求头选项,菜单名称随界面语言变化。先记录该分组的原地址和设置,再添加服务方明确提供的头名称和值。无需附加请求头的订阅,不应照抄他人的鉴权配置。
JSON 是对象,不是 HTTP 原文
可以用不含凭据的教学对象理解格式:
{
"X-Diagnostic-Note": "format-example"
}
这个例子只演示双引号、冒号和对象结构,不是任何服务的认证参数。真实值必须来自自己的服务方说明;不要把示例填入正式鉴权头。
常见问题包括使用中文引号、写成 Header: value 多行文本、对象末尾多一个逗号,或把整个对象包成字符串。建议采用字符串值,避免复杂对象转换成文本以后与服务方预期不一致。
无效 JSON 不一定阻止更新按钮
2.3.10 的 JsonUtil.parseHeadersToMap 会解析 JSON 对象;解析失败会返回空映射,并记录相关错误。HttpUtil 再把解析出的键值加入订阅 HTTP 请求。
因此,看到更新请求已发起,不等于自定义头已经正确带上。若服务方需要鉴权而 JSON 无效,可能表现为下载失败或 HTTP 状态异常。先核对格式与日志,再判断是否令牌失效。
按分组做一次验证
- 保留当前仍可用的节点,记录待修改的订阅分组代号。
- 核对 JSON 语法和头名称,确认值未多出换行或无意的空格。
- 仅更新该分组,记录时间、HTTP 状态或错误文本,以及节点是否成功解析。
- 下载成功但节点无法连接时,转向节点协议、证书和授权排查;不要继续修改下载鉴权头。
- 无改善时恢复原设置,向服务方核对请求头是否仍然必要、是否已更换凭据。
HTTP 401/403 可以提示鉴权或访问策略问题,但仅凭状态码不能证明是 JSON 格式错误。列表仍有旧节点,也不能说明这次更新成功。
日志尤其需要脱敏
固定标签 HttpUtil 在调试日志中会记录添加的自定义头键值。使用授权头或设备标识时,分享 Debug 日志可能直接泄露这些内容。先保存私人原始副本,再检查日志、截图和备份中的请求头与订阅 URL。
不需要把真实请求头交给本站或公开评论来验证格式。只展示已替换的示例键值和错误类型,仍可说明问题。
来源
本文是文档与源码核验后的操作建议,未下载真实订阅,也未实测 Android GUI。