requests.get方法中的header

requests.get方法中的header,第1张

遇到的问题

使用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。

Win64x64是指我的 *** 作系统是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封装使用教程

试试这样

header = {

"content-type": "application/json",

"a": json.dumps({"b": "b_value"}),

"some_param": json.dumps({"some_key_value": "some_string"})

}

也就是说用json.dumps把多余的嵌套变成字符串


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11418321.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-16
下一篇2023-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存