Skip to content

JavSP-fork v0.4.8

Latest

Choose a tag to compare

@luckwalter luckwalter released this 28 Oct 23:52
· 1 commit to master since this release

JavSP-fork v0.4.8 — 五大翻译通道全量加固

一次性把 Google / 百度 / Bing / Claude / OpenAI 兼容(含本地 Ollama、LM Studio)五个通道
各自的历史缺陷集中修掉,并把散落各处的「是否走代理」收敛成一个用户可手动选择的开关。
随后又跑了一轮安全与性能审查,把查出的 7 项缺陷(B-014 ~ B-020)一并修完。

⚠️ 测试状态(务必先读)

本版本改动面较大,维护者没有能力对所有通道做端到端实机验证 —— 百度 / Bing / Claude
等通道需要付费账号或额度,目前暂时测不了。已完成的是离线验证:

  • 回归测试 108 项全部通过(原 66 项 + 新增 42 项),全部 mock、不联网;
  • 仅 Google 通道做过真实连通性验证。

也就是说:除 Google 外的四个通道,修复效果是「按官方文档与代码缺陷推导」的结果,
还没有真机跑通记录。

📮 欢迎反馈各通道实测结果(最好带 log)

无论成功失败,都欢迎开 issue 反馈,这直接决定后续修复优先级。请带上:

要提供什么 说明
引擎 + 关键配置 如 baidu、bing(region=eastasia)、claude(model=...)、openai(url=局域网 Ollama)
目标语种 / 是否勾选「使用统一代理」 这两项决定走哪条分支
界面报错原文 设置页「测试」按钮的返回结果即可
日志片段 桌面版:运行目录 JavSP.log;Docker:docker logs javsp。logger 名 javsp.web.translate

脱敏提醒:贴配置和 log 前请先自行替换 app_id / api_key / 代理地址 / 局域网 IP。

各通道要点

  • Google:429 退避不再全局累加(旧实现一次限流后所有后续请求都被拖长);
    错误码不再 KeyError;非 JSON 响应(拦截页)转为可读报错。
  • 百度:错误码汉化(54003: Invalid Access Limit → 「访问频率受限(QPS 超限)…」);
    QPS 节流改为锁内预约时间槽(旧实现多线程下形同虚设),新增 qps 配置;
    无 trans_result 时不再静默产出空译文。
  • Bing:女优名用动态词典保护 + XML 属性转义;新增 region 配置(单服务资源必填,
    否则 401001 无从排查);空响应不再 IndexError;NFO 原文断句不再被词典标记污染。
  • Claude / OpenAI:Claude 默认模型从已被官方硬退役的 claude-3-haiku-20240307
    换成 claude-haiku-4-5-20251001,model 可自行指定;OpenAI 兼容端 api_key 可留空
    (本地 Ollama / LM Studio 不需要鉴权)。
  • 共性:长文本按引擎上限自动分段再拼接;新增 sqlite 翻译缓存(key 含引擎+模型+语种+
    prompt+文本,换模型/改提示词自动失效,只缓存成功结果);「使用统一代理」开关通用化,
    对所有引擎一视同仁。
  • 设置页:新增「测试」按钮 —— 用尚未保存的界面配置真实跑一次翻译,保存前即可
    确认引擎/密钥/端点/代理是否配对。

第二轮加固(B-014 ~ B-020)

编号 问题 修法
B-014 「测试」端点可被当作回显型 SSRF 与配额消耗器;pydantic 报错会回显含 api_key 的输入 URL 只允许 http(s)、屏蔽云元数据地址、同客户端 3 秒最小间隔、报错只回显字段位置与原因
B-015 Bing 女优名标记互为子串时嵌套,产出畸形 XML 按长度降序 + 一次性正则替换
B-016 Google 成功路径固定 sleep(4) 且按段计;429 退避无总预算 改引擎级 2 秒节流(线程共享);退避加 120 秒累计预算
B-017 Google 单段 6000 字节 → URL 膨胀到约 18K 字符 上限收紧到 1800 字节
B-018 异常信息里带出完整 URL(百度 appid/sign 在查询串上) 统一抹掉 URL 查询串并截断
B-019 翻译缓存无条数上限;清理后不 VACUUM,占用字节纹丝不动 上限 20000 + 淘汰最旧;清理后 VACUUM
B-020 分段拼接丢换行,百度段落语义丢失 百度按换行拼接,Google / Bing 保持空串

B-014 取舍:没有禁掉私有 / 回环网段 —— 禁掉会直接废掉本地与局域网 Ollama 这个核心
场景,只挡云元数据地址。要真正防「别人用你的额度」,请设置 JAVSP_AUTH_PASSWORD 开启认证。

升级说明

  • 旧配置无需改动即可升级:所有新字段都有兼容默认值。
  • Docker:docker load 镜像 tar.gz 后重建容器即可(配置在挂载卷,不受影响)。
  • Windows:下载 zip 覆盖安装目录(config.yml 与会话不会被覆盖)。
  • ⚠️ v0.4.5 之前的版本内置升级助手有缺陷,从那些版本点「立即升级」会失败,
    需手动下载 zip 覆盖一次,之后即可正常一键升级。

资产

文件 说明
JavSP-0.4.8-windows.zip Windows 桌面版(便携,解压即用)
javsp-fork-0.4.8-image.tar.gz Docker 镜像(docker load 后使用)
javsp-fork-0.4.8.sha256 上面两个资产的 SHA-256 校验值