分享python爬虫headers设置后无效的解决方案
- 更新时间:2020-02-14 13:34:32
- 编辑:麴明轩
此次遇到的是一个函数使用不熟练造成的问题,但有了分析工具后可以很快定位到问题(此处推荐一个非常棒的抓包工具fiddler)
正文如下:
在爬取某个app数据时(app上的数据都是由http请求的),用Fidder分析了请求信息,并把python的request header信息写在程序中进行请求数据
代码如下
import requests url = '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":"加载失败!"}
就是被发现不是正常请求被拦截了
然后我去Fidder中看刚才python发送请求的记录 #盖掉的两个部分分别是Host和URL。
然后查看请求详细信息的时候,请求头并没有加载进去,User-Agent就写着python-requests ! #请求头里的UA信息是java,python程序,有点反爬虫意识的网站、app都会拦截掉
Header详细信息如下
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=xxx HTTP/1.1 Host: xxx.com User-Agent: python-requests/2.18.4 Accept-Encoding: gzip, deflate Accept: */* Connection: keep-alive HTTP/1.1 200 OK Server: nginx/1.2.2 Date: Sat, 21 Oct 2017 06:07:21 GMT Content-Type: application/json; charset=utf-8 Content-Length: 75 Connection: keep-alive Cache-Control: private X-AspNetMvc-Version: 5.2 X-AspNet-Version: 4.0.30319 X-Powered-By: ASP.NET
一开始还没发现,等我把请求的URL信息全部读完,才发现程序把我的请求头信息当做参数放到了URL里
那就是我请求的时候request函数Header信息参数用错了
又重新看了一下Requests库的Headers参数使用方法,发现有一行代码写错了,在使用request.get()方法时要把参数 “headers =“写出来
更改如下:
import requests url = '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中的请求头已经正常了,请求详细信息如下
GET http://xxx?startDate=2017-10-19&endDate=2017-10-19&pageIndex=1&limit=50&sort=datetime&order=desc HTTP/1.1 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.59 Safari/537.36 Accept-Encoding: gzip,deflate Accept: application/json, text/javascript, */*; q=0.01 Connection: keep-alive Host: xxx.com X-Requested-With: XMLHttpRequest Referer: http://xxx Accept-Language: en-us,en Cookie: xxx HTTP/1.1 200 OK Server: nginx/1.2.2 Date: Sat, 21 Oct 2017 06:42:21 GMT Content-Type: application/json; charset=utf-8 Content-Length: 75 Connection: keep-alive Cache-Control: private X-AspNetMvc-Version: 5.2 X-AspNet-Version: 4.0.30319 X-Powered-By: ASP.NET
然后又用python程序请求了一次,结果请求成功,返回的还是
{"Id":"6202c187-2fad-46e8-b4c6-b72ac8de0142","ReturnMsg":"加载失败!"}
因为一般cookie都会在短时间内过期,所以更新了cookie,然后请求成功
需要注意的是用程序爬虫一定要把Header设置好,这个app如果反爬的时候封ip的话可能就麻烦了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。
相关教程
-
Python操作xlwings的实例详解
python操作Excel的模块,网上提到的模块大致有:xlwings、xlrd、xlwt、openpyxl、pyxll等。本文将通过几个实例演示下xlwings的使用,感兴趣的可以了解一下
发布时间:2019-07-23
-
Python函数命名空间和作用域(Local与Global)
给网友朋友们带来一篇关于Python的教程,这篇文章主要介绍了Python函数命名空间和作用域分别介绍Local与Global模式,内容详细,具有一定的参考价值,需要的小伙伴可以参考一下
发布时间:2022-12-09
-
基于Python的大数据分析基础及实战
配套设施教程视频教你如何学Python 提炼出避坑技能招式简要、高效率懂Python 实战演练经典案例轻轻松松、迅速玩Python 解读实践活动实例视頻源码源统计数据 对于Python初学者量身订做,新手入
大小:202 MBPython大数据
-
Python数据科学指南
本书是Python数据分析编程入门,详细介绍了Python在数据科学中的应用,60多个实用的开发技巧,帮你探索Python及其强大的数据科学能力
大小:62.3 MBPython数据分析电子书
-
《编程的乐趣:用Python解算法谜题》配套源码
非常少有入门程序编写的人想要以便程序编写而程序编写,这书自主创新地根据求出趣味的迷题来专家教授用户程序编写,为枯燥乏味的编程学习全过程引入了较强的挑战性,迷题是来源于真
大小:67 KBPython算法配套资源
-
零基础入门学习Python(含视频、源码)
本书是一本Python 3.7编程轻松入门教程,前半部分首先讲解基础的Python 3语法知识,后半部分则围绕着Python 3在爬虫、界面开发和游戏开发上的应用,循序渐进,欢迎下载
大小:16.8 MBPython电子书
-
Python程序员面试算法宝典
覆盖了近三年知名IT大厂程序员面试笔试中超过98%的高频算法知识点 指引Python程序员面试笔试之道 剑指offer
大小:200.9 MBPython电子书
-
Python机器学习基础教程
这是一本机器学习入门书,以Python语言介绍,包含机器学习的基本概念及其应用;实践中最常用的机器学习算法以及这些算法的优缺点;待处理数据的呈现方式的重要性等内容
大小:28.3 MBPython电子书
-
Python并行编程参考手册
本书以Python为基础,对并行编程领域的各项技术与知识进行了广泛且深入的讲解,从原理到实践系统化地对并行编程技术进行了层层剖析,是提升并行编程技能的一本不可多得的好书,欢迎下载
大小:41.4 MBPython编程电子书