国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python爬蟲headers設(shè)置后無效的解決方法

2020-01-04 16:38:00
字體:
供稿:網(wǎng)友

此次遇到的是一個函數(shù)使用不熟練造成的問題,但有了分析工具后可以很快定位到問題(此處推薦一個非常棒的抓包工具fiddler) 

正文如下:

在爬取某個app數(shù)據(jù)時(app上的數(shù)據(jù)都是由http請求的),用Fidder分析了請求信息,并把python的request header信息寫在程序中進(jìn)行請求數(shù)據(jù)

代碼如下

import requestsurl = 'http://xxx?startDate=2017-10-19&endDate=2017-10-19&pageIndex=1&limit=50&sort=datetime&order=desc'headers={ "Host":"xxx.com", "Connection": "keep-alive", "Accept": "application/json, text/javascript, */*; q=0.01", "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.59 Safari/537.36", "X-Requested-With": "XMLHttpRequest", "Referer": "http://app.jg.eastmoney.com/html_Report/index.html", "Accept-Encoding": "gzip,deflate", "Accept-Language": "en-us,en", "Cookie":"xxx"}r = requests.get(url,headers)print (r.text)

請求成功但是,返回的是

{"Id":"6202c187-2fad-46e8-b4c6-b72ac8de0142","ReturnMsg":"加載失敗!"}

就是被發(fā)現(xiàn)不是正常請求被攔截了

然后我去Fidder中看剛才python發(fā)送請求的記錄 #蓋掉的兩個部分分別是Host和URL

python,爬蟲,headers

然后查看請求詳細(xì)信息的時候,請求頭并沒有加載進(jìn)去,User-Agent就寫著python-requests !   #請求頭里的UA信息是java,python程序,有點(diǎn)反爬蟲意識的網(wǎng)站、app都會攔截掉

Header詳細(xì)信息如下

GET http://xxx?istartDate=2017-10-19&endDate=2017-10-19&pageIndex=1&limit=50&sort=datetime&order=desc  &Host=xxx.com  &Connection=keep-alive  &Accept=application%2Fjson%2C+text%2Fjavascript%2C+%2A%2F%2A%3B+q%3D0.01  &User-Agent=Mozilla%2F5.0+%28Windows+NT+6.1%3B+WOW64%29+AppleWebKit%2F537.36+%28KHTML%2C+like+Gecko%29+Chrome%2F29.0.1547.59+Safari%2F537.36  &X-Requested-With=XMLHttpRequest  &Referer=xxx  &Accept-Encoding=gzip%2Cdeflate  &Accept-Language=en-us%2Cen  &Cookie=xxxHTTP/1.1Host: xxx.comUser-Agent: python-requests/2.18.4Accept-Encoding: gzip, deflateAccept: */*Connection: keep-aliveHTTP/1.1 200 OKServer: nginx/1.2.2Date: Sat, 21 Oct 2017 06:07:21 GMTContent-Type: application/json; charset=utf-8Content-Length: 75Connection: keep-aliveCache-Control: privateX-AspNetMvc-Version: 5.2X-AspNet-Version: 4.0.30319X-Powered-By: ASP.NET

一開始還沒發(fā)現(xiàn),等我把請求的URL信息全部讀完,才發(fā)現(xiàn)程序把我的請求頭信息當(dāng)做參數(shù)放到了URL里

那就是我請求的時候request函數(shù)Header信息參數(shù)用錯了

又重新看了一下Requests庫的Headers參數(shù)使用方法,發(fā)現(xiàn)有一行代碼寫錯了,在使用request.get()方法時要把參數(shù) “headers =“寫出來 

更改如下:

import requestsurl = 'http://xxx?startDate=2017-10-19&endDate=2017-10-19&pageIndex=1&limit=50&sort=datetime&order=desc'headers={ "Host":"xxx.com", "Connection": "keep-alive", "Accept": "application/json, text/javascript, */*; q=0.01", "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.59 Safari/537.36", "X-Requested-With": "XMLHttpRequest", "Referer": "http://app.jg.eastmoney.com/html_Report/index.html", "Accept-Encoding": "gzip,deflate", "Accept-Language": "en-us,en", "Cookie":"xxx"}r = requests.get(url,headers=headers)

然后去查看Fiddler中的請求。

python,爬蟲,headers

此次python中的請求頭已經(jīng)正常了,請求詳細(xì)信息如下

GET http://xxx?startDate=2017-10-19&endDate=2017-10-19&pageIndex=1&limit=50&sort=datetime&order=desc HTTP/1.1User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.59 Safari/537.36Accept-Encoding: gzip,deflateAccept: application/json, text/javascript, */*; q=0.01Connection: keep-aliveHost: xxx.comX-Requested-With: XMLHttpRequestReferer: http://xxxAccept-Language: en-us,enCookie: xxxHTTP/1.1 200 OKServer: nginx/1.2.2Date: Sat, 21 Oct 2017 06:42:21 GMTContent-Type: application/json; charset=utf-8Content-Length: 75Connection: keep-aliveCache-Control: privateX-AspNetMvc-Version: 5.2X-AspNet-Version: 4.0.30319X-Powered-By: ASP.NET

然后又用python程序請求了一次,結(jié)果請求成功,返回的還是

{"Id":"6202c187-2fad-46e8-b4c6-b72ac8de0142","ReturnMsg":"加載失敗!"} 

因?yàn)橐话鉩ookie都會在短時間內(nèi)過期,所以更新了cookie,然后請求成功

python,爬蟲,headers

需要注意的是用程序爬蟲一定要把Header設(shè)置好,這個app如果反爬的時候封ip的話可能就麻煩了。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識閱讀請移步到python教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 榆林市| 秦皇岛市| 叙永县| 郴州市| 陵川县| 长阳| 吉木乃县| 新密市| 阳东县| 和林格尔县| 铜陵市| 霞浦县| 顺昌县| 丁青县| 靖西县| 靖西县| 驻马店市| 佛坪县| 富阳市| 大港区| 阿坝县| 当阳市| 罗平县| 仙游县| 高平市| 宿州市| 普定县| 呼玛县| 霸州市| 武陟县| 攀枝花市| 蓝田县| 肃宁县| 麻阳| 九寨沟县| 花垣县| 兰考县| 甘谷县| 张家川| 保靖县| 景泰县|