From 8b3c7caf87e083deffc6891ec73eddd62d50f3f1 Mon Sep 17 00:00:00 2001 From: xiaji Date: Sat, 13 Jun 2026 20:29:08 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E5=8E=BB=E6=8E=89=20active=5Fip=20?= =?UTF-8?q?=E7=9A=84=E4=B8=B4=E6=97=B6=20debug=20log(=E5=B7=B2=E9=80=9A?= =?UTF-8?q?=E8=BF=87=E9=99=90=E6=B5=81=E9=AA=8C=E8=AF=81)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit smoke_limit2 验证成功(临时 kick 真实 IP + 30 假 IP → 真实 IP 登录返 429, 限流逻辑按设计工作)。 清理掉 [CHECK] [TOUCH_DEP] stderr 调试 log,恢复代码干净。 --- backend/app/services/active_ip.py | 22 ++++------------------ 1 file changed, 4 insertions(+), 18 deletions(-) diff --git a/backend/app/services/active_ip.py b/backend/app/services/active_ip.py index 1724f6e..b5d8258 100644 --- a/backend/app/services/active_ip.py +++ b/backend/app/services/active_ip.py @@ -43,23 +43,17 @@ def get_client_ip(request: Request) -> str: 仅在配置 trust_x_forwarded_for=True 时信任 1+2,否则只用 3。 """ - import sys - xff_raw = request.headers.get("x-forwarded-for") - xri_raw = request.headers.get("x-real-ip") - client_host = request.client.host if request.client else None - print(f"[GET_CLIENT_IP] xff={xff_raw!r} xri={xri_raw!r} client_host={client_host!r} trust={settings.trust_x_forwarded_for}", file=sys.stderr, flush=True) if settings.trust_x_forwarded_for: - xff = xff_raw + xff = request.headers.get("x-forwarded-for") if xff: ip = xff.split(",")[0].strip() if ip: - print(f"[GET_CLIENT_IP] -> use xff split[0] = {ip!r}", file=sys.stderr, flush=True) return ip - xri = xri_raw + xri = request.headers.get("x-real-ip") if xri: return xri.strip() - if client_host: - return client_host + if request.client and request.client.host: + return request.client.host return "unknown" @@ -84,8 +78,6 @@ async def check_or_register_login_ip(ip: str) -> None: r = get_redis() now = int(time.time()) limit = settings.site_max_active_ips - import sys - print(f"[CHECK] ip={ip!r} limit={limit}", file=sys.stderr, flush=True) # 看 IP 是否已在 set existing = await r.zscore(REDIS_KEY, ip) @@ -166,13 +158,7 @@ async def touch_ip_dependency(request: Request) -> None: 不会失败(吞掉异常),避免 Redis 抖动影响正常请求。 """ try: - import sys ip = get_client_ip(request) - # 临时诊断:看实际 IP 提取 - xff = request.headers.get("x-forwarded-for") - xri = request.headers.get("x-real-ip") - client_host = request.client.host if request.client else None - print(f"[TOUCH_DEP] ip={ip!r} xff={xff!r} xri={xri!r} client_host={client_host!r}", file=sys.stderr, flush=True) await touch_active_ip(ip) except Exception as e: # noqa: BLE001 logger.debug("touch_active_ip failed (ignored): %s", e)