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()。