当前位置: 首页 > news >正文

Selenium Wire 网络拦截实现方案

Selenium Wire 网络拦截实现方案

目标

在 Robot Framework 中集成 Selenium Wire,实现以下功能:

  1. 接管已经打开并登录的 Chrome 浏览器
    1. 在接管状态下执行页面操作(输入、点击等)
    1. 拦截和分析网络请求(特别是 API 请求)

实施步骤

1. 环境准备

文件: requirements.txt

  • 添加 selenium-wire>=5.1.0 依赖

    • 添加 mitmproxy>=9.0.0(Selenium Wire 的底层依赖)
      文件: config.yaml
  • 添加 Chrome 调试端口配置

    • 添加 Selenium Wire 代理配置选项

2. 创建 Selenium Wire 自定义库

文件: libraries/SeleniumWireLibrary.py(新建)

核心功能包括:

  • Attach To Browser: 连接到已打开的 Chrome 浏览器(通过 Remote Debugging)
    • Get All Requests: 获取所有网络请求列表
    • Get Requests By URL Pattern: 根据 URL 模式过滤请求
    • Wait For Request: 等待特定请求出现
    • Get Request Details: 获取请求详细信息(URL、Method、Headers、Body)
    • Get Response Details: 获取响应详细信息(Status Code、Headers、Body)
    • Clear Requests: 清除已记录的请求历史
    • Set Request Interceptor: 设置请求拦截器(修改请求)
    • Set Response Interceptor: 设置响应拦截器(修改响应)
      关键技术点:
from seleniumwire import webdriver
from selenium.webdriver.chrome.options import Optionsoptions = Options()
options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
driver = webdriver.Chrome(options=options)

3. 创建浏览器启动脚本

文件: start_chrome_debug.bat(新建)

  • Windows 批处理脚本,以调试模式启动 Chrome

    • 指定调试端口(默认 9222)
    • 指定用户数据目录以保持登录状态
      文件: start_chrome_debug.sh(新建)
  • Linux/Mac 版本的启动脚本

4. 创建示例测试用例

文件: testcases/selenium_wire_demo.robot(新建)

示例场景:

  • 手动启动 Chrome 并登录某个网站
    • 使用 Robot Framework 接管浏览器
    • 执行页面操作(输入文本、点击按钮)
    • 捕获并验证产生的 API 请求
    • 断言请求参数和响应数据

5. 更新资源文件

文件: resources/common.robot

  • 添加常用的 Selenium Wire 关键字封装
    • 创建统一的浏览器接管和清理流程

6. 创建实用工具关键字

SeleniumWireLibrary.py 中添加:

  • 请求日志格式化输出
    • JSON 响应体解析
    • 请求/响应保存到文件
    • 性能统计(请求耗时分析)

技术架构

Robot Framework Test↓SeleniumWireLibrary (自定义库)↓Selenium Wire (网络拦截层)↓Chrome (Remote Debugging 模式)↓目标网站```
## 使用流程1. **启动调试模式浏览器**:运行 `start_chrome_debug.bat`
2. 2. **手动登录**:在打开的浏览器中访问网站并登录
3. 3. **运行测试**:执行 Robot Framework 测试用例
4. 4. **自动接管**:测试脚本自动连接到已打开的浏览器
5. 5. **执行操作**:进行页面交互和网络请求分析
## 注意事项- Chrome 调试模式只能被一个客户端连接,测试期间不要关闭浏览器
- - HTTPS 网站首次访问可能需要信任 Selenium Wire 的证书
- - 网络请求会持续累积,建议定期调用 `Clear Requests` 清理
- - 某些网站可能检测代理,需要配置 `disable_capture` 选项排除特定域名
http://www.dtcms.com/a/549481.html

相关文章:

  • 无锡手机网站制作费用网页设计与网站建设在线考试
  • 【Qt】【1. 版本特性介绍】
  • pyside6的历史发展、Qt 介绍、PyQt 和 pyside6对比
  • 做没用的网站建立个网站
  • numpy的random函数总结
  • ⸢ 拾-Ⅱ⸥⤳ 威胁感知与响应建设方案:威胁运营威胁响应
  • Auto Dark Mode,一款Windows 自动深浅色切换工具
  • 惠民县建设网站信宜网站设计公司
  • 论文对应项目复现教程
  • 第165期 无需提示词的微调:Bonepoke 与系统姿态的隐藏调控旋钮
  • 口腔种植中叠腮技术的适应证与考量
  • 原码、反码、补码与正数、负数的运算关系介绍
  • ShimetaPi丨事件相机新版SDK发布:支持Python调用,可降低使用门槛
  • 计算机图形学:【Games101】学习笔记03——光栅化(三角形的离散化、深度测试与抗锯齿)
  • 如何掌握【Java】 IO/NIO设计模式?工厂/适配器/装饰器/观察者模式全解析
  • C# 中的空条件运算符(?.)与空合并运算符(??)详解
  • 福建人力资源建设网站房地产销售技巧
  • 佳木斯 网站建设网页版qq登录入口版qq账号登录界面
  • 基于django网站开发课设报告广州开公司的基本流程及费用
  • VecDeque 的环形缓冲区:从 `head/tail` 到 `wrapping_add`,一次把缓存、SIMD 与 `no_std` 全部打通
  • EasyGBS在智慧仓储物流场景下视频实时监控系统应用方案
  • 网站建设分哪几种医院网站做竞价需要注意广告法
  • 数据分析平台:驱动智能决策的利器
  • 初识Java-7
  • 潍坊比较大的网站制作公司网站建设和网页制作
  • Postman vs Swagger vs PostIn,接口管理工具一文纵评
  • 如何使用React和Redux构建现代化Web应用程序
  • 湖北省住房和城乡建设厅网站首页wordpress自动刷新2次
  • 网站建设的设计方案和实施计划网站做优化效果怎么样
  • AWS + WordPress:中小型外贸独立站的理想组合