From 96b473fb2f4ff517b598b6cea58b46e5992db37b Mon Sep 17 00:00:00 2001 From: hermes Date: Thu, 27 Aug 2026 02:51:27 +0000 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=A2=AB=E9=A1=B6=E5=8F=B7?= =?UTF-8?q?=E6=A3=80=E6=B5=8B:=20km-modal=E5=BC=B9=E7=AA=97+=E7=B2=BE?= =?UTF-8?q?=E7=A1=AE=E6=96=87=E6=A1=88+=E9=87=8D=E7=99=BB=E6=8C=89?= =?UTF-8?q?=E9=92=AE=E4=B8=89=E9=87=8D=E5=88=A4=E5=AE=9A,=20=E5=91=BD?= =?UTF-8?q?=E4=B8=AD=E5=8D=B3=E5=81=9C=E4=BB=BB=E5=8A=A1+=E7=BE=A4?= =?UTF-8?q?=E5=91=8A=E8=AD=A6(kicked=5Fout=E7=8A=B6=E6=80=81)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/daily-runner.js | 7 +++++++ scripts/zhaopin-scrape.js | 7 ++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/scripts/daily-runner.js b/scripts/daily-runner.js index 6a1e3ed..9a92aef 100644 --- a/scripts/daily-runner.js +++ b/scripts/daily-runner.js @@ -117,6 +117,7 @@ function maybeSendReport(myStatus, chatLeft) { } catch (e) { log(`日报生成/发送失败: ${String(e.message).slice(0, 150)}`); } } function statusText(s) { + if (s === 'kicked_out') return '🚨 被顶号(他处登录)'; if (s === 'login_expired') return '🚨 登录失效'; if (s === 'alert') return '⚠️ 异常中止'; if (s === 'chat_exhausted') return '✅ 聊天耗尽收工'; @@ -152,6 +153,12 @@ function statusText(s) { const { code, out } = await runBatch(); + // 被顶号(账号在其他设备登录)→ 群告警,立即结束(2026-08-27) + if (/账号被顶/.test(out)) { + send(GROUP, `🚨 ${ACCT}(${ACCT === 'hr1' ? 'Chrome·合塑账号' : 'Edge·派卡账号'})被其他人登录了(账号在其他设备/浏览器登录,当前已退出),任务停止。如非本人操作请注意账号安全`); + maybeSendReport('kicked_out', lastChatLeft); + break; + } // 登录失效 → 群告警,结束 if (/登录已失效|passport\.zhaopin\.com/.test(out)) { send(GROUP, `🚨 ${ACCT}(${ACCT === 'hr1' ? 'Chrome·合塑账号' : 'Edge·派卡账号'})智联登录态已失效,今日筛选中止,请在任务机重新登录智联`); diff --git a/scripts/zhaopin-scrape.js b/scripts/zhaopin-scrape.js index 0f9bdce..a60c49e 100755 --- a/scripts/zhaopin-scrape.js +++ b/scripts/zhaopin-scrape.js @@ -296,8 +296,13 @@ async function checkPageHealth(page) { captcha: !!document.querySelector('.verify-wrap,.captcha,.slider-verify,.tcaptcha-iframe') || /安全验证|请完成验证|滑块验证|图形验证码/i.test(body), risk: /操作过于频繁|访问受限|账号异常|请求异常/i.test(body), greetLimit: /打招呼已达上限|已达到.*上限|今日打招呼次数已用完|打招呼额度不足/i.test(body), + // 被顶号检测(2026-08-27):km-modal 消息弹窗 + 精确文案 + 重新登录按钮,三者俱全才判定,防误报 + kicked: !!document.querySelector('.km-modal.km-modal--message-box .km-modal__title-inner') + && /账号已在其他设备或浏览器登录/.test(body) + && !!document.querySelector('.km-modal.km-modal--message-box .km-button--primary'), }; - }).catch(() => ({ captcha: false, risk: false, greetLimit: false })); + }).catch(() => ({ captcha: false, risk: false, greetLimit: false, kicked: false })); + if (info.kicked) return '🚨 ALERT: 账号被顶:您的账号已在其他设备或浏览器登录'; if (info.captcha) return '🚨 ALERT: 触发验证码/风控,已暂停'; if (info.risk) return '🚨 ALERT: 触发风控限制,已暂停'; if (info.greetLimit) return '🚨 ALERT: 打招呼已达上限,停止打招呼';