龙空技术网

WEB开发进阶(02)(http报文与技能升级)

不正经的程序员 83

前言:

此时姐妹们对“web命令执行成功返回的数据包是什么格式”大概比较关注,小伙伴们都想要分析一些“web命令执行成功返回的数据包是什么格式”的相关知识。那么小编在网摘上网罗了一些关于“web命令执行成功返回的数据包是什么格式””的相关文章,希望姐妹们能喜欢,姐妹们一起来学习一下吧!

又到了同一时刻,今天分享关于http报文及相关应用的实现原理

大多WEB开发从业人员在快速学习WEB开发时往往注重实际应用,而忽略去了解WEB的一些底层知识和原理,这也是WEB开发进阶时产生一些瓶颈的原因,接下来我将从几个点介绍,注意小标题哦

很多网络技术专业的童鞋都学过互联网的7层模型,在粗略的看过7层模型后,其实最关心的还是应用层的一些内容,如果你对7层模型感兴趣可以再百度一下,以下我只以应用层为主要讲解。大家都知道,HTTP是一种协议,它基于tcp,更简单的来讲,其实可以这么描述,HTTP是基于TCP通讯的一种数据格式,从客户端发出请求的报文,就是我们WEB对应开发中的request获得的内容,request header也就是报文的头信息,如果你试用chrome的话,f12一下,应该不会陌生,请求头信息是由浏览器帮我们完成的,大致包含内容为,我要请求你,请求你的什么目录(也就是什么内容),我的浏览器是什么版本(user agent),我上个访问页面是什么地址,我的cookie现在是什么等等,然后WEB服务端就可以通过解析报文了解到这些信息(当然信息可以伪造),在进行反馈。反馈内容也要是标准的报文,前面是头信息,就是response header输出的头信息,输出头信息也会包含几个必要的内容,我要传输给你的内容(消息的body)是什么格式,html utf-8还是json,还是文件,我是否使用压缩等等,然后浏览器就根据返回的头信息,正确的接收body并展现,比如发现访问的是文件,就跳出下载框,返回的是html就按html进行解析。

这就是最基础的http报文内容,而我接下来要说的,是报文在高级应用开发中会用到的高级用法。

1.1 cookie ,通过报文,我们可以告诉客户端配置操作cookie来实现服务端的session功能,其原理就是上述的报文中传递实现的,那么,为了防止基于简单浏览器的cookie篡改,我们其实可以自定义response header ,不用cookie这个名字存,结合WEB前端,将一些隐秘的数据通过报文的头信息去传递,这将有效的抵挡一些简单的攻击。

1.2 压缩,apache 和 nginx都有组件可以开启gzip压缩功能,这个也是html的标准内容,开启报文的压缩功能,那省的不是一点点的流量,对于流量高的网站来说,这一点至关重要

1.3 爬虫程序是难免要用到的东西,在模拟浏览器环境抓取网络数据的操作中,目前无非2种选择。1,使用无头浏览器,即不需要渲染的浏览器,在完整渲染html css js等操作后,通过JS注入方式,访问DOM节点,来提取需要的数据,这种方案可以在任何场景下使用,WEB服务端无法分辨你是否为爬虫,因为你用的真的是浏览器,所以很难屏蔽,但是也有办法,必须通过IP访问频率,访问页面的数量,规律也可以杜绝被抓取,但是基本很难处理,但是无头浏览器的缺点也是很明显,抓取效率低下,无头浏览器毕竟不是大厂出品,有时候渲染页面也不一定正确。2.curl简单点说,就是控制报文去请求HTTP服务器,然后自己通过其他html解析的类库去提取,这种方法,抓取报文速度极快,不是特殊数据,通过一般的正则表达可以直接提取,当然也可以用类似jquery的服务端类去提取,这种方法难度在于报文的处理,因为开发者可能想尽办法通过设置头信息,上一个访问页面,单IP抓取速度等等做一些小记录去屏蔽机器爬取行为,所以经常要修改报文请求头信息去维护爬取项目。

1.4 自定义的TCP服务。讲了这么多,其实也就讲的http的报文而已,了解了报文,那么我们是不是自己可以定义协议?比如,我公司的软件是C/S+B/S的,而B/S相关的一些页面信息,我不希望别人通过80可以访问,那么我就可以创一种协议。我们可以创建基于TCP的socket服务,自定义交互的端口号,而报文方面,也就是数据包,格式可以自己定义,甚至于压缩技术,加密技术都可以是自定义,且特殊的,客户端通过这个特定的协议走数据,然后还原出来,在用软件内部的浏览器渲染。这样在软件层面极大的增加了安全性,而对于WEB开发而言,并无区别。

标签: #web命令执行成功返回的数据包是什么格式