Cainiao 裹裹 微信小程序 接口请求sign解密
本帖最后由 kwk99 于 2023-5-12 17:32 编辑需求: 菜鸟裹裹 的微信小程序端-查取寄件地址附近的全部服务点信息, 源于此需求,对菜鸟点API接口点sign做了一次分析,直接贴结论
"""菜鸟裹裹查单"""
'''
sign 加密方式 j = h(d.token + “&” + i + “&” + g + “&” + c.data)
d.token 为请求参数里 c 值去掉时间戳那部分,i为时间戳,g为固定参数即appKey ,data为请求body
如 c 为6a2d5d82ce974dd421126ffae77f7dad_1678092180335;6c4b4a5d2c2712b9c877df0e82794693 则 d.token 为6a2d5d82ce974dd421126ffae77f7dad
i 时间戳 1678171465000 ; g 为appKey 为 12574478
c.data 则为请求的 application/x-www-form-urlencoded 参数
h 使用的加密方式为 md5 32位加密
'''
接口实例如下
api = "服务接口地址"
##url参数
params = {
'jsv': self.jsv,##固定参数
'appKey': self.appKey,##固定参数,12574478
'api': 'mtop.cainiao.tdwxgateway.send.query.resources',
'v': '1.0',
'type': 'originaljson',
'dataType': 'json',
'_bx-m': '1'
}
##application/x-www-form-urlencoded
body = {"senderAreaId": senderAreaId, "senderAddress": senderAddress, "resourceTypeList": "6,2,5",
"extendedMapJson": "{}"}
payload = f"data={quote_plus(json.dumps(body, ensure_ascii=False, separators=(',', ':')))}"##注意此处一定要添加 separators=(',', ':') 去除多余的空格
json_resp = None
for _retry in range(5):
t = self.__get_timestamp()
c_token = self.c.split(';').split('_')
c_data = json.dumps(body, ensure_ascii=False, separators=(',', ':'))
enc_str = c_token + "&" + str(t) + "&" + self.appKey + "&" + c_data
sign = self.__get_sign(enc_str)##进行MD5 加密
params['t'] = t
params['sign'] = sign
params['c'] = self.c
proxies = tools.get_random_proxy()
try:
resp = requests.post(api, headers=self.headers, params=params, data=payload, timeout=15,
proxies=proxies)
if resp.status_code == 200:
json_resp = json.loads(resp.content.decode('utf-8'))
except Exception:
time.sleep(random.random())
continue
else:
break
return json_resp
新手发帖,大佬请忽略
能获取取件码不 Naraci 发表于 2023-5-12 22:41
能获取取件码不
取件码这个应该涉及到个人隐私了,建议不拿,理论上如果有接口,加密方式应该差不多
页:
[1]