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

如何在Selenium Python3中等待并捕获含/b/ss/的网络请求?

解决Selenium捕获指定请求头网络调用的问题

你用的wait_for_request不是原生Selenium的方法,这个功能依赖Selenium Wire(扩展Selenium的第三方库,专门用于拦截、查看网络请求),而且你的代码只匹配了请求路径为/b/ss/的请求,和你要捕获「请求头包含b/ss」的需求不匹配,这是没达到预期的核心原因。

修复步骤

1. 安装Selenium Wire

先确保安装该库:

pip install selenium-wire

2. 修改代码逻辑

用Selenium Wire的Driver替换原生Selenium Driver,通过回调或遍历的方式筛选请求头包含b/ss的请求。

方式一:等待并捕获第一个符合条件的请求

from seleniumwire import webdriver
from validator.Validation import valid_url  # 注意你代码里的`validatior`是拼写错误,需修正

url = valid_url(input("Please enter the website url : "))
# 初始化Selenium Wire的Chrome Driver,其他浏览器同理
driver = webdriver.Chrome()

driver.get(url)

# 定义判断规则:检查请求头的键或值是否包含"b/ss"
def match_request(request):
    for key, value in request.headers.items():
        if "b/ss" in str(value) or "b/ss" in key:
            return True
    return False

# 等待30秒,直到找到符合条件的请求
target_request = driver.wait_for_request(match_request, timeout=30)
print("捕获到的目标请求:", target_request.url)

方式二:捕获所有符合条件的请求

如果需要获取页面加载过程中所有匹配的请求,可在加载完成后遍历筛选:

from seleniumwire import webdriver
from validator.Validation import valid_url

url = valid_url(input("Please enter the website url : "))
driver = webdriver.Chrome()

driver.get(url)

# 遍历所有请求,筛选符合条件的条目
matched_requests = []
for request in driver.requests:
    for key, value in request.headers.items():
        if "b/ss" in str(value) or "b/ss" in key:
            matched_requests.append(request)
            break  # 避免同一请求重复加入

print(f"共捕获到{len(matched_requests)}个符合条件的请求")
for req in matched_requests:
    print(req.url)

注意事项

  • 修正代码里validatior的拼写错误为validator,否则会触发导入异常。
  • 若目标请求是页面加载完成后异步发起的,可结合Selenium的WebDriverWait等待关键元素加载完成后再筛选请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 16:42:09