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

如何使用SeleniumWire提取指定请求头canary的值

提取canary字段并添加到自定义请求头

步骤1:捕获请求并提取canary值

先启动浏览器访问目标页面,让SeleniumWire捕获所有请求,再遍历请求头查找canary字段:

from seleniumwire import webdriver

# 初始化浏览器驱动
driver = webdriver.Chrome()
# 访问目标页面触发请求捕获
driver.get("你的目标网页URL")

canary_value = None
# 遍历所有捕获的请求
for req in driver.requests:
    # 检查请求头中是否存在canary字段(注意大小写可能有差异,可根据实际调整)
    if 'canary' in req.headers:
        canary_value = req.headers['canary']
        break  # 找到第一个匹配项后停止遍历

# 输出提取结果
if canary_value:
    print(f"提取到canary值: {canary_value}")
else:
    print("未在请求头中找到canary字段")

如果canary字段的键是大写(比如Canary),可以用兼容大小写的方式检查:

for req in driver.requests:
    # 统一将请求头键转为小写,避免大小写问题
    lower_headers = {k.lower(): v for k, v in req.headers.items()}
    if 'canary' in lower_headers:
        canary_value = lower_headers['canary']
        break

步骤2:将canary添加到自定义请求头并发起请求

拿到canary_value后,构造自定义请求头,用SeleniumWire发起请求即可:

if canary_value:
    # 构造自定义请求头,加入canary字段
    custom_headers = {
        'canary': canary_value,
        # 可按需添加其他请求头,比如UA、Cookie等
        'User-Agent': driver.requests[0].headers.get('User-Agent', '')
    }

    # 发起自定义请求
    requestToWebsite = driver.request(
        method='GET',
        url='你要访问的目标URL',
        headers=custom_headers
    )

    # 打印请求头,此时就能看到canary字段
    print(requestToWebsite.request.headers)

注意事项

如果多个请求都包含canary字段,建议通过req.url过滤特定请求(比如只提取某个API接口的canary值):

for req in driver.requests:
    if '/api/target-path' in req.url and 'canary' in req.headers:
        canary_value = req.headers['canary']
        break

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 13:42:23