# crawler-tool **Repository Path**: HappyDogs/crawler-tool ## Basic Information - **Project Name**: crawler-tool - **Description**: 爬虫链路分析工具 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-07-02 - **Last Updated**: 2026-07-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # BrowserFlow - 浏览器流量分析器 企业内网流量分析工具,用于追踪系统跳转链路、提取认证参数、分析加密逻辑,辅助编写爬虫代码。 ## 功能特性 - **请求拦截**:基于 Playwright Chromium 内核,捕获所有 HTTP/HTTPS 请求,绕过系统代理 - **智能过滤**:7 种预设过滤方案(全部捕获/排除静态资源/仅 API/仅认证等),支持自定义通配符 - **认证分析**:自动提取 Bearer Token、Cookie、Header、CAS/OAuth2/SAML 等认证参数 - **加密检测**:自动检测请求/响应中的加密字段(AES/RSA/MD5/Base64/国密等),分析信息熵和编码特征 - **链路追踪**:可视化展示多系统间的跳转链路(如 HR → OA → 采购系统) - **请求详情**:双击请求弹窗查看 7 个维度的信息(基本信息/请求头/请求体/响应头/响应体/认证分析/JS 源码) - **代码生成**:一键复制为 cURL 命令或 Python requests 代码 - **参数对比**:对比同一 URL 的多次请求,自动识别变化参数(分页/时间戳/签名等) - **暂停录制**:随时暂停/恢复录制,分析时不受新请求干扰 - **AI 分析**:选择性勾选请求,通过 OpenAI 兼容接口智能分析认证参数和爬虫建议 - **日志导出**:JSON / HAR 格式导出,HAR 符合 1.2 规范 ## 环境要求 - Python 3.10+(推荐 3.11+) - Windows 10/11 ## 安装方式 ### 方式一:下载 EXE(推荐) 从 Release 页面下载 `BrowserFlow.exe`,双击即可运行。首次启动会自动下载 Chromium 浏览器(约 180MB),下载过程有进度显示。 ### 方式二:一键脚本(源码运行) 下载项目后,双击或运行对应脚本即可自动完成安装和启动: | 脚本 | 平台 | 功能 | |------|------|------| | `setup.bat` | Windows | 双击运行:检查 Python → 安装依赖 → 安装 Chromium → 启动应用 | | `setup.py` | 全平台 | `python setup.py`:同上 | | `setup.sh` | macOS / Linux | `./setup.sh`:同上 | | `build.bat` | Windows | 双击运行:打包为 EXE | | `build.py` | 全平台 | `python build.py`:打包为 EXE | | `build.sh` | macOS / Linux | `./build.sh`:打包 | **Windows 用户**:双击 `setup.bat` 即可一键启动,双击 `build.bat` 打包 EXE(无需 Python 环境也能运行脚本,脚本会提示安装 Python) **macOS / Linux 用户**: ```bash # 首次运行(安装 + 启动) chmod +x setup.sh && ./setup.sh # 打包 chmod +x build.sh && ./build.sh ``` ### 方式三:手动安装 ```bash # 1. 安装依赖(使用国内镜像) pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple # 2. 安装 Chromium 浏览器 playwright install chromium # 3. 启动应用 python main.py ``` ## 抓包使用教程 ### 第一步:启动浏览器 1. 双击 `BrowserFlow.exe` 或运行 `python main.py` 启动应用 2. 点击左下角的 **「启动浏览器」** 按钮 3. Chromium 浏览器会作为独立窗口打开(首次需要下载,请耐心等待) 4. 状态栏显示「浏览器已启动」表示连接成功 ### 第二步:设置过滤规则 在工具栏的下拉框中选择合适的过滤方案: | 过滤方案 | 说明 | 适用场景 | |---------|------|---------| | 捕获所有(不排除) | 捕获全部请求,包括 JS/CSS/图片等 | 需要分析前端加密逻辑时 | | 排除静态资源 | 排除 .css .png .jpg 等,保留 JS | **日常抓包推荐** | | 仅 API 请求 | 只捕获 URL 包含 "api" 的请求 | 只关注后端接口时 | | 仅 HTML 页面 | 只捕获 .html / .htm 请求 | 分析页面跳转时 | | 仅认证相关 | 只捕获含 auth/login/sso/token 等关键词 | 分析登录流程时 | | 自定义 | 输入通配符表达式,如 `*login*` | 特殊需求 | ### 第三步:访问目标网站 1. 在 Chromium 的地址栏输入目标网址并访问 2. 正常操作网站(登录、点击菜单、翻页等) 3. 右侧请求列表会实时显示捕获的请求 ### 第四步:分析请求 **查看请求列表:** - 每条请求显示:`方法 | 域名 | 路径` - 颜色含义:绿色 = GET,橙色 = POST,紫色 = OPTIONS/CORS **查看请求详情:** - 双击任意请求,弹出详情窗口,包含 7 个标签页: - **基本信息**:方法、URL、耗时、状态码 - **请求头**:完整的请求头信息 - **请求体**:POST 数据(自动格式化 JSON) - **响应头**:响应头信息 - **响应体**:响应内容(自动格式化 JSON) - **认证分析**:自动提取的 Token、Cookie、SSO 信息、加密字段检测 - **JS 源码**:仅对 .js 请求显示,高亮加密关键词(encrypt/AES/RSA 等) **快速操作:** - 点击详情窗口底部的 **「复制为 cURL」** 直接获取 cURL 命令 - 点击 **「复制为 Python」** 获取 Python requests 代码 ### 第五步:认证信息分析 切换到右侧的 **「认证」** 标签页: - 自动识别包含认证信息的请求 - 显示 Token 类型(Bearer/Cookie/URL参数)和值 - 双击可查看完整的认证详情(Token、Cookie、Auth Headers、SSO 信息) ### 第六步:链路追踪 切换到 **「链路」** 标签页: - 查看多系统间的跳转关系 - 检测 301/302/303/307/308 重定向链路 - WebSocket 消息记录 ### 第七步:参数对比(分析加密参数变化规律) 1. 点击工具栏的 **「对比请求」** 按钮 2. 系统自动找出重复 URL 的请求组 3. 选择一组进行对比 4. 查看哪些参数在变化(如分页参数、时间戳、签名等) 5. 变化模式自动识别:递增数字、时间戳等 ### 第八步:AI 智能分析 1. 点击 **「AI 配置」** 填写 API Key、Base URL、Model 2. 切换到 **「AI 分析」** 标签页 3. 可选操作: - **选择请求并分析**:勾选特定请求发送给 AI - **分析全部**:将所有捕获的请求发送给 AI - **仅认证请求**:快速筛选包含认证信息的请求 4. AI 会分析并输出: - 跳转链路识别 - 认证参数提取 - SSO 流程分析 - 加密/解密逻辑分析 - 爬虫代码建议(Python requests) ### 第九步:导出日志 点击工具栏的 **「导出日志」** 按钮: - 导出为 JSON 格式,包含所有捕获的请求数据 - 可用于后续分析或导入其他工具 ## 常见抓包场景 ### 场景一:分析企业 SSO 单点登录 ``` 1. 选择过滤:「排除静态资源」 2. 访问 SSO 登录页 3. 输入账号密码登录 4. 观察请求列表中的 auth/login/sso/token 相关请求 5. 查看「认证」标签页提取的 Token 6. AI 分析获取完整的 SSO 流程和爬虫建议 ``` ### 场景二:分析前端加密参数 ``` 1. 选择过滤:「捕获所有(不排除)」(需要捕获 JS 文件) 2. 操作目标网站,触发加密请求 3. 双击加密请求,查看「认证分析」标签页的加密字段检测 4. 双击相关的 .js 文件,查看「JS 源码」标签页中高亮的加密代码 5. 使用「对比请求」分析参数变化规律 6. AI 分析获取加密逻辑和爬虫代码 ``` ### 场景三:追踪多系统跳转链路 ``` 1. 选择过滤:「仅 HTML 页面」或「仅认证相关」 2. 从入口系统开始操作(如 HR 系统) 3. 依次跳转到其他系统(OA、采购等) 4. 查看「链路」标签页的跳转关系 5. AI 分析获取完整的跳转链路和参数传递关系 ``` ## 工具栏功能说明 | 按钮 | 功能 | |------|------| | 录制中 / 继续录制 | 暂停/恢复请求捕获(暂停期间的请求会在恢复后补录) | | 清除 | 清空所有已捕获的请求 | | 过滤下拉框 | 选择预设过滤方案 | | 应用 | 应用自定义过滤表达式 | | 对比请求 | 对比同一 URL 的多次请求,分析参数变化 | | 导出日志 | 导出为 JSON 格式 | | AI 配置 | 配置 AI 接口(API Key / Base URL / Model) | ## 浏览器控制区 | 按钮 | 功能 | |------|------| | ◀ ▶ | 前进/后退 | | ↻ | 刷新页面 | | ⌂ | 回到空白页 | | 地址栏 + → | 手动输入 URL 导航 | | 截图预览 | 截取当前页面截图显示在左侧面板 | | 重置视图 | 清除截图,恢复初始提示界面 | ## AI 分析配置 点击工具栏的 **「AI 配置」** 按钮,填写以下信息: | 字段 | 说明 | 示例 | |------|------|------| | API Key | OpenAI 兼容接口的密钥 | `sk-xxxx...` | | Base URL | API 接口地址(不带 /v1) | `https://api.openai.com/v1` | | Model | 使用的模型名称 | `gpt-4` / `deepseek-chat` | 配置会自动保存到 `~/.browserflow/ai_config.json`,下次启动自动加载。 支持所有 OpenAI 兼容接口: - OpenAI(GPT-4 / GPT-3.5-turbo) - Deepseek(deepseek-chat / deepseek-coder) - 通义千问(qwen-turbo / qwen-plus) - 文心一言(ernie-bot) - 其他兼容 OpenAI API 格式的服务 点击 **「获取模型列表」** 可自动拉取可用模型。 ## 日志文件 应用运行日志保存在:`~/.browserflow/logs/browserflow.log` - 自动轮转,单文件最大 5MB,保留 3 个备份 - 错误日志单独保存:`~/.browserflow/logs/browserflow_error.log` - 状态栏左下角可点击复制日志路径 ## 技术栈 - Python 3.10+ - Playwright - 浏览器自动化与请求拦截 - tkinter - GUI 框架(Python 内置) - Pillow - 页面截图处理 - requests - AI 接口调用 ## 目录结构 ``` crawler-tool/ ├── main.py # 程序入口(自动选择 PyQt6/tkinter) ├── main_tkinter.py # tkinter 主界面(多线程架构) ├── setup.py # 一键安装与启动(双击运行) ├── setup.sh # 一键安装启动(macOS/Linux) ├── build.py # PyInstaller 打包脚本 ├── build.sh # 一键打包(macOS/Linux) ├── requirements.txt # 依赖列表 ├── core/ # 核心逻辑 │ ├── browser.py # Playwright 浏览器管理(Chromium 安装检测) │ ├── browser_worker.py # 浏览器工作线程(独立线程管理生命周期) │ ├── interceptor.py # 请求拦截与过滤(route 拦截,解决 chunked 编码问题) │ ├── analyzer.py # 认证参数分析 + 加密字段检测 + 参数差异对比 │ ├── link_tracker.py # 链路追踪 │ ├── ai_client.py # AI 客户端(OpenAI 兼容接口,配置持久化) │ ├── logger.py # 统一日志管理(控制台 + 文件轮转) │ └── message_queue.py # 线程安全消息队列 ├── utils/ │ └── export.py # 日志导出(JSON / HAR 1.2 / cURL / Python) ├── tools/ │ └── crawler_analyzer.py # 爬虫分析工具 ├── docs/ │ └── tutorial.html # 使用教程 └── data/ └── logs/ # 导出日志目录 ``` ## 许可证 MIT License