本视频耗时五个月,共计三十小时,三十八分钟零基础自学黑客从入门到入狱,全套教学视频包括工具安装与使用、黑客攻防渗透测试等,共三百六十八集。此视频内容灵感很可能被下架,建议先收藏再观看。声明, 此教程仅供学习,禁止用于违法行为。我这里整理了二百多节网络安全公房教程和网络安全学习路线,可供大家学习。需要的三个期报大家好!本节课程是 h d p 协议分析下,主要由 h d p 首部字段题目讲解两部分组成。 hedp 首部字段是构成 http 报文的要素之一。在客户端与服务器之间以 http 协议进行通信的过程中,无论是请求还是响应,都会使用首部字段,它能起到传递额外重要信息的作用。 使用首部字段是为了给浏览器和服务器提供包含主体大小所使用的语言认证信息等内容。 http 首部字段是由首部字段名和字段值构成的,中间有冒号分割。 单个 http 首部字段可以有多个值。 h c b 首部字段有四种类型,通用首部字段、请求首部字段、响应首部字段以及实体首部字段。 通用首部字段是请求报文和响应报文两方都会使用的首部。 请求首部子段是从客户端向服务器端发送请求报文时使用的首部,补充了请求的附加内容、附加客户端信息、响应内容及相关优先级等信息。 响应首部子段是从服务器端向客户端返回响应报文时使用的首部,补充了响应的附加内容,也会要求客户端附加额外的内容信息。 实体手部子段是针对请求报文和响应报文的实体部分使用的手部补充了资源、内容、更新时间等与实体有关的信息。 下面对这四种类型进行详细分析。通用首部字段是指请求报文和响应报文双方都会使用的首部。其中常见的首部字段有 cat control connection, date and wire, 通过指定首部时段 catch control 的 指令就能操作缓存的工作机制。 connection 首部时段具备两个作用,第一是控制不再转发给代理的首部时段。第二是管理持久连接 date, 表明创建 hdb 报文的日期和时间。使用首部字段 while 是 为了追踪客户端与服务器之间的请求和响应报文的传输路径。 报文经过代理或网关时,会先在首部字段 while 中附加该服务器的信息,然后再进行转发。 首部字典 wire 不 仅用于追踪报文的转发,还可避免请求回环的发生,所以必须在经过代理时附加该首部字典的内容。 第二类请求首部字典常见的有 accept accept language、 authorization、 host referral 和 user agent 这几个字典。 accept 首部子端可通知服务器用户代理能够处理的媒体类型及媒体类型的相对优先级,可使用 type 斜杠 subtype 这种形式。一次指定多种媒体类型, 如文本文件使用 txt 斜杠 html 等格式。图片文件如 image 斜杠 jpg 或 image 斜杠 gif 等。应用程序使用二阶制文件,如 application 斜杠 octstream 等格式。 当服务器提供多种内容时,将会首先返回权重值最高的媒体类型。 accept language 字段用来告知服务器用户代理能够处理的自然语言级以及自然语言级的相对优先级,可一次指定多种自然语言级,按权重值 q 来表示相对优先级。 客户端在服务器有中文版资源的情况下,会要求其返回中文版对应的响应,没有中文版时则请求返回英文版响应。 首部字段 authorization 用来告知服务器用户代理的认证信息。 authorization 字段的值的内容,如 basic 认证是一段 base 六四编码的值。 通常想要通过服务器认证的用户代理会在接收到返回的四零幺状态码响应后,把首部字段 authorization 加入请求中。首部字段 host 会告知服务器请求的资源所处的互联网主机名和端口号。 host 的 首部字段在 hdp 一 点一规范内是唯一一个必须被包含在请求内的首部字段 相同的 id 地址下部署运行的多个域名,那么服务器就会无法理解究竟是哪个域名对应的请求,因此需要使用首部这段 host 来明确指出请求的主机名。 首部这段 server 会告知服务器请求到原始资源的 u r i。 客户端一般都会发送路由首部字段给服务器,但当直接在浏览器的地址栏输入 u r i 或出于安全性的考虑时,也可以不发送该首部字段。 因为原始资源的 u r i 中可能会含有 token 密码等保密信息,若写进路由转发给其他服务器,可能导致信息泄露。 首部子段 user agent 会将创建请求的浏览器和用户代理名称等信息传达给服务器 响应首部子段常见的有 location 和 server。 使用首部子段, location 可以 将响应接收方引导至某个与请求 u r i 位置不同的资源。 基本上该时段会配合重定向响应提供重定向的 u r i。 首部时段 server 告知客户端当前服务器上安装的 h d b 服务器应用程序的信息。 基本上该时段不但会注明服务器上的软件应用名称,还可能包括版本号等信息。 实体首部子段常见的子段名有 allow、 conditional 以及 conditional type。 allow 子段通知客户端能够支持的所有 h d p 方法,服务器会把所有能支持的 h d p 方法写入首部子段 allow 或返回。 当服务器接收到不支持的 h d p 方法时,会以状态码四零五 method not allowed 作为响应返回。 content length 字段,指明实体主体部分的大小,单位是字节。 content type 代表实体主体内对象的媒体类型。字段值用 type 斜杠 subtype 形式赋值。 下面我们通过几组题目的讲解来了解一下 ctf 中对 a、 c、 d、 b 协议分析的考察。 常见的考察的知识点呢,主要是有以下几,主要是有以下几种 method, user agent、 location、 reference 叉、 f f accept language、 cookie 以及自定义。首部字段。 对于 method 的 考察主要是下面这个场景,如 get 请求被过滤器或挂复拦截,我们可以通过转换成 post 请求的方式呢?绕过检测, 在 bootstrap 当中,我们也可以通过右键选择 change request method 来一键切换 get 和 post 的 方法。 下面看对于 user agent 的 考核题目描述是据说信息安全小组最近出了一款新的浏览器叫哈哈浏览器,有些题目必须通过哈哈浏览器才能答对,小明同学坚决不要装哈哈浏览器,怕有后门。 那么小明同学应该怎么样去做这道题目呢?首先这道题目打开之后,页面显示只允许使用哈哈浏览器,请下载哈哈浏览器访问,那么我们通过 bose 拦截请求包,可以看到 user agent 的 内容, 我们将 user agent 改成哈哈,那么即可得到 k。 我们再看对于 location 的 考核,这道题目打开之后是有一个超链接显示到这里找 k, 那 么点击该超链接之后,页面跳转到 index no k, 点 p c p 的 这个文件,页面显示 k is not here。 那 么对于这道题目,我们在点击超链接的时候,使用 boseuit 进行拦截, 可以看到返回包是一个三零二的一个响应包,在实体,在实体内容中隐含了一个 k 的 一个链接,那么通过访问 k 的 这个文件,那么即可获得,即可获取到 k 的 内容。 对于 ref 的 考核,主要是需要我们将 ref 的 纸改成比赛官方地址或者本地地址啊,再或者根据题目提示获取 ref。 对 于 x forward 的 fall 的 考核和对 ref 的 考核其实是比较类似的,那么我们来看对于叉 f f 考核的这道题目, 小明扫描了他心爱的小红的电脑,发现开放了一个八零端口,但是这个八零端口只允许本地访问,那么小明想知道该八零端口隐藏了什么秘密,那么该题目打开之后呢?页面显示必须从本地访问, 那么我们通过 bootstrap 的 拦截该请求添加 xforward 的 file 子段,并将其复制为幺二七点零点零点一即可。 对于 accept language 的 考核呢,题目描述一般也都相对比较明确, 我们来看这道题目,小明同学今天访问了一个网站,竟然不允许中国人访问,那么小明同学想一探究竟,那么这道题目呢?打开之后显示 only for foreigners, 也就是说只允许外国人访问, 那么我们通过 boseol 的 拦截这个数据包,将 accept language 改成英文,那么即可获取到 flag。 下面看对于 cookie 的 考核,题目描述是小明来到一个网站,还是想要 k, 但是却怎么都登录不了,你能帮他登录吗? 那么对于题目当中提到的登录,我们可能一般都会联想到 cookie, 那么这道题目打开之后呢?页面显示必须要登录才能得到 k, 那 么在 bootstrap 拦截数据包发现 cookie 的 值的内容是 log in 等于零,那么我们通过将 log in 等于零改成 log in 等于一,即可获取到 k, 这是通过篡改 cookie 来伪造登录的一个过程。 最后我们来看自定义,手不自断的这类这类题目,这道题目打开之后,页面显示 k 就 在这里,插在这里是哪里呢? 其实对于题目的描述比较明确,说明 k 就 在当前页面,那么我们通过 boseio 的 进行拦截。在响应报文中,我们可以看到 k 这个字段, 那么这个字段的字段内容即是 flag, 其中这个 k, 这个就是嗯,服务端自定义的首部字段。
粉丝1678获赞8718

谁告诉你 h t 两百就一定成功了?昨天这个两百啊, ok, 差点让整个团队集体下网,监控大盘全是绿色的,没有报错,没有异常,但是业务那边的报警电话直接打爆了,所有的功能全部失效。 事情是这样啊,公司要求统一升级 htv client, 从阿帕奇的 htv client 直接升级为公司基础架构封装的内部的 htv client。 一 般说呢,这个升级都是兼容的,而且基础架构团队都是做了大量的兼容测试的, 直接平替代码基本不用怎么改。上线后请求通了状态码两百,但下游服务像失忆了一样,说手表参数全是空, 这个时候干什么,马上立刻回滚恢复线上再查案。查了半宿,终于破案了。原来在旧代码里啊,偷偷有一行配置,它默认加了一个 header contact type 等于 form url encoder, 还新组件漏了这行配置,导致服务端解析不到参数。这就好比啊,你发了快递,但是没贴快递单,服务端直接把你当空气,他不抛错,是因为他觉得你本来就没发参数,所以给你返回了个两百。 但是啊,就是这最坑的隐形部长,以后做千爷千万别信什么理论,兼容这一行,嗨点就是生死线,你们被 l t b 等于两百给骗过吗?评论区聊聊。

今天给大家分享一个我开发中遇到一个就是不常见的问题啊,这个问题是怎么样的?就是我这里做了一个页面,这个页面可以用来处理图片,然后他这里有个就是转圈呢,叫 loading, 嗯,处理完了之后会返回给我,整个过程中没什么问题啊,但问题在于我想要做进度条, 我想要去做进度条的话,就要获取这个这个请求响应的一个空乘的冷室,但是,呃,接口是我自己选的嘛,但是我设置不了他的空乘的冷室,所以我做不了他的这个进度条, 因为我调用的是一个第三方的接口,但是他那个第三方网站上他那个展示的就是处理这个图片 颜色,它是有这个进度条的。我们先看一下我的代码呀, 代码这里的话很简单,就是我这里就是打印了,他这个就是长度啊,这空城认识这个这个这个空城认识是一个第三方接口返回给我的, 他这个长度是对的呀,我们可以看一下我们的这个页面上呢, 他这里最后一条也是给我收,收到的是放大一点,也是二零二二七四啊,最后一条接收了,但是后面的这个后面这个是拿不到的, 嗯,就是我传说过程中我设置了这个空的认识,但是前端的这个页面呢?他没有, 这就很奇怪啊, 我们会看到啊,他这个响应头啊,这个响应头是我设置的,他这里就空正态,我设置的 emat pnt 没问题啊,但他这个空中认识就是设置不上去,但是仔细一发现,我会不会发现他这里有一设置了一个 transfer encoding travel, 我怀疑是这个东西影响的,然后我就去搜了一下它, stake opt for flow 上面就有一个这条这个人毁的 回答的,然后他问这个 trunk and coding and content, 这个回答,他这里是说就是消息不能,就是两者都包含了, 不能去包含这个空洞认识和那个就是全国人扣的,他这里还给了一个链接, 就是说如果这个消息题就是包含了那个全球文扣点,那么他的这个空投的认识就会被忽略,他给了一个链接,这个链接上面也说的很清楚。 再说如果一个消息收到,就是既包含这个 transform coding 的 头,又爆发这个 continent 的这个一个头,那么这个后者将会被忽略掉。 那怎么处理这个修复这个问题呢?那修复这个问题就很简单了,那下面有个回答是说我们把这个不要取这个名字啊,就换一个名字,换 falsei 的,我们按他的这个就是改一下市场, 我这里拿到的单码稍微修改一下, 这拿了,这,这后面这个空轮轮是不用改,这前面这个改一下,就是我给他给我自己设置了一个标赛, ok, 就是把这个 file size 传给前端了,然后呢啊,我前端的这个页面也要改一下,就我这里是取的时候呢,就取他的这个 file size, ok, 我们试一下啊, 选择图片,选择这张图, ok, 没有问题啊,完全没有问题啊,他的 后面这是他这个图片的大总的大小,前面是他搜到的,那就那我就可以根据他这个搜的这个大小,然后呢去做一个进度条啊,他可能会很快, 这个问题不常见呐。嗯,因为我写的这个项目他是属于一个全站的,这接口啊,都在接口和前端页面都在一个项目里面的,所以一般的人很少很难遇到这种问题啊。 如果大家遇到的话,希望能给大家有所帮助吧,今天分享就到这里,谢谢大家。

autumn 爬虫教程第二集 http 请求和响应我们上个视频已经了解了获取网页内容的基本流程,向网站服务器发起 http 请求,然后服务器响应我们的请求。那么我们发起这个 http 请求到底是什么样子的呢? 服务器响应给我们的又是什么东西?我们可以先在浏览器里直观感受一下,打开浏览器的开发者模式,右键点击页面选择检查, 然后点击到网络这个选项卡下面如果是英文的界面,那么你需要点击的是 network 这个选项卡。重新加载一下数据包,你会看到下面出现了非常多的请求记录。 找到这个主要的三 w 点百度点 com 的 请求,你就能看到完整的 http 请求信息了,这里面包含了请求的网址、请求方式、响应标头和请求标头等内容。浏览器已经帮我们自动过滤好了这些内容。如果你想看原始的报文格式,也可以直接点击原始选项查看, 这些就是我们之后写爬虫代码时要操作的基础内容。在浏览器里感受过之后,我们再来系统的看一下 http 请求到底包含什么。 我们发起的 http 请求主要由三部分组成,请求行、请求头、请求体。在请求行里面会发送三个信息,第一个是请求方式,最常见的有两种, get 请求和 post 请求。 get 请求通常用来获取网页内容,当我们想要看小说、看视频的时候, 就用 get 请求直接观看网站给我们看的内容,使用 post 请求就可以提交数据。例如在我们登录网站的时候,需要将我们的用户名和密码传送给服务器,由服务器验证是否正确,才能够登录。第二个信息。请求行内的路径,也就是我们想访问的具体页面在网站中的位置。 比如你在百度搜索雷军,进入他的百科页面后,看到网址栏中百度百科的网址是三 w 点百科点百度点 com, 那 么后面的后缀就是雷军的百科在这个网站中的路径。 第三个是 http 协议版本,比如 http 一 点一。 http 协议有多个版本,零点九和一点零基本已经被淘汰,大多数网站目前仍在使用一点一版本。 虽然二点零和三点零已经推出,但升级需要成本和技术改造,目前还没有被广泛采用。 在 http 请求的请求头内,会发给服务器客服端的信息,主要是搞清楚向哪个网站发起请求,又谁发起的请求。在这里 host 的 后面的就是要告诉服务器用户想要访问哪个网站。 user agent 就是 标明客户端的身份信息,告诉服务器发起请求的是谁。爬虫也可以通过这个伪装成浏览器向服务器发起请求。 accept 里面的内容就是告诉服务器客户端能理解的内容类型,以及优先接受什么格式的响应内容。 如果是浏览器,一般请求的是 html 原始文件。请求体也叫做载荷,通常只在 post 请求中出现。 get 请求一般没有请求体,因为 post 请求目的主要是给服务器传递数据,例如在你登录时填写的用户名和密码等等,就放在这个里面。搞清楚请求之后,我们再来看 http 响应是什么,它同样包含响应行、响应头、响应体三部分, 响应行内的内容有这些,大家看到这个 http 一 点一是不是很熟悉呢?没错,它也是协议的版本, 在协议版本后面的两百表示的是状态码,这是一个非常重要的信息,这个三位数的代码会告诉你请求成功了没有,如果显示的是两百,就表示你的请求成功了。 如果显示的是三零一,就表示网站的内容被永久从定向了,也就是网站转移到了新的地址。如果显示的四零四,就表示我们访问的网页并不存在,或者没有找到。如果返回的是五百,就表示服务器内部出现了错误。第三个内容表示的是状态文本, 是对状态码的简短文本描述,比如说 ok 或者 not found。 响应头内包含需要告知客服端的信息,比如返回内容的类型、编码格式、内容长度以及服务器的类型和版本号等。响应体里装的就是我们真正想要的东西, 服务器返回的实际数据。如果请求的是一个网页,这里就是 html 代码。通过这个视频,相信你对 http 请求是怎么发起的,请求里包含什么,服务器又返回了什么已经有了比较全面的了解。 虽然我们还没开始写代码,但是已经为编写爬虫砥定了坚实的基础。好的,下个视频我们就正式进入实战,看看爬虫代码到底该怎么写,我们下个视频再见!

htep 报文包含哪些部分?我们分请求报文和响应报文来说明。请求报文有四个部分,第一个部分是请求行, 包含请求方法,请求的目标,还有这个 hte 的 协议版本。请求方法一般有四个, get, 就是 字面意思,直接获取资源。第二个是 put, 一 般用于更新资源。第三个是 post, 一 般用于这个提交些数据。 最后一个是 delete, 也是字面意思就是用于删除。第二个部分是请求头,请求头包含关于请求的一些附加信息,比如说 host, user agent 还有这个 content type, 实际上这个过程可以想象,可以想象成两个人在聊天,他们要建立一个连接,那么这个客户端呢?想跟服务器建立连接,他要告诉服务器我是谁, 我要找谁,以及我跟你说的话,也就是我给你发送数据是什么格式?好,那个 hos, 首先 hos 他 就是解决一个我要找谁的问题,他代表他就是他指定的是请求的目标域名和端口, 那么服务器它说请求之后,它要通过 host 字典才能判断要访问这个服务器上的哪一个网站。嗯,一般说在 hdd, 呃,一点一版本当中呢? host 它是必须包含,那么请求头如果没有的话,服务器会返回这个四百兆的码,就是 back request。 好。第二个是 user agent, user agent 也就是简称 u a 了,它就解决的是我是谁这个问题,我们前面说 host 解决是我要找谁的问题, user agent 解决是我是谁的问题, 那 agent 像是代理的意思吗?也就是 user agent 就是 客用户,代理就可以理解成它是客户端的身份,一个一个身份的标识啊,就告诉服务器我是用什么浏览器,用什么设备,用什么程序啊,向你发出请求。 那比如说服务器可以根据你的 u a 去判断你是手机还是电脑,那么就给你返回不同的页面了,根据你这个 u a, 第三个就是 content type, 它解决的就是我跟你说的东西是什么,就比如说我跟你说的是英语还是德语,还中文还是日语,就解决这个问题,它就告诉服务器我给你, 我给你发的数据包是什么格式的。那这一般来说肯定是只有在有请求体的时候才会使用,因为,呃,你 get 方式一般就没有请求体嘛,他不会有这个头啊。 pos 像提我们说提交数据 它就有请求体, put 也有请求体是吧?好,那么一般是常见的,最常见就是前后端分离开发里面的那个 application 杠 jason 就 请求的是一个 jason, 字不串,但如果你要上传文件的话也有这个。呃, multi pop form data, 就 上传文件用这个请这个 comtext。 好,那么这是请求报文的第二个部分,请求头部。第三个部分是空行,就是用来分割请求头与这个请求体。 好,第四个部分就是我们前面提到这个请求题,请求题是什么?就是它包含你要请求数据,一般来说用于这个 pos 请求这些需要传输数据的情况。我们说 pos 它用于什么?是提交数据吗?对不对? pos 用于更新数据,这是请求报文的四个部分,请求行、请求头、控行,还有一个请求体。 那么接着再说响应报文。响应报文也是四个部分,第一个部分是状态行,状态行包含 h d p 的 协议版本、状态码,状态码有五大类啊。对,我们后面再讲。还有状态信息 第二个部分是响应头,呃,这个跟这个响应报文是差不多对应的。第二部分是响应头,响应头包含这个关于响应的附加信息,比如说 content type, content length 啊,还有这个如果是状态码是三开的话,就可能还有 location, 就 资源重叠项目。 这大伙在讲那 content time 跟 content life 也是这面意思,就是服务端告诉客户端我给你返回的数据是什么类型的,什么格式的, 以及我给你返回多大的数据。好,那么 content time 就 不用说了,就是也是一样,就是你要你要知道对方说什么语言才能沟通嘛。啊?那 content life 为什么要 content life 呢?是因为有 content life, 客户端就可以知道 我接收的情况怎么样。那一般说客户将他接收请求之后呢?他会先得到这个 content name, 从这个选项里面得到 content name 就 知道啊,比如说我这次我要接收呃,幺零二四个字节这么大小的数据,这么大小这么这么一个大小的数据啊。 好,那么他开始读之后,就是他先得到这个 content name 再开始读数据嘛?接受数据好, 如果他接受数据发现我实际接受的字结束比这个幺零二三还小,就已经结束了,那么他就可以判断哦,这次他可能丢包了,或者是网络出问题了,那么他会可能会触发重连啊,或者直接就出错了,是吧?这就是 ctrl shift, ctrl shift 之类的。第三个部分也是空行,用来分割响应头跟响应体。 第四个部分就是响应体就包含相应的数据了,就比如说你请求的这个呃,就服务端返回给你的返回给返回给你这客户端的这个 html 或者 json 这些内容。好,那么前面说到状态码有五大类, htp 长端的码有五大类,分别是以一、二、三、四、五开头的,那么一开头的一般是一个中间状态,就表示它是,它是一个提示性,就表示就是是处于一个协议处理当中的一个中间状态, 是一看到用的比较少这个东西。二的话呢,二呢是我们想看见的,就表示服务器它成功处理了客户端的请求。三开头表示资源同性相, 就是扣端他请求的资源发生了变动,他的位置发生了变动,你要用新的 u r 幺去发送,重新发送这个请求去获取资源,这就是重进项,那么三零幺就是永久重进项,三零二就是暂时重进项。 四开头状态码就我们最常见的四零四,对吧?四零四,四开头状态码就表示客户端它发送的这个豹纹有误,服务端就无法处理。 五开的状态码就表示客户端他请求的报文是正确的,但是服务器在处理的时候内部发生了错误啊,这属于服务器端的这个错误码。比如说,呃,当我们就做餐餐外卖的时候,你服务器端你写了一个呃,除以零的这么一个式子,那他就给你报五百状态码,因为你服务器内部出现错误了。 好,那接着五零二还有个五零二跟五零四的区别, 五零二就表示 bad gateway, 就是 作为网关或者代理工作的这个呃,服务器它尝试执行请求的时候,它从上游服务器接收到了无效的响应。 bad gateway 嘛,就很好理解, bad 就是 无效的响应, 五零四呢,就是 gateway timeout, 就 很好理解了,就是超时了,就作为网关或者代理工作的服务器,它尝试执行请求的时候呢,从没有及时, 没有能够及时的从上游服务器收到这个响应。比如说,呃,我们使用 nix 作为这个代理服务器啊,然后他收到客户端请求之后呢,他会将这个请求转发给我们的后端服务器 tomcat, 那 如果 nix 他 收到了无效的响应,那就返回五零二, 这是 bad gateway, 如果他超过了自己配置的时间之后,还没有收到这个请,还没有收到这个响应的话呢,他就会返回五零四, 这就是状态码,状态码就五种幺三四五开头的,然后三零一就是永久重进项,就表示请求资源不存在了啊,三零二就表示临时重进项,就暂时重进项,请求资源还在,但是需要用另一个 url 返回。 然后我们前面也说了,三零一跟三零二都是在响应头里面,响应头字段里面就有个字段,使用一个字段 location, 就 指定你后续要跳转这个 url, 然后 呃,五一二三四五三,说明了一下,五也说明了一下。五零二跟五零四,一个是 bad gateway, 就是。 呃,收到无效的响应,五零四就是 gateway timeout, 就是 没能及时收到响应。

好,来看这道题,跨域问题通常出现在哪些 http 请求方法上面,那么因为这个浏览器呢,它是有同源策略的,那么跨域的时候主要影响到 http 的 这么几个方法啊。第一个呢就是 get, get 呢,就是来请求资源的详情,比如说请求一个图片、音频文件或者其他下载的文件,对吧?尽管说这个 get 请求呢,通常是没有危害的,但是在这个跨域情况下,如果目标服务器设置有这个正确的这个 course, 那 么我们就可以获取到,但是它如果没有设置这个 course 的 话,那你就没有办法获取这个资源了。第二个呢就是 post, 那么 post 呢,一般都是用于指向指定资源去提交数据,比如说提交表单信息或者图像上传。那如果尝试向不同源的服务器发送这个 post 的 请求的话,那这个服务器呢,就呃 就应该去设置这个 course 响应头,否则的话,哎,就会请求失败。第三个呢是 put 和 delete, 这两个方法呢,分别就是用来更新现有的资源和删除资源,它们同样呢会受到同源策略的影响,那如果没有适当的跨域支持,这些请求呢,也会受到限制,好吧。第四个就是 patch, patch 它呢,主要是对已存在的资源做局部的更新,和 put 和 delete 一 样, patch 呢,它可能会遇到跨域的问题。好吧, 那么需要我们注意的是,对于一些呃非简单的请求啊,比如说就像除了 options, had 或者 get 之外的请求,浏览器呢还会发送一个预检请求,那么这是一个 options 请求,对于呃就是用来询问服务器哎,是否允许后续的这个请求?如果服务器没有正确配置响应,那实际这个请求呢?也不会去执行 简单的请求。你像 get 呃 post, 如果只携带了简单的请求,头部就不会触发遇见请求好吧,但是呢,仍然会受到这个同源策略的一个约束。总之啊,我们在开发过程当中,只要涉及到和其他源的交互,无论是哪种 http 请求方法,都会遇到这个跨域的问题。 ok, 这个呢,就是这道题的理解了。

点开以后这里有个继续访问, 这里有基础食品, 有纸样设计,裁片设计,裁片方法,材料中心,纸样设计。 点开以后呢?点了以后呢?往下滑,这个点开 操作区,按住左键拖动鼠标松开之后即可做出一个方框,同时呢弹出一个设置对话框, 那么这个对话框横向箭头里边这个数据还有一个更好的方式,从这里搜,你说我要方框,我忘记了,我搜一下,然后点击搜索,这是我们的方框就出来了, 操作区按住左键拖动,下面我们来看一下,松开之后即可做出。

今天在项目中遇到一个问题,发送 http post 请求时遇到了参数非法的问题, 在请求 url 中携带了格式画过的时间字符串,时间字符串中带有空格。我代码中的 http 请求是这样的, http client, 然后 new 一个 http post 仿参数 url 组装需要的 hidden 或巴黎参数执行请求,结果就是报错了,报错说明是所以在 dn 处的查询中的非法字符把带有时间的字符串分为了两部分,一部分到日期处结束,另一部分又从小时处开始。 可以简单看下我的报错结果,没有截取项目中的报错,可以直接看我复制的这个报错结果,在时间处分为了两段,并且还提示了在哪出有非法字符的产生。 说重点怎么去解决这个空格的非法字符,就如下面这样,把带有空格的字符串替换为加号来解决有空格非法字符的问题。以上是项目中的真实经历,希望大家看到以后。

picasa 爬虫教程第三集 request school 的 使用浏览器向服务器发起请求,然后获得到服务器响应的页面内容。这个过程我们可以想象成去奶茶店买奶茶,奶茶店就是服务器,奶茶就是我们想要获得的内容。 如果我们想用代码模拟这个行为,就需要借助一个非常实用的 python 库 requests 库。接下来的时间,我们就来学习怎么使用 requests 库,并通过它发起请求,抓取并保存百度首页的页面。 request queue 是 一个第三方库,所以我们需要先在终端中以命令的形式安装它。打开终端,在终端内写上 pip install requests, 然后按下回车就可以下载安装最新版本的 requests queue。 安装完成后,如果终端显示 successfully installed requests, 说明安装成功了。如果之前已经安装过,就不会出现这句话,而是显示 requirement already satisfied 表示你之前下载安装过这个第三方库。你也可以在终端用 ppleist 的 命令来查看当前已经安装了哪些第三方库。 成功安装好 request 库之后,我们来看看怎么用它。发起请求使用第三方库之前,除了下载安装,还有一步很重要,那就是在 python 文件中导入模块。 大家还记得之前讲过的三种导入方式吗?第一种是直接导入整个库,第二种是只导入库中需要使用的方法, 第三种是导入库并给它取一个别名。这里我们采用第一种方式直接导入整个 request 库。上个视频我们已经了解了发起 http 请求两种常见方式, get 请求和 post 请求。在 request 库中发起 get 请求就用 request 点 get 方法。 发起 post 请求,就使用 request 点 post 的 方法,当然光写这两个方法还不够。 request queue 不知道你想对哪个网站的服务器发起请求,所以我们需要在方法的括号里传入参数。第一个参数当然是最重要的,也是不能省略的,就是传入你想抓取的网页的网址。 比如我们想向百度首页发起请求,那么就以字母串的形式把网址传进去,告诉 requestcool 我 们想访问哪个地址。现在我们对服务器发起了请求,我们发起请求,服务器会对我们的身份进行甄别。而现在我们是以 requestcool 爬虫的身份发起了请求, 就相当于一个机器人想要去奶茶店喝奶茶,奶茶店老板看到后觉得机器人没有味觉,不想浪费自己的奶茶,就不会给机器人奶茶。那么作为机器人如何伪装自己成功买到奶茶呢?还记得之前我们在浏览器里看到的请求头吗? 浏览器发起请求时,会在请求头里带上自己的身份信息,也就是 user agent 发送给服务器。我们只要让 requests 也带上这个浏览器的身份信息,就能成功伪装成浏览器。那么我们怎么获取浏览器的身份信息呢? 在浏览器里右键点击页面,选择检查,进入开发者模式,然后切换到网络这个选项卡, 刷新页面,然后找到这个蓝色的图标。三 w 点百度点 com, 我 们在右边的标头中就可以看到浏览器发起的请求,以及响应 上个视频学习的浏览器发起 http 请求,找到请求头内会写上的 user agent, 用户代理复制上这一串浏览器的身份,然后在我们的代码里把这段身份信息放进 header 参数中, headers 表示的就是标头, user agent 和浏览器的身份存在对应关系,所以使用字典的形式储存,然后作为参数的值放入了 request queue 发起请求的方法中,这样我们就将 request queue 发起的请求包装成为了浏览器发起的请求。 写好这个方法之后,你就会获得服务器的响应。以 get 请求为例,我们把响应的内容保存到一个变量里,这个变量我们叫做 response 响应。那么我们现在打印一下这个 response, 发现 request 库将响应的内容打包成了一个对象。在这个响应对象里有两个我们最常用的属性,第一个 http 状态码, 使用 response 点 status code 属性,我们就可以查看 http 状态码,通过状态码我们可以知道发起的请求是否成功。第二个 response 点 text, 这个属性里面装的就是服务器响应给我们内容中响应体里的具体内容。 学习了怎么发起请求,怎么获取响应内容之后,我们来通过抓取百度浏览器首页的形式来实践一下如何使用 request cool 成为一名爬虫吧。 在拍唱中,我们需要新建一个项目,所以我们在这个主菜单中选择新建项目,然后在这里写上你新建项目的名字,在这里我不做修改。爬虫项目需要使用到虚拟解释器, 所以我们创建项目的时候需要做出一点修改,我们需要将环境勾选这个生成新的解释器,解释器的类型选择这个虚拟环境。简单来说,你可以把虚拟环境想象成一个独立的干净的项目。专用工作间,你之后可能会同时开发多个 python 项目, 不同的项目可能需要同一个库的不同版本,为了避免版本冲突,所以我们需要使用到虚拟环境。 接下来我们点击创建,打开这个新窗口。大家需要注意的一点是,虚拟环境是独立的,所以在不同的项目中使用同一个第三方库,例如 request 库都需要重新下载,那么现在我来重新下载一下 request, 点击到终端,然后在终端以命令的形式写下 pip install requests, 然后按一下回车。现在终端就开始下载 requesttool 了,成功显示了 successfully installed。 那 么我们使用 piplist 来看是否成功地下载了 requesttool。 在 这里我们可以找到 requesttool, 那 么说明我们已经成功下载安装了 request 第三方库。 接下来我们就可以完成我们的第一个爬虫项目了。在这里我们新建一个 python 文件,取名为 catch。 百度创建了这个 python 文件之后,我们在这里需要做的第一步就是导入 request queue, 写上 import requests。 现在我们已经成功在 python 文件中导入了 request queue, 使用 request queue 发起请求,那么我们需要使用到的就是 request 点 get 方法。 因为我想要抓取的是百度的首页,不需要传递密码和用户名给服务器,那么我直接使用 get 方法输入百度的网址,然后将抓取的内容给变量 response, 复制给 response 之后,我们将响应体的内容,一般来说都是网页中的原始 html 文件,我们将网页中的 html 代码写入到我们自己创建的 html 文件中。 写入文件,我们需要先打开文件,写上 whatsopen, 使用 w 写入模式创建一个百度点 html 文件,并且在这个百度点 html 文件中写上我们获取到的百度的网页 html 文件。 现在我们来运行一下这段代码,可以看到这里出现了报错,这是为什么呢?因为我没有将文字编码形式改为 utf 杠八, 所以在这里我们一定要记住将 encoding 改为 utf 杠八。再次运行这段代码,可以看到在这里已经自动创建了百度点 html 文件,点开这个 html 文件,已经成功写入了一些 html 代码, 那么我们在这里使用浏览器打开,可以看到我们已经成功抓取了一个类似百度首页的页面,但是还是出现了一些乱码。为什么我们已经将 encoding 改为了 utf 杠八,还是会出现乱码呢? 那是因为服务器已经识别了我们爬虫的身份,触发了反爬机制,没有给我们准确的信息。那么我们在浏览器中打开百度,点击检查, 找到网络,然后重新加载数据包,查找到这个三 w, 点 baidu 点 com 这个蓝色图标, 将 user agent 用户代理复制下来,点击复制,然后我们以字典的形式粘贴到这里面,直接粘贴的话,我们需要给它们加上双引号和冒号。成功粘贴好用户代理之后,我们记得在请求的时候,将用户代理写入到标头中,再次重新运行这段代码,打开百度点 html 文件, 现在我们再次在这里打开浏览器运行,得到的就是和百度首页一模一样的内容。大家可以看到在这里是三 w 点百度点 com, 也就是百度自身的网页,而这个是我自己创建的百度 html 文件,网址是这个样子的,我们抓取的页面和浏览器发起请求获得的页面是一致的, 使用这种方法你就可以抓取到大部分网站的原始网页了。不过爬虫的最终目标并不是保存整个网页,而是从网页中提取出我们真正想要的有效信息。所以下个视频我们就来学习如何从这些原始内容中解析出自己想要的数据,我们下个视频再见。

川式课堂每日一个小知识之 h t t p 请求测试小案例。大家好,今天呢再分享一下,就是怎么通过 pdf 的 这个工具呢,来去代替浏览器发请求给服务器,从而呢达到一个接口设置的效果。 那在 pdf 的 这个工具当中,它有一个功能叫做 combooster, 那 么这个功能呢,它就是可以直接呢向服务器发请求,那么在这个里面呢,是可以定制你的请求的内容的。那首先看一下啊, 这里面呢,这个下拉框里面呢,会有请求的方法,你可以呢发送 get 请求啊,也可以发送 post 请求等等啊。然后第二部分呢,是要填你请求的资源的地址哦, url 这个地方是可以填地址的。然后第三个呢,是你 去选择请求 h d p 请求以其他的版本号,那么在接下来这个窗口里面呢,是可以去填你的 head 的, 就是请求的 head 的, 那这个这一部分的内容,然后下面这个框呢,是 body 部分,那么 body 部分呢,取决于你是怎么样的请求, get 请求的话, body 是 空的,所以呢,它这个地方是灰色的 哎,如果说你是 post 的 进球呢,标题部分就可以填内容了,这样子好,我们可以尝试一下,比如说我现在需要访问百度,那我就直接呢百度 get 百度的这个地方填百度的地址了, 三 w 点百度点 com 版本号还是一点一,然后填好以后呢,直接点这里执行,他就会向服务器发起请求,同时我们在这边筛选列表里面可以看得到这个请求的内容。双击啊,打开它,百度呢,服务器其实给出了响应,这是它的响应报文, 这个呢是百度响应的页面的信息,对吧?百度的页面啊,在这里。好,同时呢,我们去测试的时候呢,其实也不是说完全一定要自己去写这个请求啊,我们也可以呢,直接去拉一个前面已经发生过的请求呢,直接改一改它就好了,比如说我这个地方有个登录的请求啊, 可以看一下,那么这是一个登录的请求,登录的时候呢,它是一个 post, 并且的话它下面呢会有它的 请求的参数,比如说账号密码在这里,我这个地方呢,假如说我改成空密码,我想发一个呢,账号是我的命,然后密码是空的,请求给服务器呢,他会怎么样?其他的我不改,那直接点一下 xq 的 这个执行,执行完以后呢,服务器也会给出响应。哎,我这个账号密码为空的时候呢,服务器给出响应是怎么样的呢?看一下 这个吃土,这个吃土呢,可以看得出来服务器呢他会响应,就你的用户名或者密码错误。这种测试呢,其实就只用于我们在做接口的时候呢,你不停的去修改这个参数,然后同时达到你的服务器的响应,是怎么样的一个效果?


哈喽,大家好,我是软件测试技术老师黄工,接下来我们继续来学习拍摄接口自动化测试之第一章第七小节关于 http 请求头与请求 url。 那么除了上节课呢,已经教大家去了解了一下常规的 get 请求跟 pose 请求,其实还有一些其他的一些请求方式啊,就比如说在这里呢,给大家标出来了啊,有这个哎, put 啊,这两个请求呢,就不再具体的说了啊, 就直接哎在这里给大家写出来了啊。 get 就是请求指定的页面信息啊,并返回实体主体。 pos 呢,就是向指定资源提交数据进行处理,请求数据呢,它是被包含在请求体中。那么接下来 就是这个破的请求,破的请求的话呢,他就是从客户端向服务器传送的数据取代指定的文档的内容,实际上就是更新嘛,哎,这就修改啊,你看他向服务器传送的数据呢,用来取代啊,他本来指定的那些内容就是更新嘛, 然后再下一个请求就是 party。 party 的话,这个请求呢,跟这个请求是一样的啊,也是用来更新的 哎,他就是对这个铺的请求的一个补充,用来对已知资源进行局部更新哎,他跟他唯一的区别就是上面这个铺的的那可能是一种全局的 哎,把所有的这个传统的数据都把它进行替换啊,但是这个 party 的话呢,它是对于已知的资源呢,进行局部更新就可以了啊。 下面一个请求就是迪丽的请求,迪丽的请求的作用就是,哎,请求服务器删除指定的页面啊,通过这个请求就可以把对应的指定的页面把它删除掉 啊,好,再往下面走,就是黑的啊,这个类似于 get 请求,哎,跟 get 请求差不多啊,只不过返回的响应中他没有具体的内容,哎,仅仅是用来获取标头啊,这个爆头,哎, 好,再下一个就是 connect, connect 的是 http 一点一协议中预留给能够将连接改为管道方式的一个代理服务器的一个请求 啊,这个请求的话呢,哎,是预留下来的啊,好,再下一个就是 options, options 这个请求是允许客户端查看服务器的性能,比如说如果后面要 哎提供服务器啊,提供客户端可以查看服务器的性能的话,我们就可以用这个 option 的这个请求啊。好,最后一个请求就是 tress, tress 的话呢,它是用来回显服务器收到的请求哎,主要用于测试或诊断 啊。那么后面这四种的话呢,用的比较少啊,大家呢,可以哎,稍微的了解一下就可以啊, 主要呢,我们本套课程呢,哎,也就是说我们工作中用的最多的还是哎,前五种就是 get, post, put, part, 还有叠利的,所以后面呢,我们会通过一些哎结果测试工具呢,会给大家重点演示一下这些请求的这个哎传递方法啊, 好,那么接下来呢,我们来看一下关于这个请求, url 请求, url 就是请求的一个网址, 据统一资源定位服,这个前面我们讲过啊,用统一资源定位服就是 url 可以唯一确定我们想请求的资源,比如说我们,哎,上节课访问了这个哎,百度,对吧,我们当时呢去搜索了一个 ap new, 大家还记得吧, 现在呢,我们重新来,哎,获取一下,比如说我这里啊,我先把它清空,先停掉,比如说我这里输入一个 app new, 哎,我输一个 app new, 好,然后呢我点击百度一下,好,这时候假如说我现在再次来抓包,好,再次刷新一下,好,大家看,那么我这里呢,就可以看到一系列的这个请求啊,我把它停止啊,现在一共有九十四个请求啊, 在这个请求里面呢,我们就可以看到,哎,我对应的这个,呃参数应该就是,哎 ap new w d 这里应该有显示,你看看到没有,哎,那么我们也可以在这里呢,哎,通过这个 载赫啊,通过载赫这里我们可以看到,你看他的这个请求参数 w d 对的是 a b m 啊,这是上节课所讲的。好,那么接下来我们再来看一下 请求标头,那么请求标头就是请求头啊,用来说明服务器要使用的附加信息,比较重要的信息有 cookie, a, refer, 还有 user, gun agent 等。那么下面将一些常用的请求投信息给大家进行一个详细的说明,比如第一个 accept, accept 呢是请求报投,运用于指定客户端可接受哪些类型的信息?就比如说我们在这里啊,就可以看到,你看哎,就可以看到对应的这个,哎 organt 啊, organt 啊,然后在这里的话呢,这个截图里面没有展示啊,但是我们可以在这个刚才我们抓包的这里面可以看到,哎 accept, 他这里呢是没有显示在这个,我们点击标头啊,点击标头呢,我们可以看到啊,往下面拉,你看是不是一个 accept, 看到没有,哎,可以看到我当前呢,我这个请求啊,可以接收文本呢,页面呢?还有应用程序的一些东西啊,还可以接收图片呢,哎,还可以接收这个,嗯?什么其他的是吧,不同种类的这个图片 啊,都可以。好,这这一个,再来看下一个,还有这个 accept the language, 就是指定客户端可接受的语言类型,同样的,我们在抓包的这里我们可以看到,你看这里是不是有个 accept the language, 哎,就表示我现在可以接受中文啊,一个 j h 杠 c n, 所以我们看到的是中中文的一个显示啊。好,再下一个就是 accept, 然后 including, 这个就是指定客户端可接受的内容编码啊,你看,我们来看一下,你看是不是也有一个 叫做 except including, 对吧?他说是支持这个基于这个 gzip 这个压缩包的一个编码,哎,这个编码格式。好,再来看下一个,就是 host, 用于指定请求资源的主机 ip 和端口号,其 内容呢,就是请求 url 的原始服务器或网关的位置,从 http 一点一一一点一版本开始,如筷子的必须包含此内容。你看我们这里面呢,已经是包含了,你看这边有个后字, 哎,再往下面走,你看后视的啊,就说明我这个当前的这个搜索呢,是基于一开始的这个百度这个网页,哎,来进行搜索这个 ip 用的, 所以这里就显示的后视的是三 w 点,百度点 com, 哎,他的原始服务器是百度服务器。好,再下一个 cookie cooking 呢,就是常用的复数形式,就是 cookies, 是网站为了辨别用户进行 season 跟踪而储,储存在用户本地的数据,哎,这里他提前告诉我们了啊,这个 cookies 是存处在用户本地的, 哎,这个跟我们之前整套的这个软件测试的这个全部课程里面专门有一章节是讲到了这个微网络基础里面讲到的 cookie 跟着 season 的区别,对吧? cookie 是存储在用户本地的啊, season 呢是存储在服务器上面的啊,这个大家注意 好, cookies 的主要功能呢,就是维持当前访问绘画啊,在这里我们也能看到啊,他的 cookies, 哎, cookies, 你看这里是不是有个 cookies, 看到没有, 哎,这里面同样的啊,会存放我们的英文名和密码啊,当然了,这里我们看不到铭文的密码啊,他肯定是做了一个加密的处理 好,再下一个就是 refers 啊, refer, refer, 此内容用来标识这个请求是从哪个页面发过来的,福气,可以拿到这一信息并做相应的处理, 如做来啊,如用作来源统计,做防盗链处理等等。你看这里是不是有个 refer a r 开头的啊,你看 refer 看到没有,哎,你看这里他做了一个 https 这个协议,他是经过 ss ar 协议加密处理的,这个前面我们讲过啊, 好,就是这一个。再一个就是 user 杠 organt, 简称 uv, 它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本 浏览器以及版本的信息。在做爬虫时加上这个信息的话,就可以伪装为浏览器,如果不加,很可能就会被识别出爬虫,那肯定该网站服务器就不会让你去哎,做一些这个爬虫数据的这个下载和这个获取了啊,所以大家注意, 要想哎做爬虫必须要加上这个 user organ 的这个信息才能伪装成功啊,在这里呢,我们也能看到吧,哎,你看啊,一个 user organ, 你看在这里看到没有,他就告诉我们哦,我们是一个晕石操作系统,六十四位的操作系统啊,晕石操作系统,然后呢?当前呢?哎,我用的是这个谷歌啊,然后呢,这个,嗯,对应的这个版本呢,哎,都在这里都能够显示出来 啊,好,再看下一个,也就是 content, 然后 type 就是内容类型啊,即 internet mater type, 互联网媒体类型,也叫做 m i m 一类型,哎,这个 m i m 一类型的,前面我们讲过啊,大家可以找出前面的这个 这个课程来看啊,就是在这个类型里面,我们可以接受他类型上面所有的这个 m p 三呐,还有这个图片呐,哎,还有这个 flash 啊,等等都可以接受。这个在前面几节课给大家讲到过, 在 autv 协议消息头中,使用这个 content type 来表示具体请求中的媒体类型信息,例如 application, 然后这个叉 三 w, 然后 form, 哎,这种表单,哎, form 表单表示表单数据,那么 test 和斜杠 h t m l 就代表着 h t m l 的一个格式啊, 这个 emig 和这个 gift, 这就代表的是动态诶, gift 图片,然后 application, 斜杠 jason 的这标识,它就代表它返回的是 jason 类型的一个文件啊,那么在这里呢,我们来看一下有 没有啊,这个 content type 绝对是有的啊,找一下 c 开头的啊,你看这里,哎,这里,呃,哦,这是 connection 啊,嗯, con connect 啊,然后 type 啊,内容 类型好,在这里的话,我们好像乍一看的话,好像在这里,哎,这里你看是不是展示了 content tape, 看到没有,他表示 啊,就是是一个 atm 格式啊,然后字不及呢,是 utf 杠八,哎,我们看到的页面就是一个 utf 杠八的一个中文的一个显示啊,这就是内容类型 啊,来表示我当前我这个网页呢,它是个 h t m 格式,它的字幕级为 u t f 杠八,好,这就是这一个, 好,那么这几个呢?内容呢?我们就到这里啊,更多精彩内容呢,我们就下几个再继续。好,感谢大家观看,谢谢大家。