接口测试中的重要知识点(接口测试理论二)
接口测试中的重要知识点(接口测试理论二)请求行由请求方法字段、URL字段和HTTP协议版本呢字段3各字段组成。比较好的方式是采用分而治之,类似12306网站的主页使用HTTP协议,有关于用户信息方面使用HTTPS。HTTP协议的主要特点:HTTPS协议的主要特点:使用那种协比较好?
- HTTP协议&Charles抓包工具使用
HTTP协议概述
网络协议是指计算机通信网络中两台计算机之间进行通信所有必须共同遵守的规定或规则。
HTTP协议(超文传输协议)是一种网络通信协议,它允许将超文本标记语言(HTML)文档将Web服务器传送到客户端的浏览器。默认端口:80
HTTP协议是一种计算机网络进行安全的传输协议,经由HTTP进行通信,利用ssl/TLS建立全信道,加密数据包。HTTPS使用的主要目的是提供网络服务器身份认证,同时保护交换数据的隐私与完整性。默认端口:443
HTTP协议的主要特点:
- 支持客户/服务器模式。
- 简单快速:客户向服务器请求服务时,只需传送请求方式和路径。请求方法常用的有GET、POST。每种方法规定了客户与服务器联系的类型不同,由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
- 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
- 无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
- 无状态:HTTP协议是无状态。无状态是指协议对于事物处理灭有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
HTTPS协议的主要特点:
- 内容加密:采用混合加密技术,中间者无法直接查看明文内容。
- 验证身份:通过证书认证客户端访问的是自己的服务器
- 保护数据完整性:防止传输的内容被中间人冒充或者篡改
- SSL证书需要购买申请,功能越强大的证书费用越高
- SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗。
- HTTPS连接缓存不如HTTP高效,流量成本高。
- HTTPS协议握手阶段比较费时,对网站的响应速度有影响,影响用户体验。
使用那种协比较好?
比较好的方式是采用分而治之,类似12306网站的主页使用HTTP协议,有关于用户信息方面使用HTTPS。
请求行由请求方法字段、URL字段和HTTP协议版本呢字段3各字段组成。
HTTP协议的请求方法有GET、POST、PUT、DELETE、OPTIONS、TRACE、CONNECT。
最常用的方法有:
- GET方法:在浏览器的地址栏中输入网址的方式访问网页时,浏览器采用GET方法向服务器获取资源。
- POST方法要求被请求服务器接收附在请求后面的数据,常用于提交表单。
URL字段:也称为请求地址:
HTTP协议版本:目前常用的是HTTP1.1、HTTP2.0
GET和POST区别:
- 从参数的传递方面来看,GET请求的参数是直接拼接在地址栏URL的后面,而POST请求的参数是放到请求体里面的;
- 从长度限制方面来看,GET请求有具体的长度限制,一半不超过1024KB 而POST理论上没有,但是浏览器一半都有一个界限;
- 从安全方面俩看,GET请求相较于POST,因为数据都是铭文显示在URL上面的,所以安全和私密性不如POST;
- 从本质上来说,GET和POST都是TCP连接,并无实质的区别,但是由于HTTP/浏览器的限定,导致它们在应用过程中体现出现了一些不同,GET产生一个数据包,POST产生两个数据包,对于GET请求,浏览器会把http Header 和data一并发出去,服务器响应200 (返回数据)。而对于POST,浏览器先发送header ,服务器响应100 continue,浏览器再发送data,服务器响应200 ok
请求头部:
请求头部由关键字/值对组成,每行一对,关键字和值用英文符号“:”分割
请求头部通知服务器有关客户端请求的信息,典型的请求头有:
User-Agent:产生请求的浏览器类型。
Accept:客户端可识别的内容类型列表。
Host:请求的主机名,允许多个域名同一个IP地址,即虚拟主机。
Content_Type:请求体MIME类型,MIME类型:描述消息内容类型的因特网标准,常见的有application/json、image/jpeg、application/octet-stream等
请求正文:向服务器提交的请求数据,GET请求的参数一半是放在请求行后的键值对,post请求的参数类型多样(表单、json、xml、图片等)
响应行:
响应行由响应状态码、响应信息和HTTP版本字段3个字段组成
响应状态码由三个数字组成,第一个数字定义了响应的类别,且五种可能取值:
1XX:指示信息 -- 表示请求已接收、继续处理
2XX:成功 -- 表示请求已被成功接收、理解、接受
3XX:重定向 -- 要完成请求必须进行更进一部的操作
4XX:客户端错误 -- 请求由语法错误或请求无法实现
5XX:服务端错误 -- 服务器未能实现合法的请求
响应信息是状态代码的文本描述,比如:
200 OK 客户端请求成功
404 NOT FOUND 请求资源不存在
响应头:
响应头用于描述服务器的基本信息,以及数据的秒速,服务器通过这些数据的描述信息,可以通知客户端如何处理等一户它回送的数据。
常见的响应头有:
Content-Length:表示内容长度
Content-Type:表示后面的文档属于什么MIME类型
Server:服务器通过这个头告诉浏览器服务器的类型
响应正文:响应正文就是响应的消息体,如果是纯数据就是返回纯数据,如果请求的是HTML页面,那么返回的就是HTML代码,如果是图片就是图片等。
Charles 抓包工具概述
Charles 简介:
Charles 是再Mac下常用的网络封包截图工具,在做移动开发时,我们为了调试和服务端的网络通讯协议,常常需要截取网络风暴来分析。
Charles 通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络风暴的截图和分析。
除了做移动开发调试端口外,Charles也可以用于分析第三方应用的通讯协议。配合Charles的SSL功能,Charles还可以分析Https协议。
Charles 使收费软件,可以免费使用30 天。试用期过后,未付费的用户任然可以继续使用,但是每次使用不能超过30分钟,并且启动时将会有10秒钟的延迟。因此,该付费方案对广大用户还是相当友好的,即使你长期不付费,也能使用完整的软件功能更。只是当你需要长时间进行封包调试时,会因为Charles强制关闭而遇到影响。
Charles 主要功能包括:
- 截取Http 和 Https 网络封包。
- 支持重发网络请求,方便后端调试。
- 支持修改网络请求参数。
- 支持网络请求的截图并动态修改。
- 支持模拟慢速网络。
Charles 工作原理:
Charles 是以代理web服务器的形式工作的,它使用代理地址:127.0.0.1,端口:8888。 当Charles打开的时候它回自动对操作系统设置代理,使之后操作系统上的浏览器发送 http 请求都需要经过Charles 代理去发送,以及服务器返回的数据也是如此。当Charles 退出的时候代理回自动取消。
Charles 安装:
官网地址:https://www.charlesproxy.com/download/
从官网地址根据提示信息下载后,可直接安装。
界面介绍:
常用功能键介绍:
扫把按钮:点击之后可清除抓取到的所有请求
红色按钮:红色点亮说明正在抓取请求,红色展示为灰色说明目前不在抓取请求状态
锁按钮:开启/关闭 ssl proxying 即开始/关闭https 抓包
乌龟按钮:灰色乌龟是网速设置正常,绿色乌龟开启慢速网络
六角形按钮:断电图标,灰色说明断点未开启,红色说明在使用断点
钢笔按钮:编辑请求,点击之后可以修改请求的内容
刷新按钮:重新发送请求,点击之后选中的请求回再次发送
打勾按钮:验证选中的请求的响应
扳手按钮:常用功能更,包含了Tools菜单中的常用功能
设置按钮:常用设置,包含了Proxy 菜单中的常用设置
左侧请求列表栏:
- structure 视图是将网络请求按访问的域名分类
- Sequence 视图是将网络请求按昂问的时间顺序
设置抓包Https协议包:
MAC操作系统设置:
- 在Mac电脑上安装证书。点击Charles的顶部菜单,选择“help” ---> “SSL Proxying” ---> “Install Charles Root Certificate” 然后输入mac系统的账号密码,即可在keyChain看到添加好的证书;
- 把安装好的Charles证书设置为始终信任;
- 菜单栏 proxy ---> SSL proxy setting ---> 勾选Enable SSL Proxying ---> locations里添加一个 host 和port 为*的通配符即可所有域名的https包抓取。
- 重启Charles即可。
windows操作系统设置:
把上述mac操作的第一步,改为点击Charles 的顶部菜单,选择 “Help” ---》 “SSL Proxy ing” ---> “Install Charles Root Certificate”,然后安装证书的时候根据弹出对话框提示,按爪给你到根证书颁发机构即可,依次选择步骤不下:安装证书 -- 本地计算机 -- 将所有的证书放入下列存储 -- 受信任的根证书颁发机构 -- 知道完成即可。
Charles 抓包工具使用实战
防止抓包信息乱码设置:
- 菜单Proxy -- proxy settings -- proxies 中,port:8888,勾选 support http/2 ,勾选enable socks proxy 下面填 8889 ,下面全勾选上,ports 填 80,443, 8080,8443 然后点击ok
- 菜单 Tools -- Rewrite -- 勾选上 enable rewrite,点击下面一个Add ,然后需要填的内容如下:
Type 选择Modify Header
Match 栏中name输入:Content-Type value 输入: application/x-zip
Replace 栏中 name 输入:Content-Type
Value 输入:application/json:cjarset=UTF-8
- 重启Charles即可
还有一种方法:
Response中文乱码:在安装目录上的info.plist文件中vmoption添加如下:
-Dfile.encoding = UTF-8