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

如何通过Selenium获取Chrome DevTools网络标签页的XHR/重定向信息?

用Selenium控制Chrome DevTools切换到Network标签并抓取XHR/重定向信息

要实现切换到DevTools的Network标签并捕获XHR、重定向信息,仅靠--auto-open-devtools-for-tabs参数不够,需要结合Chrome DevTools Protocol (CDP) 来控制DevTools面板并监听网络请求。以下是具体实现方案:

核心步骤

  1. 自动打开DevTools并切换到Network标签
  2. 启用网络请求捕获
  3. 监听网络事件,筛选XHR和重定向请求

完整代码示例

from selenium import webdriver
import time

# 配置Chrome选项
chrome_options = webdriver.ChromeOptions()
# 自动为每个标签打开DevTools
chrome_options.add_argument("--auto-open-devtools-for-tabs")
# 可选:禁用缓存,确保捕获完整请求
chrome_options.add_argument("--disable-cache")

driver = webdriver.Chrome(options=chrome_options)

# 启用DevTools网络监控
driver.execute_cdp_cmd("Network.enable", {})

# 切换DevTools到Network标签
driver.execute_cdp_cmd("DevTools.switchToPanel", {"panelName": "network"})

# 存储捕获到的请求信息
captured_requests = []

# 监听网络请求发送与响应事件,筛选目标请求
def capture_requests(event_data):
    request = event_data["request"]
    response = event_data.get("response")
    
    # 判断是否为XHR请求
    is_xhr = request["resourceType"] == "XHR"
    # 判断是否为重定向请求(状态码3xx)
    is_redirect = response and 300 <= response["status"] < 400
    
    if is_xhr or is_redirect:
        captured_requests.append({
            "url": request["url"],
            "type": "XHR" if is_xhr else "Redirect",
            "status_code": response["status"] if response else None,
            "redirect_from": request.get("redirectedFrom")
        })

# 添加CDP事件监听(需Selenium 4+版本支持)
driver.add_cdp_listener("Network.requestWillBeSent", capture_requests)
driver.add_cdp_listener("Network.responseReceived", capture_requests)

# 访问目标页面
driver.get("https://google.com/")
# 等待页面加载完成,确保捕获所有请求
time.sleep(5)

# 打印捕获到的XHR和重定向信息
print("捕获到的XHR/重定向请求:")
for req in captured_requests:
    print(f"类型: {req['type']}, URL: {req['url']}, 状态码: {req['status_code']}, 来源: {req['redirect_from']}")

# 关闭浏览器
driver.quit()

关键代码说明

  • DevTools.switchToPanel: 通过CDP命令直接切换DevTools到指定面板,network对应Network标签
  • Network.enable: 启用网络请求捕获,让DevTools开始记录所有网络活动
  • Network.requestWillBeSent/Network.responseReceived: 监听这两个事件可获取请求发送和响应接收的完整信息,以此筛选XHR和重定向请求
  • 筛选逻辑:
    • XHR请求通过resourceType == "XHR"判断
    • 重定向请求通过响应状态码3xx(300-399)判断,同时可通过redirectedFrom获取重定向来源URL

注意事项

  • 必须使用Selenium 4及以上版本,低版本不支持add_cdp_listener方法
  • time.sleep的时长可根据目标页面加载速度调整,也可改用显式等待(如WebDriverWait)替代固定等待

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 09:34:59