debug: 临时加 stderr log 看 IP 提取 + touch_ip 调用

This commit is contained in:
xiaji
2026-06-13 19:12:23 +08:00
parent b500613d22
commit 7c5aff6345

View File

@@ -43,18 +43,23 @@ 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 = request.headers.get("x-forwarded-for")
xff = xff_raw
if xff:
# 取第一个(原始客户端),可能形如 "1.2.3.4, 10.0.0.1"
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 = request.headers.get("x-real-ip")
xri = xri_raw
if xri:
return xri.strip()
if request.client and request.client.host:
return request.client.host
if client_host:
return client_host
return "unknown"
@@ -76,6 +81,8 @@ async def check_or_register_login_ip(ip: str) -> None:
注意:不限制 owner/非 owner(整个站点一个池,所有用户共享)
"""
import sys
print(f"[CHECK] ip={ip!r} limit={limit}", file=sys.stderr, flush=True)
r = get_redis()
now = int(time.time())
limit = settings.site_max_active_ips
@@ -159,7 +166,13 @@ 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)