您的位置:首页 > 其它

payload数据传输,携程查机票接口

2019-08-07 10:54 148 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/weixin_44220464/article/details/98729997

网络报文中的payload

通常在传输数据时,为了使数据传输更可靠,要把原始数据分批传输,并且在每一批数据的头和尾都加上一定的辅助信息,比如数据量的大小、校验位等,这样就相当于给已经分批的原始数据加一些外套,这些外套起标示作用,使得原始数据不易丢失,一批数据加上“外套”就形成了传输通道的基本传输单元,叫做数据帧或数据包,而其中的原始数据就是payload

举例在爬虫中传输payload

第一种:

转为json,用data传输

第二种:

用requests中json参数直接传输

携程的查机票接口就是payload传输,主要逻辑,代码就粗糙点


经过观察,在Network中的XHR中得到接口,get中有英文格式,代号,可以获取到传到我们需要的product接口中。

接下来我们在product中找到url,构造请求,最后取到数据。

import requests

headers = {
'accept': '*/*',
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'zh-CN,zh;q=0.9',
'content-length': '268',
'content-type': 'application/json',
'cookie': 'Session=SmartLinkCode=U1543361&SmartLinkKeyWord=&SmartLinkQuary=&SmartLinkHost=&SmartLinkLanguage=zh; DomesticUserHostCity=BJS|%b1%b1%be%a9; _abtest_userid=4aeaedfe-384a-4883-bf4e-e28439246968; gad_city=96617ee7af8aedd02bbece8583e0066e; MKT_Pagesource=PC; Union=OUID=&AllianceID=5376&SID=1543361&SourceID=&Expires=1565692623194; _RF1=60.247.91.62; _RSG=x8KubZuzqa3arFYHDvMH2A; _RDG=285674425d1124281e30edbb24486f3343; _RGUID=3934f788-e5e1-423b-a091-5b935188fd64; _ga=GA1.2.1351728126.1565087872; _gid=GA1.2.329384755.1565087872; _bfa=1.1565087814721.3hiuez.1.1565087814721.1565141933600.2.29; _bfs=1.2; _gat=1; _jzqco=%7C%7C%7C%7C1565087824308%7C1.806560392.1565087823363.1565141937050.1565141995499.1565141937050.1565141995499.undefined.0.0.26.26; __zpspc=9.2.1565141937.1565141995.2%231%7C360ppc%7C360%7Cpp%7C%7C%23; appFloatCnt=13; _bfi=p1%3D101023%26p2%3D10320673302%26v1%3D29%26v2%3D28; FD_SearchHistorty={"type":"S","data":"S%24%u4E09%u4E9A%28SYX%29%24SYX%242019-08-16%24%u676D%u5DDE%28HGH%29%24HGH"}',
'origin': 'https://flights.ctrip.com',
'referer': 'https://flights.ctrip.com/itinerary/oneway/syx-hgh?date=2019-08-16',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'same-origin',
'user-agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.87 Safari/537.36',
}

data = {
"flightWay": "Oneway",  # 飞行方式 单向的 固定参数
"classType": "ALL",
"hasChild": "false",
"hasBaby": "false",
"searchIndex": 1,
"mkt_header": "bdnm",  # 固定参数
"airportParams": [
{
"dcity": "BJS",  # 起点
"acity": "SHA",  # 终点
"dcityname": "北京",  # 起点名称 没有起作用
"acityname": "上海",  # 终点名称 设置错误 暂时也是返回的正确数据
"date": "2019-08-16"  # 请求时间
}
]
}

url = 'https://flights.ctrip.com/itinerary/api/12808/products'

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

得到的文本数据,整理下可以使用:

参考的博客:

payload

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: