You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Selenium 4 Chrome DevTools(Java)获取网络请求Payload

使用Selenium 4 Chrome DevTools获取网络请求Payload(Java版)

前置要求

  • Selenium Java版本 ≥ 4.0
  • ChromeDriver版本与本地Chrome浏览器版本严格匹配
  • Maven项目已配置Selenium依赖

Maven依赖配置

在pom.xml中添加以下依赖:

<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>4.15.0</version> <!-- 替换为最新稳定版 -->
</dependency>
<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-devtools-v119</artifactId> <!-- 版本需对应Chrome浏览器大版本,比如Chrome 119就用v119 -->
    <version>4.15.0</version>
</dependency>

核心实现代码

以下是完整的示例代码,演示如何监听并获取网络请求的Payload:

import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.devtools.DevTools;
import org.openqa.selenium.devtools.v119.network.Network;
import org.openqa.selenium.devtools.v119.network.model.Request;
import java.util.Optional;

public class NetworkPayloadCapture {
    public static void main(String[] args) {
        // 初始化ChromeDriver
        ChromeDriver driver = new ChromeDriver();
        
        // 获取DevTools实例并创建会话
        DevTools devTools = driver.getDevTools();
        devTools.createSession();
        
        // 启用Network域,开启网络监听
        devTools.send(Network.enable(Optional.empty(), Optional.empty(), Optional.empty()));
        
        // 监听请求发送事件,捕获Payload
        devTools.addListener(Network.requestWillBeSent(), requestEvent -> {
            Request request = requestEvent.getRequest();
            String url = request.getUrl();
            
            // 过滤目标请求(替换为你的目标接口路径)
            if (url.contains("your-target-api")) {
                String payload = request.getPostData();
                if (payload != null) {
                    System.out.println("目标请求URL: " + url);
                    System.out.println("请求Payload内容: " + payload);
                    
                    // 若为JSON格式,可自行添加解析逻辑
                    // ObjectMapper objectMapper = new ObjectMapper();
                    // JsonNode jsonPayload = objectMapper.readTree(payload);
                }
            }
        });
        
        // 执行触发网络请求的操作(比如打开目标页面)
        driver.get("https://your-target-site.com");
        
        // 等待请求完成(按需调整等待时间)
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        
        // 关闭资源
        driver.quit();
    }
}

关键说明

  • Network.enable():必须先启用Network域,才能监听各类网络事件
  • Network.requestWillBeSent():该事件在请求即将发送时触发,包含完整的请求元数据
  • request.getPostData():直接获取文本格式的请求Payload,仅适用于POST/PUT等带请求体的请求
  • 若Payload为二进制格式,可使用request.getPostDataBytes()获取字节数组处理
  • 通过request.getUrl()过滤请求,避免捕获无关的网络请求

内容的提问来源于stack exchange,提问作者Lingam Praveen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 11:55:26