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

如何携带自定义数据发送POST请求并解决请求无效问题

问题排查与解决方法

1. 先验证自定义数据是否真的被发送

先打印请求的实际发送内容,确认参数是否正确传递:

import requests

# 保留原cookies、headers、params配置不变
data = {
    'condition': '',
    'order': '',
    'limit': '50',
    'page': '3',
    'pageChanged': 'false',
}

response = requests.post(
    'https://global-standard.org/find-suppliers-shops-and-inputs/certified-suppliers/database/search',
    params=params,
    cookies=cookies,
    headers=headers,
    data=data
)

# 打印发送的表单数据,确认参数是否正确
print("发送的表单数据:", response.request.body)
# 打印响应状态码和部分内容,判断服务器反馈
print("响应状态码:", response.status_code)
print("响应内容片段:", response.text[:500])

如果response.request.body显示limit=50&page=3...,说明数据已发送,问题出在服务器端校验;如果不是,检查代码是否存在变量覆盖的情况。

2. 检查会话与请求参数的时效性

  • 更新Cookie:原Cookie可能已过期,从浏览器开发者工具(F12)抓取最新的请求Cookie替换到代码中
  • 校验Referer参数:确保Referer中的total值与当前搜索的实际总条数匹配,部分网站会校验该参数
  • 补充隐藏参数:对比浏览器抓取的完整请求表单,看是否遗漏了网站自动生成的隐藏参数(如csrf_token)

3. 使用Session维护会话状态

很多网站要求先访问搜索页面建立会话,再发送AJAX请求,改用Session对象自动维护会话:

session = requests.Session()
# 先访问搜索结果页面,获取有效会话
session.get('https://global-standard.org/find-suppliers-shops-and-inputs/certified-suppliers/database/search_results?total=9461', headers=headers)

# 再发送POST请求
response = session.post(
    'https://global-standard.org/find-suppliers-shops-and-inputs/certified-suppliers/database/search',
    params=params,
    data=data
)

4. 确认Content-Type匹配

当前请求头设置的是application/x-www-form-urlencoded,requests.post的data参数默认符合该格式,若服务器实际接受JSON格式,需调整:

headers['Content-Type'] = 'application/json'
response = requests.post(
    'https://global-standard.org/find-suppliers-shops-and-inputs/certified-suppliers/database/search',
    params=params,
    cookies=cookies,
    headers=headers,
    json=data
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 06:18:19