Python发送POST请求模拟JavaScript fetch调用

学习笔记作者:admin日期:2025-09-05点击:35

摘要:本文介绍了如何使用Python的requests库模拟JavaScript中fetch函数发送POST请求,包括请求头设置、数据格式处理及调试方法。

概述

      本文介绍了如何使用Python的requests库实现与JavaScript中fetch函数等效的POST请求。通过分析提供的JavaScript代码,将请求参数、请求头和请求体转换为Python代码,并提供完整的示例。

请求结构分析

      原始JavaScript请求包含以下关键部分:

  • URL: https://api.jdjygold.com/gw/generic/jimu/h5/m/homeFeedFlow
  • Headers: 包含多个HTTP头部信息,如accept、cookie、Referer等。
  • Body: 使用application/x-www-form-urlencoded编码的数据,其中reqData是一个经过URL编码的JSON字符串。
  • Method: POST

Python实现

import requests

url = "https://api.jdjygold.com/gw/generic/jimu/h5/m/homeFeedFlow"

headers = {
    "accept": "application/json, text/plain, */*",
    "accept-language": "zh-CN,zh;q=0.9,en;q=0.8,be;q=0.7,ja;q=0.6",
    "cache-control": "no-cache",
    "content-type": "application/x-www-form-urlencoded;charset=UTF-8",
    "pragma": "no-cache",
    "priority": "u=1, i",
    "sec-ch-ua": "\"Not;A=Brand\";v=\"99\", \"Google Chrome\";v=\"139\", \"Chromium\";v=\"139\"",
    "sec-ch-ua-mobile": "?0",
    "sec-ch-ua-platform": "\"Windows\"",
    "sec-fetch-dest": "empty",
    "sec-fetch-mode": "cors",
    "sec-fetch-site": "same-site",
    "cookie": "pt1",
    "referer": "https://m.jdjygold.com/"
}

data = {
    "reqData": '{"lastId":"{\"community\":\"2025090316024035059414\"}","tagId":"20225","invokeSource":"lego"}'
}

response = requests.post(url, headers=headers, data=data)

print("Status Code:", response.status_code)
print("Response Body:", response.text)

说明

  • URL解码: 原始请求中的reqData是URL编码过的,解码后为一个JSON字符串。
  • Content-Type: 设置为application/x-www-form-urlencoded,用于表单提交。
  • Cookie: 示例中使用的是"pt1",需根据实际情况替换。
  • Referer: 修正了URL中的多余空格问题。

安装依赖

pip install requests

调试建议

print("Request Headers:", response.request.headers)
print("Request Body:", response.request.body)

注意事项

      如果需要携带登录状态或进行更复杂的会话管理,可以考虑使用requests.Session()。

上一篇      下一篇