fidder配合夜神模拟器进行抓包

一、fidder的配置与使用及原理
1. 简介:一款免费且功能强大的数据包抓取软件。它通过代理的方式获取程序http通讯的数据,可以用其检测网页和服务器的交互情况,能够记录所有客户端和服务器间的http请求,支持监视、设置断点、甚至修改输入输出数据等功能。

2. 工作原理:
Fiddler是以代理WEB服务器的形式工作的,浏览器与服务器之间通过建立TCP连接以HTTP协议进行通信,浏览器默认通过自己发送HTTP请求到服务器,它使用代理地址:127.0.0.1, 端口:8888. 当Fiddler开启会自动设置代理, 退出的时候它会自动注销代理,这样就不会影响别的程序。不过如果Fiddler非正常退出,这时候因为Fiddler没有自动注销,会造成网页无法访问。解决的办法是重新启动下Fiddler。

这里写图片描述
3.下载地址:
官网下载https://www.telerik.com/download/fiddler(版本为英文版 fidder4)
汉化版下载:http://soft.huweishen.com/soft/302.html(直接是一个安装包,解压就可以用)
4、实现功能:
点击【工具】-【连接】—【WinlET选项】—【局域网设置】-【高级】,再点击代理服务器的【高级】按钮,将HTTP代理服务器地址改为127.0.0.1:8888。
这里写图片描述
这里写图片描述
这里写图片描述
5、使用fidder捕获HTTPS会话和端口连接设置
5.1 默认情况下,fiddler是不会捕获https会话的,所以需要自行设置一下。启动软件,点击【工具】—【fiddler选项】,在弹出的新窗口中,点击HTTPS选项卡,将捕获HTTPS连接这一选项前面全打上勾,点击【工具】—【fiddler选项】,在弹出的新窗口中,点击Connections选项卡,点击OK就操作成功了
这里写图片描述
这里写图片描述

注:fidder配置完后需要重启

6、fidder主界面
这里写图片描述
Fiddler的主界面分为 工具面板、会话面板、监控面板、状态面板
6.0详解
(1)每个Fiddler抓取到的数据包都会在该列表中展示,点击具体的一条数据包可以在右侧菜单点击Insepector查看详细内容。主要分为请求(即客户端发出的数据)和响应(服务器返回的数据)两部分。
这里写图片描述
(2)HTTP Request Header:以百度为例,查看请求百度主页这条数据包的请求数据,从上面的Headers中可以看到如下内容:
这里写图片描述
请求方式:GET

协议: HTTP/1.1

Client 头域:

Accept: text/html, application/xhtml+xml, image/jxr, / ———浏览器端可以接受的媒体类型

Accept-Encoding: gzip, deflate ———压缩方法

Accept-Language: zh-CN ———语言类型

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393 ———客户端使用的操作系统和浏览器的名称和版本

COOKIE头域:将cookie值发送给服务器

Transport 头域:

Connection:当网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接是否关闭。keep-alive表示不会关闭,客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接;close表示关闭,客户端再次访问这个服务器上的网页,需要重新建立连接。

HOST:主机名或域名,若没有指定端口,表示使用默认端口80.
(3)HTTP Response Header:继续以百度为例,如图所示:
这里写图片描述
协议:HTTP/1.1

状态码:200

Cache头域:
Cache-Control: private ———此响应消息不能被共享缓存处理,对于其他用户的请求无效

Date: Sat, 05 Aug 2017 04:37:43 GMT ———生成消息的具体时间和日期

Expires: Sat, 05 Aug 2017 04:37:42 GMT ———浏览器会在指定过期时间内使用本地缓存

Cookie/Login 头域:

Set-Cookie: BDSVRTM=264; path=/ ———把cookie发送到客户端
Set-Cookie: BD_HOME=1; path=/
Set-Cookie: H_PS_PSSID=1425_21097_22157; path=/; domain=.baidu.com

Entity头域

Content-Length: 202740 ———正文长度
Content-Type: text/html;charset=utf-8 ———告知客户端服务器本身响应的对象的类型和字符集

Miscellaneous 头域:
Bdpagetype: 2

Bdqid: 0x99791efd00036253

Bduserid: 2577220064
Server: BWS/1.1 ———指明HTTP服务器的软件信息

X-Ua-Compatible: IE=Edge,chrome=1
Security头域:
Strict-Transport-Security: max-age=172800 ———基于安全考虑而需要发送的参数,关于这个参数的解释,请参考:http://www.freebuf.com/articles/web/66827.html

Transport头域:

Connection: Keep-Alive
(4)TextView:显示请求或响应的数据
(5)WebForms:请求部分以表单形式显示所有的请求参数和参数值;响应部分与TextView内容是一样的。
(6)Auth:显示认证信息,如Authorization
(7)Cookies:显示所有cookies
(8)Raw:显示Headers和Body数据
(9)JSON:若请求或响应数据是json格式,以json形式显示请求或响应内容
(10)XML:若请求或响应数据是xml格式,以xml形式显示请求或响应内容

6.1工具面板
这里写图片描述
说明注释、重新请求、删除会话、继续执行、流模式/缓冲模式、解码、保留会话、监控指定进程、寻找、保存会话、切图、计时、打开浏览器、清除IE缓存、编码/解码工具、弹出控制监控面板、MSDN、帮助

两种模式

缓冲模式(Buffering Mode)Fiddler直到HTTP响应完成时才将数据返回给应用程序。可以控制响应,修改响应数据。但是时序图有时候会出现异常
流模式(Streaming Mode)Fiddler会即时将HTTP响应的数据返回给应用程序。更接近真实浏览器的性能。时序图更准确,但是不能控制响应。
6.2会话面板
这里写图片描述
‘#’: 顺序号按照抓包顺序从1递增
Result:HTTP状态码      

Protocol:请求使用的协议,如HTTP/HTTPS/FTP等

HOST:请求地址的主机名或域名

URL:请求资源的位置

Body:请求大小

Caching:请求的缓存过期时间或者缓存控制值

Content-Type:请求响应的类型

Process:发送此请求的进程ID

Comments:备注

Custom:自定义值
符号所代表的意思
这里写图片描述
6.3统计图表和时间轴
统计报表:
请求总数、请求包大小、响应包大小。
请求起始时间、响应结束时间、握手时间、等待时间、路由时间、TCP/IP、传输时间。
HTTP状态码统计。
返回的各种类型数据的大小统计以及饼图展现。
这里写图片描述
时间轴:每个网络请求都会经历域名解析、建立连接、发送请求、接受数据等阶段。把多个请求以时间作为 X 轴,用图表的形式展现出来,就形成了瀑布图。在Fiddler中,只要在左侧选中一些请求,右侧选择Timeline标签,就可以看到这些请求的瀑布图
这里写图片描述

  • 绿色的请求表示这是一个“有条件的请求”。HTTP 协议定义了 5个条件请求头部,最常见的两个是“If-Modified-Since”和“If-None-Match”。服务器根据这两个头部来验证本地缓存是否过期,如果过期则正常返回资源的最新版本;否则仅返回304 Not Modified,浏览器继续使用本地缓存。包含条件请求头部的请求用绿色显示,否则用黑色。

  • 有阴影线的请求是缓冲模式下的请求,实心的是流模式下的请求。Fiddler提供了缓冲(Buffering)和流(Streaming)两种抓包模式:缓冲模式下,Fiddler会在响应完成时才将数据返回给应用程序(通常是浏览器),这种模式下可以控制响应,方便地修改响应内容;流模式下,Fiddler会实时返回响应数据给浏览器,但没办法控制响应。一般使用流模式,瀑布图会更真实一些。这两种模式可以通过 Fiddler的工具栏选择。特别的,通过 Fiddler 的“AutoResponder”功能返回的响应,只能是缓冲模式。

  • 请求条的不同颜色对应着不同类型的响应,根据响应头的 MIME Type 来归类。如浅绿色表示图片类型的响应;深绿色是JavaScript;紫色是 CSS;其它都是蓝色。

  • 请求中的黑色竖线,表示的是浏览器收到服务端响应的第一个字节这一时刻。这个时间受 DNS 解析、建立连接、发送请求、等待服务端响应等步骤的影响。

  • 请求条后面的图标表示响应的某些特征。如软盘图标表示这个响应正文从本地获得,也就是说服务端返回了 304;闪电表示这是 Fiddler的“AutoResponder”的响应;向下的箭头表示响应是 302,需要重定向;红色感叹号说明这个请求有错误发生(状态码是 4XX 或 5XX)。特别的,如果请求条后面有一个红色的X,说明服务端响应完这个请求之后,断开了连接。出现这种情况一般有两种可能:HTTP/1.0 的响应中没有 Connection: Keep-Alive;或者是 HTTP/1.1 的响应中包含了 Connection: close。使用持久连接可以省去建立连接的开销,也可以减小 TCP 慢启动和其它拥塞控制机制带来的影响,总之是好处多多。

  • 请求前面的红色圆圈表示这个连接是新建的,绿色表示是复用的。上面的圆圈表示的是浏览器到 Fiddler 的连接,下面的圆圈是 Fiddler 到服务端的连接。

    7状态面板
    这里写图片描述
    控制台Fiddler的左下角有一个命令行工具叫做QuickExec,允许你直接输入命令。
    常见得命令有:

命令 解释
help 打开官方的使用页面介绍,所有的命令都会列出来
cls 清屏 (Ctrl+x 也可以清屏)
select 选择会话的命令
?.png 用来选择png后缀的图片
bpu 截获request
8总结fidder
通过Fiddler可以抓取请求和响应参数,通过对参数进行分析,可以定位是前端还是后台问题。例如我们在测试登录接口时,输入了正确的手机号和密码,但前端提示“请输入正确的用户名和密码”;仅仅通过界面提示我们只能描述bug表象,但不能分析出问题原因。假设通过抓包我们发现是由于前端参数名错误或参数值为空,从而导致后台报错。这个时候我们将bug指向前端开发人员,并将参数数据和接口文档中对应的报文数据作为附件上传,是不是可以提高bug的解决效率呢?Fiddler在实际的功能测试中有很大的作用,一方面帮助我们更好的了解某个业务中客户端和服务器端是通过哪些接口进行请求的,从而更好的了解代码逻辑;另一方面,我们还可以通过响应数据判断哪里出现了问题,例如可能服务器程序挂了,导致前端报“服务器故障”,这时我们通过抓包发现响应数据返回502,这时我们可以手动去重启服务或是联系运维重启服务,从而提高问题的解决效率。
9、夜神模拟器的配置
首先在夜神模拟器中下载夜神模拟器
地址:https://www.yeshen.com/下载完成后运行
在设置里找到WLAN
这里写图片描述
右键按着SSID,会弹框
这里写图片描述
点击修改网络这里写图片描述
勾选高级选项
这里写图片描述
这里的代理服务器名根据cmd命令行ipconfig查看本机ip填写,代理服务器端口必须是8888,因为fidder的端口就是8888,这里的配置如果出错模拟器上的浏览器就不可以访问,app也会报没有网络

展开阅读全文

没有更多推荐了,返回首页