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)
得到的文本数据,整理下可以使用:
参考的博客:
相关文章推荐
- 不知不觉,json数据传输与接口调用
- Web Service 接口实现大量数据传输的解决方案
- 测试接口是否好用,前台后台数据传输问题!
- CCS+C6678LE开发记录09:以太网接口测试续(大块数据传输)
- asp.net Web Service 接口大量数据传输解决方案
- JSON 数据传输 与调用远程接口
- Java数据传输结构设计 - 接口数据封包
- [置顶] springmvc 框架下使用restful接口参数数据传输
- 单片机和MODEM接口及远程数据传输
- 8051单片机数据传输接口扩展技术与应用实例
- LVDS数据接口传输
- Web Service 接口大量数据传输解决方案
- 接口地址加密 和 API权限设计 保护服务器上的数据安全通信传输
- 数据传输接口1394接口优缺点和技术特点以及USB接口速度
- 外部接口 -- 密文校验与数据传输
- 新的数据传输部分接口类
- asp.net Web Service 接口大量数据传输解决方案
- PHP给第三方接口POST或GET方式传输数据并得到返回值
- java开发接口利用http协议传输数据
- Web Service 接口大量数据传输解决方案