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

如何用Python的Selenium获取Ajax请求的特定响应头

获取Ajax请求响应头的解决方法

方法1:通过Chrome DevTools Protocol(CDP)监听网络请求

如果你用的是Selenium,可以直接借助CDP捕获所有网络请求的响应头,包括页面发起的Ajax请求。核心逻辑是启用Network域监听,在请求完成时筛选目标请求并提取响应头。

示例代码(Python):

from selenium import webdriver
import json

def capture_target_headers(driver):
    # 启用Network域监听
    driver.execute_cdp_cmd("Network.enable", {})
    
    target_headers = {}
    
    def response_handler(response):
        # 替换为你的目标Ajax请求URL特征(比如包含特定路径/关键词)
        if "ajax/your-target-api" in response["params"]["response"]["url"]:
            nonlocal target_headers
            target_headers = response["params"]["response"]["headers"]
            print("捕获到目标响应头:\n", json.dumps(target_headers, indent=2))
    
    # 绑定响应完成事件监听
    driver.add_cdp_listener("Network.responseReceived", response_handler)
    
    # 加载页面触发Ajax请求
    driver.get("你的目标页面URL")
    
    # 等待Ajax请求完成(可根据实际场景调整等待逻辑,比如显式等待元素)
    driver.implicitly_wait(10)
    
    # 关闭Network监听
    driver.execute_cdp_cmd("Network.disable", {})
    return target_headers

# 初始化Chrome驱动
chrome_options = webdriver.ChromeOptions()
driver = webdriver.Chrome(options=chrome_options)

# 获取目标响应头
target_headers = capture_target_headers(driver)

# 提取特定头字段示例
if target_headers:
    specific_header = target_headers.get("X-Your-Target-Header")
    if specific_header:
        print(f"\n提取到特定字段值:{specific_header}")

driver.quit()

方法2:用代理工具拦截请求(如mitmproxy)

如果不需要依赖浏览器自动化,可以用mitmproxy这类代理工具拦截所有HTTP/HTTPS请求,直接从响应中提取目标头。

示例mitmproxy脚本(mitm_script.py):

from mitmproxy import http

def response(flow: http.HTTPFlow) -> None:
    # 筛选目标Ajax请求
    if "ajax/your-target-api" in flow.request.url:
        target_headers = flow.response.headers
        print("目标响应头:", target_headers)
        # 提取特定字段
        specific_header = target_headers.get("X-Your-Target-Header")
        if specific_header:
            print(f"特定字段值:{specific_header}")

运行mitmproxy并加载脚本:

mitmproxy -s mitm_script.py

之后配置浏览器代理为127.0.0.1:8080,访问目标页面即可自动捕获Ajax请求的响应头。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 14:17:09