代理优化(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
47 lines
1.5 KiB
Python
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}
|