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

如何用Selenium获取页面调用REST API的Bearer Token请求头?

使用Selenium获取API请求头中的Bearer Token

核心思路

通过Selenium结合Chrome DevTools Protocol(CDP)监听网站的网络请求,捕获目标API的请求头,从中提取Authorization字段里的Bearer Token。

具体实现步骤(Python示例)

  1. 初始化带CDP支持的ChromeDriver
    启动浏览器时启用Network域,用于监听网络请求:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
# 可选:无头模式,适合后台运行
# chrome_options.add_argument("--headless=new")

driver = webdriver.Chrome(options=chrome_options)
# 启用Network域
driver.execute_cdp_cmd("Network.enable", {})
  1. 监听网络请求并提取Token
    注册Network.requestWillBeSent事件的回调,过滤目标API请求,提取Authorization头:
token = None

def capture_token(request_data):
    global token
    # 替换成你要监听的目标API的URL特征(比如包含"/showtimes"等关键词)
    target_api_keyword = "/api/v1/showtimes"
    if target_api_keyword in request_data["request"]["url"]:
        headers = request_data["request"]["headers"]
        if "Authorization" in headers:
            auth_header = headers["Authorization"]
            if auth_header.startswith("Bearer "):
                token = auth_header.split("Bearer ")[1]
                # 拿到Token后可以停止监听
                driver.execute_cdp_cmd("Network.disable", {})

# 绑定回调函数
driver.add_cdp_listener("Network.requestWillBeSent", capture_token)

# 访问目标网站,触发API请求
driver.get("https://目标影院网站地址.com")

# 等待Token被捕获(可以根据实际情况加显式等待)
while token is None:
    pass

print(f"获取到的Bearer Token: {token}")

# 关闭浏览器
driver.quit()
  1. 注意事项
  • 替换代码中的target_api_keyword和目标网站地址为实际值,确保只监听你需要的API请求,避免无效捕获。
  • Token每几小时过期,需要定期重新运行脚本获取新Token,或者在脚本中加入过期检测逻辑,自动重新获取。
  • 如果网站有加载延迟,建议使用Selenium的显式等待(WebDriverWait)代替while循环,避免无效等待。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 09:30:57