Files
live-hub-py/web/backend/routers/logs.py
T
yml2213 da2fedd484 优化代理管理与增加请求日志系统
代理优化(P0+P1):
- 修复极验失败后代理刷新空操作bug(共享ProxyManager+白名单参数)
- 极验请求超时从(3.05,12)调大到(10,30)
- 白名单sync_ip加全局锁防并发限流,保留多个出口IP应对漂移
- 代理池缓存共享:Condition防并发获取+mark_bad移除坏代理
- 适配代理API的JSON响应格式(code/data/白名单错误)
- 简化代理验证只验斗鱼主站,减少日志噪音
- 获取代理前主动同步白名单(解决ow=1模式不报白名单错误的问题)
- 每次重试重新检测出口IP并同步白名单

请求日志系统:
- 新增HttpLogger记录请求/响应详情到JSONL文件
- login.py的_request和proxy.py的verify_proxy_url接入日志
- 新增/api/logs路由查看和清空HTTP详情日志
- 前端新增请求日志页面(筛选/搜索/分页/自动刷新/详情查看)

其他:
- 添加pysocks依赖支持SOCKS5代理
- gitignore添加*.log
2026-06-23 00:50:57 +08:00

47 lines
1.5 KiB
Python

"""请求日志路由 - 查看 HTTP 请求/响应详情日志"""
from fastapi import APIRouter, Depends, Query
from typing import Optional
from ..deps import get_current_user
from ..permissions import has_permission
from utils.http_logger import read_http_logs, clear_http_logs
router = APIRouter(prefix="/api/logs", tags=["日志"])
@router.get("/http")
def list_http_logs(
limit: int = Query(50, ge=1, le=500),
offset: int = Query(0, ge=0),
category: Optional[str] = None,
level: Optional[str] = None,
keyword: Optional[str] = None,
current=Depends(get_current_user),
):
"""查看 HTTP 请求/响应详情日志(需要审计日志查看权限)"""
if not has_permission(current.role, "audit:view"):
# 运营也可以查看请求日志(用于排查登录问题)
if not has_permission(current.role, "login:batch"):
return {"items": [], "total": 0, "message": "无权限"}
items, total = read_http_logs(
limit=limit,
offset=offset,
category=category,
level=level,
keyword=keyword,
)
return {"items": items, "total": total}
@router.delete("/http")
def clear_http_logs_api(current=Depends(get_current_user)):
"""清空 HTTP 请求/响应详情日志"""
if not has_permission(current.role, "audit:view"):
if not has_permission(current.role, "login:batch"):
return {"success": False, "message": "无权限"}
count = clear_http_logs()
return {"success": True, "cleared": count}