python 爬虫post 时候query parameter确定不了

网页链接 http://221.214.94.51:8081/icity/ipro/projectlist
需要在"项目名称"输入名称后查询
利用控制台获得以下链接:
http://221.214.94.51:8081/icity/api-v2/app.icity.ipro.IproCmd/getSPListByPage?s=d916191636204714395&t=5248_d11111_1636209135000
parameter s和t的值不能确定,好像是在http://221.214.94.51:8081/icity/ipro/projectlist/

s签名参数在下面这个网址的源代码里面,同时访问这个网址还会生成一个ICITYSession Cookie。t参数主要第二个的计算,通过sig签名计算得到

img

http://221.214.94.51:8081/icity/ipro/projectlist

而且题主的接口搞错了,应该是

http://221.214.94.51:8081/icity/api-v2/app.icity.ipro.IproCmd/getProjectList?s=xxxx&t=xxxx

代码如下

img

import requests
import json
import time
import random

def getTParam(sig):
    chars = "0123456789abcdef"
    key=""
    keyIndex=-1
    for i in range(6):
        c=sig[keyIndex+1]
        key+=c
        keyIndex=chars.find(c)
        if keyIndex<0 or keyIndex>=len(sig):
            keyIndex=i
    #主要是 key计算,第一个数字是随机生成的,第3个数字为时间戳
    return str(random.randint(1000,10000))+"_"+key+"_"+str(int(time.time()) * 1000)

headers={
    'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36',
    'Cookie':''
}
referrurl="http://221.214.94.51:8081/icity/ipro/projectlist"
res=requests.get(referrurl)
cookies=requests.utils.dict_from_cookiejar(res.cookies)
headers['Cookie']='ICITYSession='+cookies['ICITYSession']
sig=res.text
starts='var __signature = "'
startindex=sig.find(starts)+len(starts)
endindex=sig.find('"',startindex)
sig=sig[startindex:endindex]#得到签名



url="http://221.214.94.51:8081/icity/api-v2/app.icity.ipro.IproCmd/getProjectList?s="+sig+'&t='+getTParam(sig)

headers['Referer']=referrurl
headers['X-Requested-With']='XMLHttpRequest'
headers['Content-Type']='application/json'
#post发送的数据
payloadData={"projectcode":"",
             "projectname":"",
             "contractor":"",
             "projecttype":"",
             "page":1,
             "limit":10}


req=requests.post(url,headers=headers, data=json.dumps(payloadData))

data=req.json()

print(data)

有帮助麻烦点下【采纳该答案】,谢谢~~