Skip to content

[Bug & Chore] ret=200013 频率限制提前 break 导致降级失效、前端硬编码百度统计移除及 .dockerignore 清理建议 #469

Description

@Aquarius-Situla

问题背景与对应修复 PR

在实际自托管部署(v1.5.3 Docker)及源码排查过程中,发现以下三个可独立修复的问题,已按单一职责原则分别提交了 3 个独立的 Pull Request 供按需审阅合并:


1. [Bug] ret=200013 (freq control) 提前 break 导致无法触发降级采集及回调重复执行 (见 PR #470)

  • 复现与表现:当前微信公众平台 /cgi-bin/appmsgpublish 与 /cgi-bin/appmsg 接口极易触发风控返回 {"base_resp":{"err_msg":"freq control","ret":200013}}。
  • 代码原因:
    1. 在 core/wx/model/web.py、app.py、api.py 中,遇到 ret == 200013 重试后直接执行了 break 退出 while True 循环,导致下方的 self._fallback_to_free_publish(...) 降级逻辑成为不可达死代码,耗时 3 分钟后以 成功0条 退出。
    2. while True 循环内部的 finally: super().Item_Over(...) 在 continue(重试)或 return(移交子采集器)时也会被触发,导致 Item_Over_CallBack 被重复调用甚至在 Over_CallBack 之后执行。
    3. core/wx/model/free_publish.py 在 4 个后台端点均返回 200013(effective_endpoint is None)时,尚未衔接已有的 MpsWereadMP(weread_mp 微信读书通道)以及 core/wx/base.py 中定义的 _auto_fallback(MpsPlaywright)兜底,且直接 return 时漏掉了 super().Over()。

2. [Privacy / Frontend] 前端模板默认硬编码百度统计 (hm.baidu.com) (见 PR #471)

  • web_ui/index.html 与 static/index.html 中默认内嵌了 <script src="https://hm.baidu.com/hm.js?975de8724ac02eb7e6d2357bb95c067d"></script>。
  • 对于私有化/内网自托管部署用户,这会将私有域名、URL 路径上报至第三方统计平台,同时在启用隐私保护扩展的浏览器中引发 net::ERR_BLOCKED_BY_CLIENT 控制台报错。

3. [Chore / Docker] 仓库根目录残留非运行时测试脚本及 .dockerignore 规则完善 (见 PR #472)

  • 仓库根目录下的独立网络/压力测试脚本(atack.py、dns.py)未被主程序引用,但在 Docker 构建 COPY . /app 时被打入生产镜像,容易触发主机/容器安全扫描告警;建议清理并在 .dockerignore 中排除 scripts/probe_*.py 等本地调试脚本。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions