logo
0
0
Login

Puppet

Puppet 是一个基于 DrissionPage 的浏览器代理脚本,用来在真实 Chromium 标签页中自动监听 XHRfetch 请求,并将所有请求/响应的内容实时打印与持久化到本地 SQLite 数据库 (requests_log.db)。 它适合用来调试前端接口、留存请求证据、逆向接口协议或在无法直接调用接口的情况下同步抓取网络流量。

主要能力

  • 自动启动 Chromium、新建标签页并打开目标站点(默认 https://bring.cool,可根据需要修改 app.py 中的地址)
  • 监听所有新旧标签页的 XHR/fetch 数据包,打印请求方法、URL、头信息、Body 以及响应状态、响应头和正文
  • 将完整的数据包(含时间戳)线程安全地写入 SQLite,方便后续检索或导出
  • 监听线程出现异常或标签页关闭时提供清晰的日志提示,便于排查问题

环境与依赖

  1. Python 3.9+
  2. 安装依赖:
    pip install -r requirements.txt
  3. 确保本地可用 Chromium/Chrome 浏览器;DrissionPage 默认会尝试查找系统浏览器,也可以按 DrissionPage 文档自定义浏览器路径。

快速开始

  1. 启动脚本:
    python app.py
  2. 程序会启动 Chromium 并打开目标站点,终端会持续输出捕获到的请求与响应。
  3. 如需监听其他站点:
    • 修改 app.pytab.get("https://bring.cool") 为目标地址
    • 也可以先手动在新标签页打开其他站点,脚本会自动发现并挂载监听器
  4. 捕获的数据保存在 requests_log.dbhttp_logs 表,可用 SQLite 可视化工具或命令行检索:
    sqlite3 requests_log.db "SELECT method, url, response_status, created_at FROM http_logs LIMIT 20;"

常见用途

  • 记录前端与后端交互流量,分析接口参数
  • 为测试/风控/合规团队留存接口调用证据
  • 逆向 App 或 Web 端的 API 协议
  • 在自动化脚本中复用抓取到的请求数据

故障排查

  • Chromium 无法启动:确认本地是否安装 Chrome/Chromium;必要时按照 DrissionPage 文档配置 Chromium 类的参数。
  • 无任何请求输出:确认页面是否有 XHR/fetch 请求,或目标站点是否需要登录。必要时在已登录的标签页中手动刷新,脚本会继续监听。
  • 数据库写入异常:终端会打印堆栈,可检查 requests_log.db 是否存在写权限问题或磁盘空间不足。

根据具体需求,你还可以在 save_to_db 函数中扩展字段,或者编写额外脚本对 requests_log.db 做清洗分析。

About

No description, topics, or website provided.
Language
Python100%