00:00
刚刚呢,给大家说了一下,怎么样来通过这个处理器里边这个R啊,也就是我们这个htb request类型的这个质类型的这个R呢,来获取请求行里边这个信息,因为我们这个昨天说了请求报文呢,有请求行,请求头和请求题,那下面呢,我们来说怎么来获取这个请求头里边这个信息。没有空屏。对。现在呢?我这有一个。怎么有两个我呀?IP这个。下面有学生装客户机吗?你装这个教师端吗?没有吧?我这怎么两个啊。啊,我这个网线。
01:02
网线好像识别不了呀。网线接触不好。重新来啊。好吧,啊,现在没问题了是吧?嗯,来啊,下面我们就来说怎么来获取这个请求投里吧这个信息,好嗯,那这个获取请求头呢,就需要用到我们这个里边这个字段了,哎,叫headher就是它啊,就是它headher头嘛,哎,规定什么呢?这个头域的一个键键名,哎这个呃,大小写敏感的啊,大小写敏感的,也就是区分大小写的啊,我们来点开这个header。看一下这个head它的一个类型,这个结构呢,Header它这个类型呢,是一个map string类型的一个K,然后这个string类型的一个切片,切片代表HTP头域的一个键,对,哎,就是你这个头里边呢,哎,我们昨天也看了头里边有好多信息,有可能一个属性呢,它对应的好多值,比如那我们再来看一下啊。
02:15
打开我们这个,我们刚刚发了一个请求F12。来刷新一下。好,我们来点开。Request request head里边啊,请图里边呢,有好多内容,你比如呢,接图的这个呃,内容的类型,哎,包括这个接触的语言,这个接触的压缩格式,解图的语言等等啊,就有好多那这些信息我要得到呢,就用那个had那个字段了,那个had字段好,那我们首先啊,我们先这个获取一下请求图里边这个所有的一个信息,那我们在这直接打印了啊。我们打印一下这一个W,直接让他在这个浏览器上显示啊,我们说些什么呢?请求头中呢。
03:00
所有信息。有哎,然后呢,我们在这块用一个R点一个。Header r点1HEADER,哎,我们来看一下啊,是不是刚刚我们通过这个F12看到这个请求这个头里边这些信息啊,我们来把这个关掉。那我们这个时候呢,也得重新。那我们看完一块一块来来这个说吧,啊来说吧,这是得到这个所有的,我们看到了这个header呢,它是一个map对吧,是一个map,那我如果想得到具体的一个值该怎么办呀。是一个map,我现在拿到了所有的,比如我现在就想得到这个,呃,请求报文里边这个,比如他我这个再把这个请求报文再打开啊,我们看一下我们想得到哪一个啊。每次发请它都有这个报文信息,比如说点开我想得到请求图里边的,比如这个接收的这个,呃,压压缩格式吧,我想得到后边的这个值,该怎么办呢?
04:02
对,是不是had这个中括号,然后里边传一个它呀,对吧,哎,传一个答案,所以呢,来CTRLC我们把这个复制一下继续写,写完之后我们再再重新来啊。然后呢,哎,请求途中,哎什么呢,什么什么的信息。嗯。他的这个信息。哎,是哎,我觉得他的信息是。哎,那这块就是r had的中括号。引号,哎,是不是把这个给传过来对吧?哎,传过来啊,这是这个得到化里边这个值了,那得到法里边是这个。它是一个死string类型的一个切片,对吧,它是不是带那个中括号的呀?诶应该能想到啊,是带中括号的,如果我要想直接得到那个值怎么办呢?哎,这里边啊,他给你提供了这个这样的一些方法,我们来看一下像had这一个,呃,结构体下面呢,哎,它有一些这个哎,比如get呀,Set呀,还有ADD呀,下边这些ADD,包括S呢,这就是响应的时候,比如呢,后边我们会说这个给这个前端客户端有响应,那给它响应的时候呢,你可以在响象头上面,比如我们这个昨天说过一个状态码是302对吧,302是不是重定向啊,那你就可以通过这个ahead,比如给它设置一个状态码,哎,302,同时呢,302你要让它重定向,还得有一个地址叫location,所以呢,你给他比如设置一个地址,让他再重新再向那个地址发个请求,所以啊,这个had呢,有在请求跟想象里边都有这个啊,都有这个,都会用到这个head,所以呢,那现在这里边有个get方法,你来看get的返回键对应的一个第一个呃值,如果键不存在,会返回这个,呃空会返回空,如果要获取。
05:37
该这个键对应的一个呃值切片,请直接用这个什么呢,规范格式的键访问这个map,那这块呢,比如我想得到这个呃刚刚那个啊,他接锁这个呃接受的这个呃压缩格式,那我直接比如调一个get里边传一下那个K就可以了啊,传一下那个K这块我们来说一下啊,或许它这个里边的呃这个因为它这个值啊,如果你直接写一个中号呢,Map后边它是一个切片,我现在直接得到里边值呢,就可以直接调那个它里边的一个方法啊,这里边的方法,那我们把这个写一下啊。
06:08
诶,嗯,通过它你对比一下,一个呢是带那个中括号的,一个呢是不带这个不带这个中括号的啊。在这个请求图中,呃,里边这个呢,值。属性带一个属性值。是哎,然后这块呢,哎,不是直接这样写了啊。直接点一个什么呀,Get对吧,点一个。Get括号我们里边传一下这个。看一下这个,我们来看一下这这两个最后在浏览器上显示出啊,它有什么区别啊,有什么区别好,那下面呢,我们来重新这个CTRLC把这个关掉,重新来编译一下。再来运行一下。man.exe好,来,现在呢,我们再来刷新。这个就不看了啊,直接刷新。
07:02
你来看。关掉,诶这个请求图中所有的信息有,哎是一个map,是一个map啊,嗯,里边呢,这个这就是我们那个请求图里边那些信息啊,请求图里面那些信息都给你打印出来了,什么用户的一些这个信息啊,什么用的这个Windows系统64位等等,这昨天我们看豹文的时候你也发现了啊,你也发现了,还有这个用的浏览器Chrome还有什么呢?呃,接收的这个。呃,接收的这一个类型就是内容的类型,哎,这个HM页面,还有这个其他的啊等等啊,还有什么接收的压缩格式啊,下面还有这接合的语言等等啊,所有音都在这,好,那下面来看我们通过直接r.head的哎中括号,因为它后边是个map对吧?哎,Map号我们把那个K传进去,比如呢,我就想得到你这个接收的这个内容这个类型,呃,这个接收的压缩格式,所以呢,传了一个这一个,呃中国话啊,里边传了一个accept的这个including,所以呢,最终呢,得到的是这样的一个s string类型的一个切片,那么如果直接掉盖德尔瓦呢,是不是就直接拿到里边的值了。
08:02
对吧,是没有这个中括的啊,没有这个中括号的,哎,不过一般啊,我们这个获取里边就比如这个,呃,我要获取里边的cookie啊,或者获取有一个属性,我们常用的那个属性啊,来说一下啊,我们把这个。在这也有啊,这这也有,有一个REF1212RAP那个啊那个属性那个属性这个它有什么作用呢?可以起到这个防盗链,还有这个什么呢?呃,广告计费的一个作用。什么是防盗链,知道吗?不知道有知道的啊,防盗链,比如这个我我网站里边啊,假设有一个资源,这个如果你要从这个其他网站有这个地址不一样嘛,诶直接要反过来想,比如想下载它,那我不允许你下载什么意思,只有你比如来到我这个网站,在我这网站比如转了一圈,浏览了一番之后,哎,这个再下那个资源时候,我才让你下,就说其他外部的一个地址,直接想直接过来之后呢,想下载它,哎不允许你下载,不允许你下载,哎只有这个,我发现你发的这个请求都是来自于我这个网站呢,根据这个地址,根据前面这个地址啊,你如果你比如这个假设啊商务谷,你想下载商务里边一个资源,比如从其他一个机构直接跳过来想下载,我就根据那个属性可以得到你这个你访问的这个地址,我看到3W点不是什么艾特硅谷点com,我就知道这个请求肯定是从其他地方发过来的,那我就不允许你去下载。
09:23
那要如果你这个在上谷这个网站上转了一圈,你再下载,那时候那个地址前面就是3w.at硅谷点com,然后后边是一其他的,那这个时候呢,我就给你下载就是这个还有一个广告计费,广告计费比如这个,呃,这个我们都知道啊,百度他这个诶你一部分钱好多钱都是通过这个给给其他这个商家做广告,对吧?啊不如假设啊,我现在假设我这个因为商务我没有在他们那做广告啊,没有给他们钱,这是真的啊,这是对商务没有在他投钱啊,没法在他投钱,假设假设商公我在他投钱了,比如那你这个,如果你要是在百度上搜的搜的这个商通过这个百度,比如点进去商务官网的话,那时候呢,比如我要这个给点一次,我给这个啊,给这个百度多少钱,点一次我给你百度多少钱,但是是不同的人啊,不能一个人一个人坏了是吧,这个百百度太挣钱了,你后一个人哗哗一直点一下两块一下两块一下两块,那我天天天天天个这个,我要是这个百度的人,我就命好多人,你天天个就一直点一直。
10:23
点我这个钱蹭蹭的就到我账户了,肯定这个就跟你平时这个,呃,投票也一样啊,只能投一次是吧,只能投一次这个也一样,你这个点一次跟你点多少次它都一样,根据你这个人那个不同啊,有点一次给他两块,那我怎么知道你这个是通过百度来来的这个上古骨呢,也是通过那一个属性啊,同样一个属性,这里边我看。这里边儿还没有是吧。我们来看一下豹纹啊,F12。昨天看那个豹纹信息的时候。啊,也没有看到那个你这个发这个请求的时候啊,发这个请求之后,这个还有一个属性,有一个属性,那个属性能能这个看到你这个请求来自于哪。
11:07
诶,这里边还没有啊,请求里边没有,诶那个比如要从这个百度啊,百度发过去的话,前面那个地就是3W点百度点com,那就要是你通过360那个测索引擎搜的话,前面那个地址就是360的地址了,所以呢,我这个时候呢,我就知道我不是通过百度来找到的商户,那我就不需要给你签备案,那是那个属性的一个作用啊,一个作用,像其他的这些请求,请求头里边这些信息啊,我们这个如果没有自己特殊的需求,基本上我们也不不获取它,但是你也得知道假设呢,我要我要想知道一下,比如你这假设你的用户信息啊,就像这个昨天也说了,有时候你访问一个网站呢,它能显示出来你这个用户的一些什么操作系统啊,包者用的这个什么谷歌浏览器啊等等啊这些信息呢,你就需要获取后边,诶这个里边的对应的值,那你得知道怎么来获取,用那个啊,点header这个传这个属性名,那就能拿到后边的值了啊,我就能得到里边的信息了,所以啊,这个了解一下啊,你也知道能得到这个请求图里边信息啊,就是这块啊,怎么来获取这个请投头里边的。
12:08
哎,如果你直接这个,因为它这个类型呢,是一个header header它是一个map啊map,哎,如果这个。直接这个呃,写个中号传那个属性呢,它得到是一个切片,哎,如果这个调杆的方法就能得到你想要的这个值了,所以这个呃类型是不一样的,得到这个结果是不一样的,好啊,这个嗯,了解一下啊,就是获取这个请求头里边这个信息,当然了,我们也可以获取这个请求题,但是请获取请求体,我们都知道cat请求呢,没有请求T,那所以呢,我们需要发一个POS请求,对吧,那发POS请求怎么发呢?我是不是得写表单了对吧?哎,我得写表单了,我们先把这个看一下啊,请求和想要想应的这个主题呢,都是由这个request结构中的body字段来表示,也就是我们这个来看到这个request,哎,来看这个D,哎,刚刚呢,我们用了一下这个。Request,我们再点一下它吧,找到我们的request啊。
13:00
不知道点了多少次了,哎,用了一下这个URL,用了一下我们这个header这里边呢,还有一个body,还有个body body里边呢有read cloudr,嗯,这个这个类型里边啊,L里边的,它有一个read的方法,就是读的嘛,哎,我得到这个题之后呢,我可以比如把这个里边东西给你诶读出来啊,给你读出来里边有个read方法。我们我们那个点开又又打开这个官方文档了啊,这个就不点了啊,我们直接看我们这我给你截的这个吧啊。Body字段,这个字段的类型呢,是这个L里边这个read closer这个接口,该接口呢,包含了那个read接口和close接口啊,那这个read接口closer接口啊,Read接口里边呢,有个read方法,就是读的意思啊,读的意思有cloud接口里边呢,有close方法关闭的意思,对吧,一看就知道什么意思啊read cloud接口呢,聚合聚合了什么,基本的这个读取和关闭的一个操作,就这里边呢,有这两个接口,所以呢,它就包含读和读和这个关闭了啊,读关闭了下边是这个read啊,Read这个接口里边的一个方法,就read方法,Read方法里边呢,这个你看啊。
14:05
哎,他需要一个啥。是不是一个一个。BAT的一个切片吧,对吧?哎,BAT一个切片啊,这块也有一个这个解释,这就是都是从我们那个中文那个官网文档里边截过来的啊,我们来看一下RA的接口呢,用于这个包装基本的一个读取方法啊,下边也说了啊,这个方法读取这个多少个字节的一个数据写入到这个P里边啊,就是你你这个你会需要创建一个字节类型的一个数组啊这个切片啊,这个切片,然后呢,这个他读的时候呢,就能读到这个切片里边了啊读到这个切片里边了,下边这块也说了啊,这个呢,都不一一一读了啊下边这块是一个close啊closer这个接口里边呢,有个close方法,Close方法那比如我要获取这个请求体之后呢,我就可以比如创建一个获取到一个请求题里边这个内容的长度,哎,内容的长度之后呢,下边我们就创建一个切片,创建一个字节类型的切片啊,下边呢,我们就可以把那个比如这个在最终把那个内容啊,可以在浏览上给你给你显示一下,就是相当于读了,因为这个get呢没有请求体,所以呢,我们必须得创建一个表单了,下边我们写一个这个表单是这个method为post请求,因为这个post有。
15:10
求体啊get请求呢,没有请求体,所以我们必须得来写它这块呢,就是这个处理这个代码了,哎跟我刚刚说的一样啊,获取一个内容的长度,就是你这个请求体里边内容的长度,哎,用这个r count Li,就这个内容这个长度,嗯,然后下边就是创建一个自己一个切片body还什么的make这个创建这个切片嘛,需要用这个make啊,这个传一个这一个自己的类型的一个切片啊后边呢是一个长度,下面就是读取这个进度提啦,也是用这个r.body r.body调一个这个read啊read把这个body传进去,就是我们刚刚看到那个read方法啊,就会把请求题里边内容呢,哎,给这个写到这个body,就读到这个body里边,读到这个body这个呃,切片里边了啊多这个切片里边了,那读完之后下边我们就可以来这个显示了,诶就转成一个ste类型,我们就可以在浏览器上看看出来了,当然你可以打印到控制台啊,我们这个为了这个看着方便呢,就直接在这个呃,浏览器上这个显示出来了啊显示出来了。
16:05
哎,好,那下面啊,这个我们把这个代码呢也来写一下啊,自己呢也来写一下,就是读取这个请求体了,也就是我们昨天说的这个,呃,请求报文就是你这个HTP协议里边的啊,请求报文包括这个响应报文,就请这个请求报文里边呢,有请求行,请求多就体这些内容呢,我们都可以得到请求行,哎,怎么来得里边的内容怎么得取,怎么得到请求头里边怎么来得到,哎,包括这个请求体也是一样的啊,所以呢,下面啊,我们来说一下这个读取这个请求体,那我也一样啊,直接就在这。在这里边来写了啊。在这边来写了,嗯,不再在创建一个文件了啊,这就在下边写了啊。那我需要干什么呢?获取是不是请求题里边这个内容的长度啊,对吧,请求题中这个内容的这个。长度好。
17:01
2.1个。2.1个。怎么没有啊?波点一个,诶波。Content content啊。Content内容的一个长度啊,内容那个长度,然后呢,我们再。给他一个,然后一个码。等于它获取这个长度,获取这个长度。之后呢,下面我们需要这个创建一个切片啊。这个BAT切片。把它切片啊,写一个什么就叫body了。就等于创建切片,用一个make。没吧?哎,中国二,哎,But。C。好哎,把这个Les呢穿进去好创建完了之后呢,哎,下边下边干什么呀,是不是读取这个body啊。
18:07
加这个body,加body里边的内容。请求题啊,请求题吧,写汉字了啊。读到读到这个玻璃中。来R点上一个。Body。点一个什么呀。Read,对吧?Read body body,嗯,读到这一个,读到这个里边啊,读到这个里边。我写错了吧?That。然后下面呢,我们就来在这个,呃,同样啊,在这个浏览器上,我们来看一下啊,在这个浏览器中。显示请求题中的那种好fmt,点一个print。
19:10
好,同样我们来打印一句话,哎,请求题中的这个内容。W。请求体中的这个内容。有逗号。我们把它转换一下啊,四菌。好在这个啊,那这个由于get没有请求体,所以呢,我们需要有一个标单,我们把昨天的啊,昨天那块有一个。页面上。啊,这有个页面粘过来啊,CTRLC。放到我们的request里边CTRLB好啊,点开它,点开它之后呢,我们这块测试的。
20:05
我们处理请求的这个叫hello啊hello。那页面哪个是。都关了,也不知道哪个是了,把这个改成一个哈。啊,Post,因为我需要发一个post请求啊,这个呃,发完post请求之后呢,我们才能看这个请求题里边的内容,其实呢,我们这个请求题里边内容非常少啊,就一个u name等于什么password那于什么?诶所以呢,这个呃,大家呃知道一下啊,怎么来得到诶我们也可以获取,不过一般我们这个不这样来获取,我们就是得到这个里边的user name password就是。获取请求参数,哎,就是下面我们要说的了,因为那什么呢,说Y6等等其他的一些字段啊。好,来,我们重新再来编译一下CTRLC。够慢点,够。
21:05
慢点,Exe。斜杠慢点,Exe。好,哎,来啊,我们把这个呢,页面得先打开。啊,这个index打开。打开之后呢,我们来看一下这个路径啊。哎哈,好没问题啊没问题,好来诶好的米123456提交。诶来看一下,好,这个时候啊,上面的信息我们这个之前都看过了啊,这个请求的地址什么的,查询组上也没有啊没有,然后下边因为这个请求,诶这个行里边啊,是没有那个的,诶我们这个呃,POS请求呢,请这个藏询支付上也是用户名密码那些参数呢,是在请求T里边的啊,没有在这个URL里边,所以这个里边是没有的啊没有的好请求题里边内容啊,就是这个,昨天我们也看了,看这个报文的时候,来我们再来一次啊F12。
22:00
点开我们再来这一个回来我们再来点一下好的ME123456提交好来点开它,诶往下翻。啊反这块呢,哎,这个VI source,这个就是这个form data,就是这个表单里边这个数据啊请求提出来内容就是我们这些用name等于什么,什么and password等于什么,所以呢,我们也拿到它了啊,因为这个其实这些东西啊,它提供了这些获取请求,行啊请求头还有请求体里边的信息,诶如果啊我们这个呃,没有特殊的需求,其实这些西我我们也用不着,其实我们用的多的是什么呢?是不是拿到用户输的这个u name跟password呀,对吧,拿到它来这个进行校验,有如呢,你要登录就看用户名密码到底对不对,所以呢啊,我们这个其实用的最多的核心的哎,这个功能就是拿着里边文本框或者密码框里边这个值,但是他也给你提供了啊提供了这种方式,比如你如果你要有特殊的需求,想得到的话,也是没问题的啊,是可以拿到的,所以啊在这块呃,获取请求行,就是获取请求报文里边这个信息请求行,请求所进行体怎么来得到,哎,够把我们这个呃。
23:06
提供的啊,有在这个request里边呢,有对应的一些字段,我们通过那个字段就能拿到这个报文里边的一些信息。好了啊,就是这个,我们把这个呢听一下。
我来说两句