|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
这两天爬取一个机票查询的网站 发现python已经和浏览器的请求基本一致了,在最后一步获取关键的机票json数据时,提示The session has expired
不知道哪里出错了,各位有空可以一起找找问题所在
代码不长,可以看看
session_url = 'https://www.igola.com/web-gateway/api-flight-polling-data-hub/create-session'
polling_url = 'https://www.igola.com/web-gateway/api-flight-polling-data-hub/packagedPolling'
# t = datetime.now().timestamp()
# timestamp = 97 * t % 1000 + t * 1000
spayload = json.dumps({'lang': 'ZH',
'enableMagic': 'true',
'magicEnabled': 'true',
'adultAmount': 1,
'childAmount': 0,
'queryObj': {'cabinAlert': 'false',
'cabinType': 'Economy',
'isDomesticCabinType': 0,
'item': [{'date': '20190614',
'from': {'c': 'CAN', 't': 'C'},
'to': {'c': 'TPE', 't': 'C'}},
# {'date': returnDateCode,
# 'from': {'c': arrivalCode, 't': 'C'},
# 'to': {'c': departCode, 't': 'C'}}
],
'passengerInfo': [],
# 'tripType': 'RT'}}).replace(' ', '')
'tripType': 'OW'}}).replace(' ', '')
with requests.session() as s:
# sheaders
timestamp=str(int(time.time() * 1000))
s.headers = {'Accept': 'application/json, text/plain, */*',
# 'Accept-encoding': 'gzip, deflate, br',
'Accept-Language': 'ZH',
'authorization': 'null',
# 'connection': 'keep-alive',
# 'content-length': str(len(spayload)),
'Content-Type': 'application/json;charset=UTF-8',
'DNT': '1',
'guid': 'null',
'igola-client': 'pc',
'Origin': 'https://www.igola.com',
'Referer': 'https://www.igola.com/flights/timeline/ZH-CNY-1-OW-Economy-0-0?trip=can-tpe&date=2019-06-14',
'timestamp': timestamp,
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36',
}
print('请求头1:')
print(s.headers)
print('payload1:')
print(spayload)
sr = s.post(session_url, data=spayload,verify=False)
print('response头1:')
print(sr.headers)
resultCode = sr.json()['resultCode']
print(resultCode)
if resultCode != 200:
print('状态码1: %s' % resultCode)
return s.cookies, s.headers
sessionid = sr.json()['sessionId']
print(sessionid)
# packagedPolling请求
payload = json.dumps(
{"currency": "CNY",
"lang": "ZH",
"sorters": [{"sortType": "score", "sortOrder": "des", "voyage": 0}],
"filters": [],
"pageNumber": 1,
"pageSize": 30,
"sessionId": sessionid,
"needHiding": 'true'}
).replace(' ', '')
# s.headers['content-length'] = str(len(payload))
s.headers['Session-Id'] = sessionid
# s.headers['timestamp'] = str(int(time.time() * 1000))
# s.headers['authority'] = 'www.igola.com'
# s.headers['method'] ='POST'
# s.headers['path'] = '/web-gateway/api-flight-polling-data-hub/separatedPolling'
# s.headers['scheme'] ='https'
print('请求头2:')
print(s.headers)
print('payload2:')
print(payload)
r = s.post(polling_url, data=payload,verify=False)
print('response头2:')
print(r.text)
print(r.headers)
|
|