原意想為國外的朋友爬一下幾個航空公司的網站的補票,結果發現東航的官網爬機票的時候,向介面發帶JSON格式的POST請求,得到的回傳碼是200,但是就是得不到結果,回傳全是空。找到了原因是因為發送的data光光就是json格式的,但是通過fiddler抓包獲取發送的data除了json資料,前面一定要有searchCond=,具體如圖所示。請問這個用python如何構造post請求?
正常網頁搜索的Fiddler抓包結果:
POST http://www.ceair.com/otabooking/flight-search!doFlightSearch.shtml HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36
Accept-Encoding: gzip, deflate
Accept: application/json, text/javascript, */*; q=0.01
Connection: keep-alive
Host: www.ceair.com
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Origin: http://www.ceair.com
Referer: http://www.ceair.com/booking/lhr-sha-200516_CNY.html
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cookie: Webtrends=c1bd9729.59ec19eba8140; language=zh_CN; _ga=GA1.2.1708422418.1581929338; ecrmWebtrends=81.104.156.52.1581929344111; gr_user_id=11e1e0b4-806e-4651-9ac7-6ba44b26476c; grwng_uid=5b76ecb2-ec4b-4e60-897a-d9c7fc409588; user_cookie=true; 84bb15efa4e13721_gr_last_sent_cs1=5B5D19979C3D373A30D1AFD14EE1F813; apdid_data=https://bbs.csdn.net/topics/%7B%22time%22%3A1585492296549%2C%22token%22%3A%22APDIDJS_donghang_54acf34e6ad5998610a489ab26d24560%22%7D; _gid=GA1.2.222270777.1586091633; JSESSIONID=ZanxhlMTW5L7mSKqCyszXtfR.laputaServer7; 84bb15efa4e13721_gr_cs1=5B5D19979C3D373A30D1AFD14EE1F813
Content-Length: 390
searchCond={"adtCount": 1, "chdCount": 0, "infCount": 0, "currency": "CNY", "tripType": "OW", "recommend": false, "reselect": "", "page": "0", "sortType": "a", "sortExec": "a", "segmentList": [{"deptCd": "LHR", "arrCd": "SHA", "deptDt": "2020-05-16", "deptAirport": "", "arrAirport": "", "deptCdTxt": "LONDON", "arrCdTxt": "SHANGHAI", "deptCityCode": "LON", "arrCityCode": "SHA"}], "version": "A.1.0"}
使用python發起的帶json格式的post請求抓包結果:
POST http://www.ceair.com/otabooking/flight-search!doFlightSearch.shtml HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36
Accept-Encoding: gzip, deflate
Accept: application/json, text/javascript, */*; q=0.01
Connection: keep-alive
Host: www.ceair.com
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Origin: http://www.ceair.com
Referer: http://www.ceair.com/booking/lhr-sha-200516_CNY.html
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cookie: Webtrends=c1bd9729.59ec19eba8140; language=zh_CN; _ga=GA1.2.1708422418.1581929338; ecrmWebtrends=81.104.156.52.1581929344111; gr_user_id=11e1e0b4-806e-4651-9ac7-6ba44b26476c; grwng_uid=5b76ecb2-ec4b-4e60-897a-d9c7fc409588; user_cookie=true; 84bb15efa4e13721_gr_last_sent_cs1=5B5D19979C3D373A30D1AFD14EE1F813; apdid_data=https://bbs.csdn.net/topics/%7B%22time%22%3A1585492296549%2C%22token%22%3A%22APDIDJS_donghang_54acf34e6ad5998610a489ab26d24560%22%7D; _gid=GA1.2.222270777.1586091633; JSESSIONID=ZanxhlMTW5L7mSKqCyszXtfR.laputaServer7; 84bb15efa4e13721_gr_cs1=5B5D19979C3D373A30D1AFD14EE1F813
Content-Length: 390
{"adtCount": 1, "chdCount": 0, "infCount": 0, "currency": "CNY", "tripType": "OW", "recommend": false, "reselect": "", "page": "0", "sortType": "a", "sortExec": "a", "segmentList": [{"deptCd": "LHR", "arrCd": "SHA", "deptDt": "2020-05-16", "deptAirport": "", "arrAirport": "", "deptCdTxt": "LONDON", "arrCdTxt": "SHANGHAI", "deptCityCode": "LON", "arrCityCode": "SHA"}], "version": "A.1.0"}
我的python代碼:
import requests
import json
requests.packages.urllib3.disable_warnings()
url = "http://www.ceair.com/otabooking/flight-search!doFlightSearch.shtml"
headers = {
"Host": "www.ceair.com",
"Proxy-Connection": "keep-alive",
"Accept": "application/json, text/javascript, */*; q=0.01",
"X-Requested-With": "XMLHttpRequest",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36",
"Content-Type":"application/x-www-form-urlencoded; charset=UTF-8",
"Origin": "http://www.ceair.com",
"Referer": "http://www.ceair.com/booking/lhr-sha-200516_CNY.html",
"Accept-Encoding": "gzip, deflate",
"Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8",
"Cookie": "Webtrends=c1bd9729.59ec19eba8140; language=zh_CN; _ga=GA1.2.1708422418.1581929338; ecrmWebtrends=81.104.156.52.1581929344111; gr_user_id=11e1e0b4-806e-4651-9ac7-6ba44b26476c; grwng_uid=5b76ecb2-ec4b-4e60-897a-d9c7fc409588; user_cookie=true; 84bb15efa4e13721_gr_last_sent_cs1=5B5D19979C3D373A30D1AFD14EE1F813; apdid_data=https://bbs.csdn.net/topics/%7B%22time%22%3A1585492296549%2C%22token%22%3A%22APDIDJS_donghang_54acf34e6ad5998610a489ab26d24560%22%7D; _gid=GA1.2.222270777.1586091633; JSESSIONID=ZanxhlMTW5L7mSKqCyszXtfR.laputaServer7; 84bb15efa4e13721_gr_cs1=5B5D19979C3D373A30D1AFD14EE1F813"
}
searchCond={"adtCount":1,"chdCount":0,"infCount":0,"currency":"CNY","tripType":"OW","recommend":False,"reselect":"","page":"0","sortType":"a","sortExec":"a","segmentList":[{"deptCd":"LHR","arrCd":"SHA","deptDt":"2020-05-16","deptAirport":"","arrAirport":"","deptCdTxt":"LONDON","arrCdTxt":"SHANGHAI","deptCityCode":"LON","arrCityCode":"SHA"}],"version":"A.1.0"}
session = requests.Session()
html = session.post(url, data=https://bbs.csdn.net/topics/json.dumps(searchCond), headers=headers)
print(html)
print(html.text)
uj5u.com熱心網友回復:
有大神幫幫忙嗎uj5u.com熱心網友回復:
有大哥知道嗎uj5u.com熱心網友回復:
求好心人幫忙回答一下
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/62273.html
上一篇:Python入門
