requests.get方法中的header
遇到的问题 :
使用requests.get方法抓取接口数据的时候,发现返回的内容中没有data部分的内容,之返回了如下:
{"result_code":0,"message":"SUCCESS"}
解决办法 :
后来在get方法中加入了headers参数,headers参数如下:
结果 :返回的参数包含了data内容
总结 :
参考文章: https://www.jianshu.com/p/c5cf6a1967d1
查看请求信息,发现我们一般写的爬虫会默认告诉服务器自己发送了一个Python爬取请求,而一般网站是不允许被爬虫访问的,估计是因为会涉及到商业问题。最后,通过更改User-Agent字段就可以轻易骗过该网站。
那么User-Agent到底是什么呢?
User-Agent会告诉网站服务器,访问者是通过什么工具来请求的,如果是爬虫请求,一般会拒绝,如果是用户浏览器,就会应答。
又该如何使用呢?
最简单的方法就是按照下面步骤进行
详细版解释: 谈谈 UserAgent 字符串的规律和伪造方法
简要版解释:
我用的Chrome浏览器,查看User-Agent的结果:
User-Agent通常格式:
由于历史上的浏览器大战,当时想获得图文并茂的网页,就必须宣称自己是 Mozilla 浏览器。此事导致如今User-Agent里通常都带有Mozilla字样,出于对历史的尊重,大家都会默认填写该部分。
Windows NT 10.0是指我使用的操作系统的版本,比如我使用的win10对应的就是Windows NT 10.0,如果我使用win7对应的就是Windows NT 6.1。
Win64; x64是指我的操作系统是64位的
Windows系统下:
Linux系统下:
macOS系统下:
AppleWebKit/537.36 (KHTML, like Gecko)...Safari/537.36,历史上,苹果依靠了WebKit内核开发出Safari浏览器,WebKit包含了WebCore引擎,而WebCore又从KHTML衍生而来。由于历史原因,KHTML引擎需要声明自己是“类似Gecko”的,因此引擎部分这么写。再后来,Google开发Chrome也是用了WebKit内核,于是也跟着这么写。借用Littern的一句话:“Chrome 希望能得到为Safari编写的网页,于是决定装成Safari,Safari使用了WebKit渲染引擎,而WebKit呢又伪装自己是KHTML,KHTML呢又是伪装成Gecko的。同时所有的浏览器又都宣称自己是Mozilla。”。不过,后来Chrome 28某个版本改用了blink内核,但还是保留了这些字符串。而且,最近的几十个版本中,这部分已经固定,没再变过
本人用的是Chrome浏览器,其中60.0 是大版本,3100是持续增大的一个数字,而0则是修补漏洞的小版本。
关于Firefox与IE/Edge的讲解: 谈谈 UserAgent 字符串的规律和伪造方法
最后,居然有大佬封装了不同操作系统不同浏览器的User-Agent: User-Agent封装使用教程