python-drission-page-spider/listener/network.py
shikong 7a19ca02bf
refactor: 重构日志系统并优化线程池配置
重构日志系统,使用loguru替代print语句,提升日志管理能力。优化线程池配置,根据CPU核心数动态设置线程池大小。将任务执行逻辑移至worker.py,提高代码可维护性。
2025-03-21 00:55:10 +08:00

47 lines
1.8 KiB
Python

import utils
from loguru import logger
logger.add("log/network.log",
rotation="100 MB",
encoding="utf-8",
filter=lambda record: record["extra"].get("name") == "network")
network_log = logger.bind(name="network")
def network_listener(tab, targets=[]):
try:
# 监听网络
network_log.info("[network.log] 开始监听网络")
tab.listen.start(targets=targets)
for log in tab.listen.steps():
network_log.info("=" * 50)
network_log.info(f"[network.log] {log.method} {log.url}")
network_log.info("=" * 50 + '\t' + "request")
network_log.info("=" * 50 + '\t' + "request.headers")
for key in log.request.headers.keys():
network_log.info("{}, {}", key, log.request.headers[key])
if 'Content-Type' in log.request.headers:
reqType = log.request.headers['Content-Type']
if reqType == 'application/json':
network_log.info("=" * 50 + '\t' + "request.body")
network_log.info(utils.format_json(log.request.body))
# print(vars(log.request))
for key in log.response.headers.keys():
network_log.info("{}, {}", key, log.response.headers[key])
if 'Content-Type' in log.response.headers:
respType = log.response.headers['Content-Type']
if respType == 'application/json':
network_log.info("=" * 50 + '\t' + "response.body")
network_log.info(utils.format_json(log.response.body))
# print(vars(log.response))
except Exception as e:
network_log.error("[network.log] 监听网络出错")
network_log.error(e)
finally:
network_log.info("[network.log] 停止监听网络")
tab.listen.stop()