Skip to content

Boss 反爬升级(846.js v10194):所有命令报"登录状态校验失败",根因是 Boss 主包主动重载页面 #1

Description

@MrVic921

Boss 反爬升级:所有命令报"登录状态校验失败",根因是 Boss 主包 JS 主动重载页面

环境

  • boss-cli: 0.4.0(最新版,已确认)
  • Node.js: v24.15.0
  • OS: Windows 11
  • 浏览器: Microsoft Edge 149.0.4022.52(机器上未安装 Chrome,CLI 自动 fallback 到 Edge)
  • Boss 直聘主包: zhipin-boss/index/v10194/static/js/846.js(异常触发的脚本)

现象

任何业务命令(boss listboss list --unread)都立即报:

登录状态校验失败,页面可能还未登录,请登录后再试

但实际登录态完全有效:

  • 浏览器停在 https://www.zhipin.com/web/chat/index
  • 左侧菜单(职位管理 / 推荐牛人 / 沟通 12 / 等)可见
  • 候选人列表可正常显示
  • 手动 F5 刷新仍在已登录页

根因诊断(已通过 CDP 抓包定位)

错误来自 dist/common/boss_session_page.js:98 的菜单签名稳定性检查。但根因不在签名变化,而在于:

Boss 主包 846.js 检测到 CDP 自动化连接后,主动调用 Page.navigate 重新加载页面,导致 readMenuListSnapshot 在重载窗口里读到 .menu-list 不存在。

抓到的关键证据(DEBUG=* boss list 的 stderr):

{
  "method": "Network.requestWillBeSent",
  "params": {
    "request": {
      "url": "https://www.zhipin.com/web/chat/index",
      "method": "GET"
    },
    "initiator": {
      "type": "script",
      "stack": {
        "callFrames": [{
          "scriptId": "52",
          "url": "https://static.zhipin.com/zhipin-boss/index/v10194/static/js/846.js",
          "lineNumber": 0,
          "columnNumber": 64969
        }]
      }
    },
    "hasUserGesture": true,
    "type": "Document",
    "frameId": "..."
  }
}

随后 readMenuListSnapshot 返回 {"exists":false,"signature":""},触发 CLI 报错。

已排除的可能原因

  1. ✅ 端口 53470 上 Edge 实例正常,/json/version 能返回
  2. ✅ CLI 选对了 zhipin.com 页面(不是 tab-search 那个 browser_ui)
  3. ✅ 直连 CDP 用同样的选择器读 .menu-list,可以稳定读到 12 项菜单,签名 3+ 秒不变
  4. BOSS_CLI_NO_AGENT_OVERLAY=1 关闭 overlay 注入也无效
  5. ✅ 降级到 0.3.5 / 0.3.4 同样报错(说明反爬是服务端动态升级,不是 CLI 回归)

复现步骤

  1. 安装 @joohw/boss-cli@0.4.0
  2. boss login 完成 Boss 直聘 B 端登录
  3. 浏览器停在 /web/chat/index,登录态正常
  4. boss list → 立即报错

建议方向

846.js 里有一段反 CDP 自动化检测,命中后调用 location.assign(currentUrl) 或类似 API 强制刷页。考虑:

  • 加强 boss_page_guards.js 的 navigation 守卫,拦截目标 URL == 当前 URL 的 Document 类型导航(这种"自重载"几乎肯定是反爬触发的)
  • 或者在 evaluateOnNewDocument 里直接 hook location.reload / location.assign(同 URL) / window.location.href = 同 URL

临时缓解

暂时没有可用绕过手段。等 CLI 修复,或手动操作 Boss 直聘。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions