v10.6收紧: 平台阻碍碰到即终态停止(当日不恢复不跳过); stop-tasks.sh start增加当日platform_blocked拒绝启动保护(误判可删状态文件解除)

This commit is contained in:
hermes
2026-08-27 03:44:46 +00:00
parent 0b1bd699b5
commit 3f094242df
2 changed files with 20 additions and 10 deletions
+7 -10
View File
@@ -290,17 +290,14 @@ async function verifyBlockedPage() {
maybeSendReport('login_expired', lastChatLeft);
needRelogin = true;
}
// 阻碍即停(v10.6 通用):弹窗无有效简历(限额/提示页等)→ 二次核查确认 → 私聊告警,停止
// 注意:与风控/验证码分开处理——这种是平台功能限制(如日浏览1000份上限),不是风控
// 阻碍即停(v10.6 通用,2026-08-27 收紧:碰到即终态停止,当日不再恢复):
// 弹窗无有效简历(日浏览限额/提示页等)→ 私聊告警(附弹窗原文)→ 立即停止
// 二次核查仅用于给告警补充确认信息,不影响"停止"这个结果
else if (/弹窗无有效简历数据/.test(out)) {
log('弹窗无有效数据,二次核查中...');
const confirmed = await verifyBlockedPage();
if (confirmed) {
send(DM, `🚨 ${ACCT} 碰到平台阻碍(${confirmed}),已核查确认,任务停止。请人工查看任务机浏览器确认后再启动\n日志: ${out.match(/弹窗内容: [^\n]*/)?.[0] || ''}`);
maybeSendReport('platform_blocked', lastChatLeft);
break;
}
log('核查未复现(可能是瞬时异常页),跳过继续下一批');
const detail = await verifyBlockedPage();
send(DM, `🚨 ${ACCT} 碰到平台阻碍${detail ? `(${detail})` : ''},任务已停止,当日不再重新启动。请人工查看任务机浏览器确认\n日志: ${out.match(/弹窗内容: [^\n]*/)?.[0] || ''}`);
maybeSendReport('platform_blocked', lastChatLeft);
break;
}
// 风控/验证码 → 私聊告警,结束(不监听,风控需人工评估)
else if (/ALERT.*(风控|验证|频繁|受限)/.test(out)) {
+13
View File
@@ -77,6 +77,19 @@ do_stop() {
do_start() { # $1=acct
local acct="$1" port label
[ "$acct" = "hr1" ] && { port=9223; label=Chrome; } || { port=9225; label=Edge; }
# v10.6 当日平台阻碍保护:已 platform_blocked 的账号当日拒绝启动(限额等不会当日恢复)
local st
st=$(python3 -c "
import json,datetime
try:
s=json.load(open('$STATE_DIR/state-$acct.json'))
bj=datetime.datetime.utcnow()+datetime.timedelta(hours=8)
print(s.get('status','') if s.get('date')==bj.strftime('%Y-%m-%d') else '')
except Exception: print('')" 2>/dev/null)
if [ "$st" = "platform_blocked" ]; then
echo "⛔ $acct 今日已碰到平台阻碍(限额类),按规则当日不再启动。如确认误判,删除 $STATE_DIR/state-$acct.json 后重试"
return 1
fi
# 启动前防重
local existing; existing=$(find_pids "$acct")
if [ -n "$existing" ]; then