1、为什么能抓包
代理服务器,模拟客户端向服务端发送请求。
2、抓包
2.1抓APP的包,手机和电脑在同一个局域网,然后cmd命令ipconfig查看IP,手机代理服务器设置为IP地址,端口号8888,保存
2.2抓web的包;三大设置,1:安装证书-:tools-options-https,全部勾选
2:自动解压HTTP响应--点击decode,这样就会自动解压HTTP响应,否则我们看到的HTTP响应是乱码
3:隐藏”Tunnel to “请求,步骤:rules-Hide CONNECIS,这样Fiddler就不会捕获大量无用的握手验证请求。我们抓包是为了看HTTP请求和响应的数据内容,而不关心HTTPS的通信是怎么建立的。
2.3抓HTTP的包,
2.4抓HTTPS的包,需要下载安装信任CA证书
2.5 抓不到包的原因:前端设置隐藏,所以抓不到包
3、改包--下断点
方法1,rules--before requests改请求,rules--after responses改响应
方法2,左下角黑色输入框,bpu+域名--该请求,bpafter+域名--改响应
方法3,左下角点一下,红色“T”图标是 改请求,再点一下“D”图标是 改响应
4、分析包
1、判断前后端是否做了校验,前端是抓不到包,友好提示,后端根据请求内容返回正确的响应信息
2、定位BUG,用Fiddler抓包,请求有问题就是前端问题,响应有问题就是后端的问题;
看请求参数和响应参数,请求参数有问题是前端问题,响应参数有问题就是后端问题;
去看下数据库,如果和数据库不一致也是后端的问题。
4、弱网测试
1、Fiddler中script,找到上传和下载的两行代码(搜索kb),修改网速,然后保存就可以了
2、项目比较急的话,会用手机自带的2G、3G、4G、5G和WiFi进行测试
3、还有腾讯的qnet,修改网速,保存也可以
5、筛选
1、点击Filters,
2、点击show only the following hosts,
3、勾选use Filters,
4、输入框填写要抓包的域名,如果要抓多个位置的包,填写多个域名,多个域名用英文分号 ; 隔开
5、点击actions,就可以筛洗了
6、埋点
用Fiddler抓取埋点字段,在用户行为管理系统中查询该字段,以及数据库查询埋点字段,查到就是埋点成功,查不到埋点失败
7、mock数据
7.1、使用场景?
1、无法控制第三方系统接口的返回,返回的数据不满足要求
2、依赖系统还未开发完成,就需要对被测系统进行测试
3、模拟一些异常场景,比如服务器崩溃,返回503状态码
7.2、步骤?
1、创建一个tx文件,将目标响应数据写入进去,注意:保存格式为utf-8,否则响应数据可能会乱码
2、点击目标请求---点击右侧的’autoresponder‘--'enable rules'
3、点击add rules,rule editor 下方选择 find a file
7、常见的content-type:文本格式,图片格式,应用格式
文本格式:text/html:HTML格式
text/plain:纯文本格式
text/xml:XML格式
图片格式:image/gif:gif格式
image/jpeg:jpg格式
image/png:png图片格式
应用: application/xhtml+xml:XHTML格式
application/xml:XML格式
application/atom+xml:Atom XML聚合格式
application/json:JSON格式
application/pdf:pdf格式
application/msword:word文档格式
application/octet-stream:二进制流数据(如常见的文件下载)
application/x-www-form-urlencoded:<form encType=" ">中默认的encType,from表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)
8、HTTP和HTTPS的区别
https是一种加密了的http协议,比http协议安全,通过ssl+http实现加密传输的。
1、 http协议需要用到CA信任证书,一般免费的比较少,因而需要一定的费用。
2、 http是超文本传输协议,信息是明文传输,HTTPS则是具有安全性的ssl加密传输的协议。
3、 HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443.
4、 HTTP的连接很简单,是无状态的;HTTPS是由ssl+http协议构建的,可进行加密传输,身份认证的网络协议,比http更安全。
9、常见状态码
2XX 请求成功
3XX 重定向 301用久重定向 302临时重定向
4XX 客户端错误 403 对请求资源的访问,被服务器拒绝了 404 服务器上无法找到请求的资源
5XX 服务器错误 500 服务器遇到错误,无法完成请求 503 服务器停机,维护,暂时的状态
10、HTTP请求方法
get
post
put
head
delete
11、TCP和UDP的区别
TCP: 无连接,不可靠传输,不使用流量控制和拥塞控制;支持一对一,一对多,多对一或多对多交互通信;面向报文;首部开销小,仅8字节;适用于实时应用(IP电话、视频会议、直播等)
UDP :面向连接;可靠传输,使用流量控制和拥塞控制;只能是一对一通信;面向字节流;首部最小20字节,最大60字节;适用于要求可靠传输的应用,例如文件传输
TCP向上层提供面向连接的可靠服务 ,UDP向上层提供无连接不可靠服务。虽然 UDP 并没有 TCP 传输来的准确,但是也能在很多实时性要求高的地方有所作为,对数据准确性要求高,速度可以相对较慢的,可以选用TCP
12、一次完成的HTTP过程
1、 对www.baidu.com这个网址进行DNS域名解析,得到对应的IP地址
2、 根据IP地址,找到对应的服务器,发起TCP的三次握手
3、 建立TCP连接后,发起HTTP请求
4、 服务器响应HTTP请求,浏览器得到html代码
5、 浏览器解析html代码,并请求html代码中的资源(如js、css图片等)(先得到html代码,才能去找这些资源)
6、 浏览器对页面进行渲染呈现给用户
13、TCP的三次握手
1、要求建立联机,浏览器发送标有SYN的数据包给web服务器已读,
2、确认联机信息,web服务器返回标有SYN/ACK的数据包给浏览器,
3、确认建立联机成功,浏览器发送标有ACK的数据包给web服务器
14、GET和POST的区别
1、GET在浏览器回退是无害的,而POST会再次提交请求
2、GET产生的URL地址可以被BookMark(给……保存为书签),而Post不可以
3、GET请求会被浏览器主动给cache(缓存),而post不会,除非手动设置
4、GET请求只能进行URL编码,而POST支持多种编码方式
5、GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留
6、GET请求在URL中传输的参数是有长度限制的,而POST没有
7、对参数的数据类型,GET只接受ASCII码,而POST没有限制
8、POST比GET更安全,因为GET参数直接暴露在URL上,所以不能用来传递敏感信息
9、GET参数通过URL传递,POST放在RequestBody(请求体)中