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

如何用Python Selenium提取DevTools网络请求的Payload数据?

可行,以下是两种常用实现方案

方案一:使用Selenium 4+原生DevTools API(推荐)

Selenium 4及以上版本内置了Chrome DevTools Protocol(CDP)支持,可直接监听并提取网络请求的Payload,无需额外依赖。

步骤代码示例

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import json
from urllib.parse import parse_qs

# 初始化Chrome浏览器(需对应版本的chromedriver)
service = Service('chromedriver的本地路径')
driver = webdriver.Chrome(service=service)
driver.maximize_window()

# 启用网络监听
driver.execute_cdp_cmd('Network.enable', {})

# 用于存储捕获到的登录Payload
login_payload = None

def capture_login_request(params):
    global login_payload
    request = params['request']
    # 精准匹配login请求(根据实际请求URL调整过滤规则)
    if '/login' in request['url'] and request['method'] == 'POST':
        # 处理不同格式的Payload
        if 'postData' in request:
            try:
                # JSON格式Payload解析
                login_payload = json.loads(request['postData'])
            except json.JSONDecodeError:
                # 表单编码格式Payload解析
                login_payload = parse_qs(request['postData'])

# 注册请求监听回调
driver.execute_cdp_cmd('Network.requestWillBeSent', {}, lambda params: capture_login_request(params))

# 执行登录流程
driver.get('https://app.opulabs.com/login')

# 输入账号密码(元素定位需根据网站实际结构调整)
email_input = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, 'email')))
password_input = driver.find_element(By.ID, 'password')
email_input.send_keys('你的登录邮箱')
password_input.send_keys('你的登录密码')

# 点击「继续」按钮
continue_btn = driver.find_element(By.XPATH, '//button[contains(text(), "继续")]')
continue_btn.click()

# 等待Payload捕获完成
WebDriverWait(driver, 10).until(lambda d: login_payload is not None)

# 输出提取到的凭证
print("捕获到的登录Payload:", login_payload)
print("邮箱:", login_payload.get('email'))
print("密码:", login_payload.get('password'))

# 清理资源
driver.quit()

注意事项

  • 确保chromedriver版本与本地Chrome浏览器版本一致
  • 调整请求URL的过滤规则,避免误捕获其他请求
  • 元素定位(ID、XPATH等)需对应目标网站的实际HTML结构

方案二:使用代理工具拦截请求(兼容旧版Selenium)

如果使用Selenium 3及以下版本,可通过代理工具(如mitmproxy)拦截所有网络请求,从中提取login请求的Payload。核心思路是将浏览器代理指向mitmproxy,在代理脚本中监听并解析指定请求。

核心逻辑

  1. 启动mitmproxy并编写脚本捕获POST请求
  2. 配置Selenium浏览器使用mitmproxy代理
  3. 执行登录流程后,从代理脚本中提取Payload

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 04:42:05