吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 284|回复: 5
收起左侧

[经验求助] 请教一个关于python发送http请求的问题

[复制链接]
szwangbin001 发表于 2024-7-26 09:51
100吾爱币
本帖最后由 szwangbin001 于 2024-7-26 10:03 编辑

我有个http请求,我用apifox和reqable发送都是能正常发的,但是用python的request库去发送服务器返回的消息就异常了,实在找不到问题在哪,麻烦大佬帮忙看看
[Python] 纯文本查看 复制代码
import requests

url = "https://gateway.36dianping.com/api/qus/verifycode/web/mobile?sign=9d1c3fa450c67f8ee9a356330ba35c83"

payload = {
  "param": {
    "countryCode": "86",
    "mobileNo": "ZLNNicobQe4RGnvwrxXbZB+Ilt9XoLeU9uvhS7XY3HblQD8jiM5iBztDsdmNoruc7jvD06SNKi7IJtMJ0kpdAu+KMCf+ylmQ2nYVfkyqGdVxwcR7RIrvoFa4IKwwxm7KumqhlhmRJLweRCNce0O6YgrtAAs8bmw/Q3o/KEHllcs=",
    "verifyCodeType": 1
  },
  "partner_id": "dian-ping-web"
}

headers = {
  '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",
  'Content-Type': "application/json"
}

response = requests.post(url,json=payload, headers=headers)
print(response.status_code)
print(response.text)

[Python] 纯文本查看 复制代码
PS C:\Users\vdesk\Desktop\123> & C:/Python/python.exe c:/Users/vdesk/Desktop/123/test2.py
200
{"msg":"签名错误,服务端待签名字符串:{\"param\": {\"countryCode\": \"86\", \"mobileNo\": \"ZLNNicobQe4RGnvwrxXbZB+Ilt9XoLeU9uvhS7XY3HblQD8jiM5iBztDsdmNoruc7jvD06SNKi7IJtMJ0kpdAu+KMCf+ylmQ2n
YVfkyqGdVxwcR7RIrvoFa4IKwwxm7KumqhlhmRJLweRCNce0O6YgrtAAs8bmw/Q3o/KEHllcs=\", \"verifyCodeType\": 1}, \"partner_id\": \"dian-ping-web\"}","code":1}


最佳答案

查看完整内容

[mw_shl_code=python,true]import json import requests url = "https://gateway.36dianping.com/api/qus/verifycode/web/mobile?sign=9d1c3fa450c67f8ee9a356330ba35c83" payload = { "param": { "countryCode": "86", "mobileNo": "ZLNNicobQe4RGnvwrxXbZB+Ilt9XoLeU9uvhS7XY3HblQD8jiM5iBztDsdmNoruc7jvD06SNKi7IJtMJ0kpdAu+KMCf+ylmQ2nYVfkyqGdVxwcR7RIrvoFa4IKwwxm7KumqhlhmRJLweRCNce0O6Ygr ...

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Arcticlyc 发表于 2024-7-26 09:51
[Python] 纯文本查看 复制代码
import json

import requests

url = "https://gateway.36dianping.com/api/qus/verifycode/web/mobile?sign=9d1c3fa450c67f8ee9a356330ba35c83"

payload = {
    "param": {
        "countryCode": "86",
        "mobileNo": "ZLNNicobQe4RGnvwrxXbZB+Ilt9XoLeU9uvhS7XY3HblQD8jiM5iBztDsdmNoruc7jvD06SNKi7IJtMJ0kpdAu+KMCf+ylmQ2nYVfkyqGdVxwcR7RIrvoFa4IKwwxm7KumqhlhmRJLweRCNce0O6YgrtAAs8bmw/Q3o/KEHllcs=",
        "verifyCodeType": 1,
    },
    "partner_id": "dian-ping-web",
}

headers = {
    "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",
    "Content-Type": "application/json",
}

response = requests.post(
    url, data=json.dumps(payload, separators=(",", ":")), headers=headers
)
print(response.status_code)
print(response.text)
 楼主| szwangbin001 发表于 2024-7-26 10:51
Arcticlyc 发表于 2024-7-26 10:20
[mw_shl_code=python,true]import json

import requests

大佬牛的,我查了半天没查出问题,还是能力不行啊
algy5 发表于 2024-7-26 10:59
你这个报错是说,服务器端提示签名错误。这可能是由于请求中的签名参数不正确导致的。也就是说sign=9d1c3fa450c67f8ee9a356330ba35c83你这段有问题啊。
algy5 发表于 2024-7-26 11:12
algy5 发表于 2024-7-26 10:59
你这个报错是说,服务器端提示签名错误。这可能是由于请求中的签名参数不正确导致的。也就是说sign=9d1c3fa ...

不对我没看代码了,上面那个大佬已经解决了,哈哈哈,发送请求时显式地将 payload 转换为了 JSON 格式,并且使用了指定的分隔符。这样做确保了生成的 JSON 字符串与 API 预期的格式完全一致。就可以了。
 楼主| szwangbin001 发表于 2024-7-26 11:52
algy5 发表于 2024-7-26 11:12
不对我没看代码了,上面那个大佬已经解决了,哈哈哈,发送请求时显式地将 payload 转换为了 JSO ...

嗯 去掉请求数据里的空格就行了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-12 08:38

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表