Repository navigation
v0.12.6
截至 d9d5317(0.12.5)以来的变更:38 个文件,+2156 / −400,新增 lib/guard-proxy.js。
新增
渲染抓取
qq_webfetch接入 Moli 无头浏览器:可抓取需要 JS 渲染的页面,输出 markdown。引擎未启用或不可用时自动退回普通抓取。- 新增
lib/guard-proxy.js:渲染期间 moli 的全部流量(主文档、3xx 重定向、页面子资源、页面 JS 发起的请求)经本地校验代理出站,回环与私网地址一律拒绝。判定语义是「确定是内网才拒」,本机解析不了的域名放行、交给上游代理解析。 - 渲染对 QQ 会话内的访客(群聊与别人的私聊)开放,由
moli.allowGuest与moli.guardProxy两个开关共同控制。
moli 配置段(原来只有 enabled / proxy / exePath)
| 键 | 默认 | 说明 |
|---|---|---|
enabled |
false |
总开关 |
exePath |
'' |
留空 = 自动探测标准位置与 PATH |
proxy |
'' |
留空 = 透传 webSearch.proxy |
defaultTimeoutMs |
30000 |
渲染超时(-t) |
maxChars |
200000 |
单次输出字符上限 |
insecureTls |
true |
跳过 TLS 证书校验 |
guardProxy |
true |
本地校验代理 |
allowGuest |
true |
访客可否触发渲染 |
rateLimitPerMin |
5 |
每会话每分钟渲染上限(0 = 不限) |
maxConcurrentRenders |
2 |
跨会话全局并发上限(0 = 不限) |
设置页
- 新增 Moli 卡片:引擎检测、引擎路径、代理、超时、输出上限、TLS 校验、访客开关、频率限制。
- 卡片内「高级设置」的参数现在可以保存(此前改动不生效)。
变更
auth.guestToolAllow默认值移除moli_fetch,访客的渲染需求由qq_webfetch的 moli 分支承担。- 流程授权的 grant 必须携带工具名,空的
toolName一律拒绝。 - 适配器凭据改从环境变量读取,命令行参数仍然优先。
flowStore移除save与verify:流程脚本由使用者自行放入目录,插件既不写入也不执行。- 换连接配置时等旧适配器真正退出后再启动新的。
- 非 QQ 会话(Web UI、任务板、子代理)仍然不可触发渲染。
修复
- 渲染失败不再返回成功:被防护拦下、上游代理不可达、目标 4xx/5xx 均明确报错。
- 守卫代理区分 403(策略拒绝)与 502(连接类失败)。
dechunkBuffer对负数 chunk-size 的同步死循环。- SSRF 判定补齐 6to4(
2002::/16)与 Teredo(2001::/32);修正 Teredo 取错分组的问题。 - 代理隧道:直连分支的 30 秒空闲超时、CONNECT 目标归一化、响应头 64KB 上限、请求头 CR/LF 校验。
- 守卫代理:
start()并发返回端口 0、ensureGuardProxy并发重复创建、server 未unref()、socks5 上游静默降级。 - OneBot 11 正向 WS 增加半开检测(3 个心跳周期无数据即断开重连);Satori 连续 3 次 PING 无 PONG 改为断开重连。
writeToAdapter返回真实写入结果;顺序锁release幂等并加 120 秒超时。- 图片缓存的三条泄漏路径,新增每 6 小时按 mtime 清理。
- 产物打包从
execFileSync改为异步spawn;适配器 stdout 加 1MB 上限;cleanupStaleConfig补异常处理。 - 会话池加上限 200,按最久未用淘汰。
qq_draw:增加拥有者校验、支持取消、响应体 4MB 上限。qq_imgsearch:本地文件白名单增加当前会话维度。/grant禁止自我授权,授出的权限必须自己已经拥有;/revoke需要grant权限。- 拥有者设置的确认码改用
crypto.randomBytes;恢复码不再受动态码锁定影响。 - 「拥有者私聊」判定改用回合快照,修复
perChatSession=false时高危工具全部不可用。 - 直连抓取增加绝对 deadline。
升级
补丁级更新,配置无需改动;新增的 moli 配置项均有默认值。测试 30 个套件 / 1197 项通过。