如何使用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
相关产品推荐
相关产品推荐

