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

如何使用Python动态提取指定URL的Auth Bearer Token?

Python 动态获取 Bearer Token 解决方案

以下是可直接落地的实现方案,适配绝大多数场景:

方案1:通过官方Token接口动态拉取(最推荐)

大部分开放平台都会提供专门的鉴权接口用于获取Bearer Token,Token会附带有效期参数,你可以在代码中实现Token自动缓存、过期自动刷新的逻辑,示例代码如下:

import requests
import time

class BearerTokenManager:
    def __init__(self, token_api_url, auth_params):
        self.token_api_url = token_api_url
        self.auth_params = auth_params
        self.current_token = None
        self.expire_timestamp = 0  # Token到期时间戳,单位为秒

    def get_valid_token(self):
        # Token未过期直接复用,预留10秒缓冲避免临界值请求失败
        if self.current_token and time.time() < self.expire_timestamp - 10:
            return self.current_token
        # 过期重新请求新Token
        resp = requests.post(self.token_api_url, data=self.auth_params)
        resp.raise_for_status()
        token_data = resp.json()
        self.current_token = token_data["access_token"]
        self.expire_timestamp = time.time() + token_data["expires_in"]
        return self.current_token

调用业务GET API的示例:

# 初始化Token管理器,auth_params根据平台要求调整,常见为grant_type、client_id、client_secret等
token_mgr = BearerTokenManager(
    token_api_url="你的平台Token获取接口地址",
    auth_params={
        "grant_type": "client_credentials",
        "client_id": "你的平台客户端ID",
        "client_secret": "你的平台客户端密钥"
    }
)

def call_business_api(business_api_url, query_params=None):
    headers = {
        "Authorization": f"Bearer {token_mgr.get_valid_token()}"
    }
    resp = requests.get(business_api_url, headers=headers, params=query_params)
    # 若返回401直接刷新Token重试一次
    if resp.status_code == 401:
        headers["Authorization"] = f"Bearer {token_mgr.get_valid_token()}"
        resp = requests.get(business_api_url, headers=headers, params=query_params)
    resp.raise_for_status()
    return resp.json()

# 调用示例
if __name__ == "__main__":
    res = call_business_api("你的业务API地址", query_params={"page":1,"size":10})
    print(res)

方案2:无公开Token接口时模拟登录获取

如果Token是用户登录网页/客户端后生成的,没有官方开放的Token获取接口,可以通过抓包模拟登录流程获取:

  • 抓包拿到登录请求的地址、请求参数(账号、密码、加密规则、验证码等)
  • 代码中模拟发送登录请求,从响应体、响应头或者Cookie中提取Bearer Token
  • 复用方案1的缓存刷新逻辑,Token过期时重新走模拟登录流程即可

注意事项

  • 如果对接的是阿里云、腾讯云等公有云或者常见第三方服务,优先使用官方提供的Python SDK,SDK内部已经实现了Token的动态获取刷新,不需要手动实现
  • Token属于敏感信息,不要硬编码在代码中,建议从环境变量或者加密配置文件中读取
  • 部分平台的Token接口需要用Basic Auth鉴权,把client_id:client_secret做Base64编码后放到请求头的Authorization字段即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 08:54:01