配合selenium 使用的抓包工具推荐那个

当你在使用 Selenium 进行自动化测试时,抓包工具可以帮助你分析 Web 应用的 HTTP 请求、响应数据以及网络行为,以下是几款与 Selenium 配合使用的抓包工具推荐:

1. BrowserMob Proxy

  • 特点:BrowserMob Proxy 是一个支持 HTTP 流量代理的工具,专为 Web 自动化测试设计,支持 Selenium 集成。它能捕获 HTTP 请求和响应,还支持修改请求、添加请求头等操作。

  • 优点

    • 可以与 Selenium 无缝集成。
    • 支持流量重放和模拟慢速网络。
    • 提供 API 来操作代理。
  • 适用场景:适用于捕获和分析 Selenium 测试过程中发出的 HTTP 请求。

  • 集成方式

    javascript 复制代码
    python
    复制代码
    from browsermobproxy import Server
    from selenium import webdriver
    
    server = Server("path_to_browsermob_proxy")
    server.start()
    proxy = server.create_proxy()
    
    # 配置 Selenium 使用 BrowserMob Proxy
    capabilities = webdriver.DesiredCapabilities.CHROME
    capabilities['proxy'] = {
        "proxyType": "MANUAL",
        "httpProxy": proxy.proxy,
        "sslProxy": proxy.proxy
    }
    
    driver = webdriver.Chrome(desired_capabilities=capabilities)
    proxy.new_har("example")

2. Fiddler

  • 特点:Fiddler 是一款强大的 Web 调试代理工具,可以捕获 HTTP/HTTPS 流量。Fiddler 可以通过代理模式与 Selenium 集成,方便捕获并分析 Selenium 测试中的请求和响应。

  • 优点

    • 易于使用,界面友好。
    • 可以对请求进行编辑、修改。
    • 支持 HTTPS 解密。
  • 适用场景:适合用于 HTTP/HTTPS 流量的抓包与分析,尤其在进行 Web 开发和调试时。

  • 集成方式

    1. 启动 Fiddler 并配置代理。
    2. 在 Selenium 中配置浏览器使用 Fiddler 作为代理。
    python 复制代码
    python
    复制代码
    from selenium import webdriver
    
    options = webdriver.ChromeOptions()
    options.add_argument('--proxy-server=http://127.0.0.1:8888')  # Fiddler 默认代理端口
    driver = webdriver.Chrome(options=options)

3. mitmproxy

  • 特点:mitmproxy 是一个中间人代理,功能强大,支持流量捕获、修改和回放,可以与 Selenium 配合使用来抓取 HTTP/HTTPS 流量。

  • 优点

    • 支持命令行界面和脚本化操作。
    • 适合高级用户,有丰富的功能。
    • 支持 WebSocket 和 HTTP/2 等协议。
  • 适用场景:适合有编程经验的用户,用于复杂的抓包和流量分析。

  • 集成方式

    python 复制代码
    python
    复制代码
    from selenium import webdriver
    
    options = webdriver.ChromeOptions()
    options.add_argument('--proxy-server=http://127.0.0.1:8080')  # mitmproxy 默认端口
    driver = webdriver.Chrome(options=options)

4. Charles Proxy

  • 特点:Charles 是一个强大的 HTTP 代理工具,可以捕获和分析 HTTP 请求和响应。它也支持与 Selenium 集成,尤其适用于移动端自动化测试。

  • 优点

    • 支持 HTTPS 解密。
    • 易于使用,适合新手。
    • 提供丰富的分析工具。
  • 适用场景:适用于抓取和分析 Web 流量,尤其在调试和分析移动端请求时。

  • 集成方式

    1. 启动 Charles 并配置代理。
    2. 在 Selenium 中设置浏览器使用 Charles 作为代理。
    python 复制代码
    python
    复制代码
    from selenium import webdriver
    
    options = webdriver.ChromeOptions()
    options.add_argument('--proxy-server=http://127.0.0.1:8888')  # Charles 默认端口
    driver = webdriver.Chrome(options=options)

5. Selenium Wire

  • 特点:Selenium Wire 是一个扩展 Selenium 的 Python 库,提供了更简单的方式来捕获和修改 HTTP 请求和响应。它能捕获 WebDriver 会话中所有的网络流量,直接在 Python 中进行操作。

  • 优点

    • 可以轻松集成到 Selenium 脚本中。
    • 支持请求重放、修改和拦截。
    • 简单易用,适合开发者进行快速调试。
  • 适用场景:用于捕获 Selenium 测试中的 HTTP 流量,且不需要外部代理工具。

  • 集成方式

    python 复制代码
    python
    复制代码
    from seleniumwire import webdriver
    
    options = {
        'proxy': {
            'http': 'http://localhost:8080',
            'https': 'http://localhost:8080'
        }
    }
    driver = webdriver.Chrome(seleniumwire_options=options)
    
    # 获取请求数据
    for request in driver.requests:
        print(request.url)
        print(request.headers)

总结

  • BrowserMob ProxySelenium Wire 是与 Selenium 集成的最直接工具,尤其适合自动化测试和分析 HTTP 请求。
  • 如果你需要更强的 Web 流量调试功能,可以选择 FiddlerCharles,这两者也支持 HTTPS 解密。
  • mitmproxy 适合更高级的用户,尤其是需要更复杂的流量分析和修改时。

你可以根据你的需求选择合适的工具。如果你更关注与 Selenium 测试的紧密集成,Selenium WireBrowserMob Proxy 会是更好的选择。

4o

相关推荐
uzong3 小时前
技术故障复盘模版
后端
GetcharZp4 小时前
基于 Dify + 通义千问的多模态大模型 搭建发票识别 Agent
后端·llm·agent
桦说编程4 小时前
Java 中如何创建不可变类型
java·后端·函数式编程
IT毕设实战小研4 小时前
基于Spring Boot 4s店车辆管理系统 租车管理系统 停车位管理系统 智慧车辆管理系统
java·开发语言·spring boot·后端·spring·毕业设计·课程设计
wyiyiyi5 小时前
【Web后端】Django、flask及其场景——以构建系统原型为例
前端·数据库·后端·python·django·flask
阿华的代码王国6 小时前
【Android】RecyclerView复用CheckBox的异常状态
android·xml·java·前端·后端
Jimmy6 小时前
AI 代理是什么,其有助于我们实现更智能编程
前端·后端·ai编程
AntBlack6 小时前
不当韭菜V1.1 :增强能力 ,辅助构建自己的交易规则
后端·python·pyqt
bobz9657 小时前
pip install 已经不再安全
后端
寻月隐君7 小时前
硬核实战:从零到一,用 Rust 和 Axum 构建高性能聊天服务后端
后端·rust·github