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地址

根据IP地址,找到对应的服务器,发起TCP的三次握手

TCP连接后,发起HTTP请求

服务器响应HTTP请求,浏览器得到html代码

浏览器解析html代码,并请求html代码中的资源(如js、css图片等)(先得到html代码,才能去找这些资源)

  6、 浏览器对页面进行渲染呈现给用户

 

13、TCP的三次握手

  1、要求建立联机,浏览器发送标有SYN的数据包给web服务器已读,

  2、确认联机信息,web服务器返回标有SYN/ACK的数据包给浏览器,

  3、确认建立联机成功,浏览器发送标有ACK的数据包给web服务器

14、GET和POST的区别

、GET在浏览器回退是无害的,而POST会再次提交请求

、GET产生的URL地址可以被BookMark(给……保存为书签),而Post不可以

、GET请求会被浏览器主动给cache(缓存),而post不会,除非手动设置

、GET请求只能进行URL编码,而POST支持多种编码方式

、GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留

、GET请求在URL中传输的参数是有长度限制的,而POST没有

、对参数的数据类型,GET只接受ASCII码,而POST没有限制

、POST比GET更安全,因为GET参数直接暴露在URL上,所以不能用来传递敏感信息

、GET参数通过URL传递,POST放在RequestBody(请求体)中