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

如何为请求生成JWT?程序化模拟文件下载请求遇阻

程序化模拟动态JWT的文件下载请求方案

要解决这个动态JWT的下载问题,核心是模拟浏览器的完整会话流程,先获取有效JWT再发起下载请求,具体步骤如下:

核心思路

JWT是服务器基于当前会话生成的临时凭证,必须在同一个会话上下文内获取并使用。因此需要先建立会话、访问目标页面获取会话标识,再抓包定位JWT的生成接口,最后用获取到的JWT构造下载请求。

具体步骤

  • 初始化会话:用HTTP客户端(如Python requests、Node.js axios)创建带Cookie持久化的会话,确保和服务器保持同一个会话上下文。
  • 访问目标页面:请求你提供的文档页面,获取服务器设置的会话Cookie,同时解析页面内容,提取文件名称、接口标识等必要参数。
  • 抓包定位JWT接口:打开浏览器开发者工具(F12),切换到Network标签,勾选「Preserve log」,点击下载按钮,观察所有请求:
    • 找到返回JWT的接口(通常是XHR/Fetch请求,响应体包含jwt或token字段)
    • 记录该接口的请求URL、请求方式(GET/POST)和所需参数
  • 获取动态JWT:用同一个会话调用JWT生成接口,拿到有效JWT。
  • 构造下载请求:将JWT替换到下载URL的对应位置,用同一个会话发送GET请求,将响应内容保存为文件。

Python示例代码

import requests
from bs4 import BeautifulSoup

# 目标文档页面
target_page = "https://patentcenter.uspto.gov/applications/63199073/ifw/docs?application="
# 替换为实际的BASE_URL,从浏览器下载请求中提取
base_download_url = "https://patentcenter.uspto.gov/retrieve/"

# 初始化会话,保持Cookie
session = requests.Session()
# 设置浏览器UA,避免被拦截
session.headers.update({
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"
})

# 1. 访问目标页面,建立会话
response = session.get(target_page)
response.raise_for_status()

# 2. 解析页面获取文件名(示例,实际需根据页面结构调整)
soup = BeautifulSoup(response.text, "html.parser")
# 假设文件名在下载按钮的自定义属性中,需实际验证页面结构
download_btn = soup.find("button", {"class": "download-button"})
file_name = download_btn.get("data-file-name")

# 3. 调用JWT生成接口(需从抓包结果替换为真实接口)
jwt_res = session.get("https://patentcenter.uspto.gov/api/auth/generate-token")
jwt_res.raise_for_status()
jwt_token = jwt_res.json().get("jwt")

# 4. 构造下载请求并保存文件
download_url = f"{base_download_url}{file_name}&&directStream=true&JWT={jwt_token}"
download_res = session.get(download_url, stream=True)
download_res.raise_for_status()

with open(file_name, "wb") as f:
    for chunk in download_res.iter_content(chunk_size=8192):
        f.write(chunk)

注意事项

  • 必须全程使用同一个会话对象,否则服务器会认为是新请求,无法生成有效JWT。
  • 抓包时要仔细核对JWT接口的请求参数,部分接口可能需要携带页面返回的csrf token等参数。
  • 控制请求频率,避免触发站点的反爬机制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 01:17:03