Commit 0620c20f authored by 郭阔's avatar 郭阔

fix(breaker): 熔断触发收紧——去掉 0 尝试即触发,须 ≥3 篇反爬特征

0 尝试的失败多是代理断连/网络故障(digitimes 与 reuters-markets 两次误触发
都是此因),不是墙;真墙的稳定特征是文章页成片 EMPTY_BODY/CAPTCHA。
误触发一次堵同站 12 小时代价过高。代理类故障下场自然恢复,无需熔断。
parent 536b8e2f
...@@ -425,7 +425,7 @@ if [ "$STATUS_TAG" = "FAILED" ] && command -v jq >/dev/null 2>&1 && [ -s "$JSON_ ...@@ -425,7 +425,7 @@ if [ "$STATUS_TAG" = "FAILED" ] && command -v jq >/dev/null 2>&1 && [ -s "$JSON_
_b_succ="$(jq -r '.result.succeeded_count // 0' "$JSON_OUT" 2>/dev/null)" _b_succ="$(jq -r '.result.succeeded_count // 0' "$JSON_OUT" 2>/dev/null)"
_b_eff="$(jq -r '[.result.articles[]? | select(.failure_type == "EMPTY_BODY" or .failure_type == "CAPTCHA" or .failure_type == "LOGIN_REQUIRED")] | length' "$JSON_OUT" 2>/dev/null)" _b_eff="$(jq -r '[.result.articles[]? | select(.failure_type == "EMPTY_BODY" or .failure_type == "CAPTCHA" or .failure_type == "LOGIN_REQUIRED")] | length' "$JSON_OUT" 2>/dev/null)"
_b_att="$(jq -r '.result.attempted_count // 0' "$JSON_OUT" 2>/dev/null)" _b_att="$(jq -r '.result.attempted_count // 0' "$JSON_OUT" 2>/dev/null)"
if [ "${_b_succ:-1}" = "0" ] && { [ "${_b_eff:-0}" -ge 3 ] || [ "${_b_att:-1}" = "0" ]; }; then if [ "${_b_succ:-1}" = "0" ] && [ "${_b_eff:-0}" -ge 3 ]; then
date +%s > "$_nh_wall_file" 2>/dev/null || true date +%s > "$_nh_wall_file" 2>/dev/null || true
echo "[breaker] 检测到反爬墙特征(0 交付,EMPTY_BODY/CAPTCHA ${_b_eff:-0} 篇,尝试 ${_b_att:-0} 篇),已触发站点熔断:后续同站采集将跳过,保温访问确认恢复后自动解除" echo "[breaker] 检测到反爬墙特征(0 交付,EMPTY_BODY/CAPTCHA ${_b_eff:-0} 篇,尝试 ${_b_att:-0} 篇),已触发站点熔断:后续同站采集将跳过,保温访问确认恢复后自动解除"
fi fi
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment