第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
请大家多多支持,点赞、评论和加关注!谢谢!
第14.5节 利用浏览器获取的http信息构造Python网页访问的http请求头的更多相关文章
- 第14.7节 Python模拟浏览器访问实现http报文体压缩传输
一. 引言 在<第14.6节 Python模拟浏览器访问网页的实现代码>介绍了使用urllib包的request模块访问网页的方法.但上节特别说明http报文头Accept-Encodin ...
- 第14.6节 使用Python urllib.request模拟浏览器访问网页的实现代码
Python要访问一个网页并读取网页内容非常简单,在利用<第14.5节 利用浏览器获取的http信息构造Python网页访问的http请求头>的方法构建了请求http报文的请求头情况下,使 ...
- 第14.16节 爬虫实战2:赠人玫瑰,手留余香! request+BeautifulSoup实现csdn博文自动点赞
写在前面:本文仅供参考学习,请勿用作它途,禁止转载! 在<第14.14节 爬虫实战准备:csdn博文点赞过程http请求和响应信息分析>老猿分析了csdn博文点赞处理的http请求和响应报 ...
- C# 利用Powershell获取网络相关信息
利用Get-NetAdapter获取信息 Get-NetAdapter 参考链接:https://docs.microsoft.com/en-us/powershell/module/netadapt ...
- [扩展推荐] Laravel 中利用 GeoIP 获取用户地理位置信息
我最近需要一个用户地域检测来设置用户的默认区域和货币.由 Daniel Stainback 创建的 torann/geoip 很好地满足为Laravel 5 项目提供 GeoIP 服务的要求. 这个 ...
- 利用ajax获取网页表单数据,并存储到数据库之一(使用JDBC)
所谓JDBC就是利用java与数据库相连接的技术,从数据库获取既有的信息或者把网页上的信息存储到数据库. 这里简单的介绍公司的一个小项目中的一部分,由于代码较多,所以用图片形式进行展示.源码请查看源码 ...
- 0057 Spring MVC如何获取HTTP请求头信息--URL中的动态参数--@RequestHeader--@CookieValue--@PathVariable
获取HTTP请求头信息 一个HTTP请求除了有参数和实体内容外还有HTTP请求头信息,Spring MVC也可以获取这部分信息 @RequestHeader解可以将请求头信息映射到处理方法的形参上 @ ...
- python flask获取微信用户信息流程
需要了解的几个url 用户第一次访问时的url,包含以下几个参数 https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID& ...
- 第14.4节 使用IE浏览器获取网站访问的http信息
上节<第14.3节 使用google浏览器获取网站访问的http信息>中介绍了使用Google浏览器怎么获取网站访问的http相关报文信息,本节介绍IE浏览器中怎么获取相关信息.以上节为基 ...
随机推荐
- 10、Django与Ajax
AJAX准备知识:JSON 什么是 JSON ? JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据交换格式 JS ...
- solr全文检索学习
序言: 前面我们说了全局检索Lucene,但是我们发现Lucene在使用上还是有些不方便的,例如想要看索引的内容时,就必须自己调api去查,再例如一些添加文档,需要写的代码还是比较多的 另外我们之前说 ...
- 性能问题eg
线上问题 ./pidstat -w Linux 3.6.5-Broadcom Linux ((none)) 03/21/20 _armv7l_ (1 CPU) 15:04:17 UID PID csw ...
- TIME_WAIT状态存在的原因
TIME_WAIT状态存在有两个理由: 1.可靠地实现TCP全双工连接的中断 2.允许老的重复分节在网络中消失 第一个理由:如果客户端的ACK丢失了,服务器将会重新发送它的最终的那个FIN,因此客户端 ...
- wireguard使用
1.编译与安装 sudo apt-get install libmnl-dev libelf-dev linux-headers-$(uname -r) build-essential pkg-con ...
- linux 图解笔记
- rbd的数据在哪里
创建一个rbd [root@mytest ~]# rbd create test1 --size 4000 查看rbd信息 [root@mytest ~]# rbd info test1 rbd im ...
- ACCESS渗透测试
access-getshell 直接写shell # 创建临时表 create table test(a varchar(255)); # 插入一句话木马 insert into test(a) va ...
- tp5 跨域问题
只需要三行代码,写到入口文件public/index.php处即可解决 header("Access-Control-Allow-Origin:*"); header(" ...
- FL Studio中的音频剪辑功能讲解
音频剪辑,是FL Studio中的一个特色功能,音频剪辑的目的是保持在播放列表中显示和触发的音频,可以根据需要对它们进行切片和排列.但需要注意的是音频剪辑这个功能在FL Studio的基础版(果味版) ...