第14.5节 利用浏览器获取的http信息构造Python网页访问的http请求头

一、 引言
在《第14.3节 使用google浏览器获取网站访问的http信息》和《第14.4节 使用IE浏览器获取网站访问的http信息》中介绍了使用Google浏览器和IE浏览器怎么获取网站访问的http相关报文信息,本节介绍利用获取的信息怎么在Python应用中构建http访问报文头。本节介绍的获取信息以Google浏览器获取的http信息为准,相当于应用访问网站是模拟谷歌浏览器进行访问,IE的原理一样,大家可以自行处理。

二、 从浏览器中获取到http请求报文的报文头信息
利用《第14.3节 使用google浏览器获取网站访问的http信息》介绍的方法复制访问网站的http请求头信息,以访问https://blog.csdn.net/LaoYuanPython为例获取的请求报文头内容如下(其中cookies信息只取了部分,以省略号替代):

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cache-Control: max-age=0
Connection: keep-alive
Cookie: uuid_tt_dd=10_35489889920-1563497330616-876822; .......
Host: blog.csdn.net
Referer: https://i.csdn.net/
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36

对于上述信息,如果是模拟浏览器访问,User-Agent是必须的,其他的都是可选的,老猿推荐除了User-Agent,在应用中建议还设置Accept、Accept-Language、Connection这三个参数,这样更像浏览器的访问,cookie是使用用户已登录会话进行访问必须的,如果匿名访问不需要,Accept-Encoding如果爬虫应用支持解压处理时使用,否则不要使用,使用后会导致由于服务端报文进行了压缩处理应用无法识别。总而言之,报文头的信息设置与应用的功能实现要求相关。

三、 将获取信息转变成Python应用能识别的字典数据
对相关信息进行处理,处理后将其放到一个字典中。处理方法非常简单,将上述信息中只留下我们需要设置的行,在每行行首、行尾以及冒号后的空格去掉、每行数据冒号分隔的两部分都加上引号,每行之间加上逗号,最后将相关数据放到一个列表中,为了后续调用方便,我们定义一个函数mkhead来返回报文头,如下:

def mkhead():
    header = {'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',
    'Accept-Language':'zh-CN,zh;q=0.9',
    'Connection':'keep-alive',
    'Cookie':'uuid_tt_dd=10_35489889920-1563497330616-876822; ...... ', #匿名访问无需设置,非匿名访问需设置
    'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'}
        
    return header

注意Cookie在上面是只取了部分数据,大家需要以自己的数据为准,当然如果应用准备匿名方式访问不需要也不能设置cookie,具体http报文头数据需要使用哪些由你自己的应用来决定。
另外注意: Accept-Encoding一般情况下也不需要,使用有可能导致后续网页内容解码无法解码。

本节老猿介绍了利用浏览器获取的http请求头信息构造Python模拟浏览器访问请求头的过程,非常简单,有了该请求头Python发起的网站访问就会被认为是正常的浏览器访问。

老猿Python,跟老猿学Python!
博客地址:https://blog.csdn.net/LaoYuanPython

老猿Python博客文章目录:https://blog.csdn.net/LaoYuanPython/article/details/98245036
请大家多多支持,点赞、评论和加关注!谢谢!

原文地址:https://www.cnblogs.com/LaoYuanPython/p/13643581.html