第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浏览器中怎么获取相关信息.以上节为基 ...
随机推荐
- c#视频位置
static void Main(string[] args) { string scoure = @"C:\Documents and Settings\Administra ...
- tensorflow的广播机制
TensorFlow支持广播机制(Broadcast) TensorFlow支持广播机制(Broadcast),可以广播元素间操作(elementwise operations).正常情况下,当你想要 ...
- Jquery禁用DIV鼠标右键
$("#mp4").bind("contextmenu", function (e) { return false; });
- 《.NET 5.0 背锅案》第1集:验证 .NET 5.0 正式版 docker 镜像问题
今天我们分析了博客站点的2次故障(故障一.故障二),发现一个巧合的地方,.NET 5.0 正式版的 docker 镜像是在11月10日提前发布上线的. 而在11月10日下午4点左右,由于 CI 服务器 ...
- Handler的源码和常见问题的解答不崩溃
Handler是Android中的消息处理机制,是一种线程间通信的解决方案,同时你也可以理解为它天然的为我们在主线程创建一个队列,队列中的消息顺序就是我们设置的延迟的时间,如果你想在Android中实 ...
- Uipath_考证学习之路
写在前面 第一次考证的时候,就是为了考证而考证,从网上获取了试题,修改了一下,就通过了,对 REFramework的了解甚少,经过几周的学习,决定赶在 4.30号考证收费之前再重新考一次. 原文章发表 ...
- 1. Spark的安装及介绍
*以下内容由<Spark快速大数据分析>整理所得. 读书笔记的第一部分是记录如何安装Spark?同时,简单介绍下Spark. 一.Spark安装 二.Spark介绍 一.Spark安装 如 ...
- tcpack---1简述
TCP重传机制 TCP要保证所有的数据包都可以到达,所以,必需要有重传机制. 超时重传机制 一种是不回ack,死等3,当发送方发现收不到3的ack超时后,会重传3.一旦接收方收到3后,会ack 回 4 ...
- 从头学起Verilog(一):组合逻辑基础与回顾
引言 该部分主要回顾了本科时数字电路中组合逻辑电路部分,内容相对简单和基础. 内容主要包括:布尔代数相关知识,卡诺图,最大项与最小项,竞争和冒险以及一些常见模块 数字电路中的逻辑 组合逻辑:输出可以表 ...
- mysql三层体系
Mysql:是单进程多线程数据库. MySQL分层: mysql分三层:网络连接层, sql层, 存储引擎层,而网络连接层与sql层合称server层,故mysql又分server层合储存引擎层.第一 ...