HGhub 开发者HPP 1.0 草案

03 · 宿主规则

← 总览

本章列出宿主对插件的结构性约束与自身的行为规则。这些规则不是安全审核,也不评判插件的用途: 它们只保证"一个插件出问题不拖垮应用",以及"应用不给上游添麻烦"。

1. 隔离

由运行时结构保证(见 02 §1):

插件可持久化读写自己的存储与 Cookie;也可读取自己的设置、运行环境及宿主传入的业务参数。 它能通过已公开的 hg.* 接口取得外部数据,不能直接访问宿主内部数据。

解析器是唯一的跨插件协作(06 §3):宿主把数据源给出的播放页地址与 非凭据请求头交给解析器,解析器返回可播放地址。两者不共享存储、Cookie 与登录态, Authorization 与 Cookie 请求头不会转交。 媒体资源的提供者、解析链与实际请求环境由宿主记录,见 09。

2. 网络

插件的 API 请求与宿主取得的全部媒体(含图片、字幕与视频)经过宿主网络层。 可选网页视图使用平台原生网络栈,不承诺所有网页子资源经过该 HTTP 客户端或 DNS 固定机制; 它是用户主动打开的独立浏览环境,不能访问应用桥接接口。宿主自身的本地会话传输不视为上游出站请求。

规则 说明
协议 只允许 https:;http: 仅当插件声明 allowInsecureHttp
地址形式 不允许含用户名密码的地址;不允许控制字符
内网防护 默认拒绝解析到回环、私网、链路本地、保留地址的目标,以及 localhost、.local、.internal 等主机名;代理软件的 FakeIP 网段 198.18.0.0/15 放行
DNS 通过检查的解析结果直接用于连接(DNS 固定),不在检查后重新解析
重定向 至多 5 跳,每跳重新检查;禁止 HTTPS → HTTP 降级
请求头 丢弃 Host、Content-Length、Connection、Transfer-Encoding、Accept-Encoding 等由传输层决定的头
代理 遵循系统代理设置;用户也可用环境变量强制指定

内网防护与应用现有的"严格安全模式"是同一套设置:用户为自建服务(NAS、自托管媒体库) 关闭严格模式时,插件 API 与媒体流量一并放宽。宿主应当在界面上说明作用范围,不把网页视图描述成同一网络栈。

3. 上游友好

下表是 HGhub 默认调度策略,由宿主执行,插件无需实现;速率、并发与缓存容量不作为固定协议常量, 可按实际运行调优。取消、无自由后台执行和用户触发边界仍是协议约定。

项 默认值
接口请求速率 5 次/秒,突发 15,单插件并发 6(单主机 ≤ 4)
遇到 429 / 503 按 Retry-After 冷却该主机(上限 10 分钟),冷却期内请求立即失败并提示稍后重试
在途去重 参数相同的匿名 GET 合并为一次请求
后台活动 无。宿主不调用,插件不运行
播放信息预取 至多提前一条;网络受限或配额不足时不预取
聚合搜索 只在用户提交搜索时触发;输入联想不跨插件
进度回报 每 30 秒至多一次,另加开始、暂停、结束各一次
更新检查 自动检查同一插件同一地址不短于 24 小时一次;用户手动检查不受此间隔限制

API 请求、交互式播放、下载分别排队;播放分片不计入 API 的 5 次/秒额度,避免媒体缓冲阻塞登录与搜索。 同一资源主机的 Retry-After 冷却在各队列及插件间共享;只有当前实际响应触发冷却,不能用插件错误任意冷却其他主机。 宿主对媒体另设有限并发,优先当前播放,再考虑预取和下载。下载逐集排队,不并发批量解析整个片库。 匿名 GET 去重只合并实际请求地址及有效请求头相同的请求;一个等待者取消不能中断其他仍需要的请求。

4. 隐私