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

如何自动获取Python requests发POST请求时频繁变动的authorization token

自动获取动态Bearer Token的可行方案
  • 方案1:模拟登录接口直接获取Token
    大部分场景下Bearer Token是账号登录后由后端登录接口返回的,你可以先抓取登录请求的参数和地址,先调用登录接口拿到有效Token,再代入到后续的业务请求头中即可,修改后的代码参考结构如下:
import requests
import json

# 先请求登录接口获取Token
login_url = "你抓取到的网站登录接口地址"
login_data = {
    "username": "你的账号",
    "password": "你的密码",
    # 其他登录所需参数,可从Chrome DevTools的登录请求详情里提取
}
login_resp = requests.post(login_url, json=login_data)
# 此处json取值路径根据登录接口实际返回的结构调整
token = login_resp.json()["data"]["access_token"]

# 发起目标业务请求
url = "..."
payload = {...}
headers = {
    ...,
    "Authorization": f"Bearer {token}",
    ...
}
response = requests.post(url, json=payload, headers=headers)
  • 方案2:用浏览器自动化工具提取Token
    如果登录环节有验证码、滑块、设备指纹等反爬逻辑,无法直接模拟登录的话,可以用Selenium、Playwright这类工具控制浏览器完成登录操作,直接从浏览器的本地存储、Cookie或接口响应中提取Token,无需手动抓包。
    Playwright实现参考:
from playwright.sync_api import sync_playwright
import requests

current_token = ""
with sync_playwright() as p:
    # 启动浏览器,headless设为True可后台运行
    browser = p.chromium.launch(headless=False)
    page = browser.new_page()
    # 监听接口响应,匹配返回Token的登录接口
    def catch_token(response):
        global current_token
        if "login" in response.url and response.ok:
            resp_data = response.json()
            # 取值路径按实际接口返回调整
            current_token = resp_data.get("data", {}).get("token", "")
    page.on("response", catch_token)
    page.goto("网站登录页面地址")
    # 自动填充账号密码完成登录
    page.fill('input[name="username"]', "你的账号")
    page.fill('input[name="password"]', "你的密码")
    page.click('button[type="submit"]')
    page.wait_for_timeout(3000)
    browser.close()

# 后续业务请求逻辑和之前一致
  • 方案3:复用Cookie绕过单独传Token
    如果网站会把登录态存在Cookie中,也可以直接复制登录后的完整Cookie放到请求头里,不需要单独提取Authorization头,只要Cookie未过期就能正常发起请求,仅需定期更新Cookie即可。

注意:操作前请确认对应网站的服务使用条款,避免违规导致账号被限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 13:15:01