其他分享
首页 > 其他分享> > payload数据传输,携程查机票接口

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

作者:互联网

网络报文中的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

标签:携程,url,传输,json,7C%,数据传输,data,payload
来源: https://blog.csdn.net/weixin_44220464/article/details/98729997