本文目录一览:
- 1、Fiddler抓包入门
- 2、fiddler抓包详细教程--会话保存
- 3、fiddler中利用AutoResponder【重定向功能】 进行调试
- 4、fiddler怎么安装证书
- 5、使用fiddler+模拟器进行APP抓包
- 6、fillder证书的安装(firefox和手机)
Fiddler抓包入门
抓包使用场景:
1、用手机APP或浏览器访问一个页面,查看请求的结果是否正确,请求的参数是否正确
2、在不修改任何环境的情况下,修改返回的结果,即通常所说的mock
3、复杂场景:
比如,同一个域名下的请求,/img/xxx的资源发送到ServerA上,请求/api/xxx资源发送到ServerB上
我们使用浏览器或者客户端软件都要与外界进行通信,就必然会有数据的发送和接收,有时候需要对这些传递的数据进行分析,因此需要截获这些传递的数据。
其中对这些数据进行截获、重发、编辑、转存的过程叫做 抓包 。
本地应用与服务器之间所有的Request 和Response都将经过Fiddler,由Fiddler进行转发,此时Fiddler以代理服务器的方式存在。
由于所有的网络数据都会经过Fiddler,因此Fiddler能够截获这些数据,实现网络数据的抓包,可以详细地对HTTP请求进行分析,并模拟对应的HTTP请求。
1、本地化的工具,是一个使用本地 127.0.0.1:8888 的 HTTP 代理
(免费的web调试代理工具,支持任何浏览器、系统或平台)
启动Fiddler后,通过浏览器访问:
(1)任何能够设置 HTTP 代理为 127.0.0.1:8888 的浏览器和应用程序都可以使用 Fiddler
(2)工具打开后,就自动设置了IE浏览器的代理,工具关闭后,IE的设置也将被还原
2、Fiddler本身对http协议支持较好,且操作简单容易上手
3、具有抓包和分析功能,省去了安装其他工具的必要
4、工具本身功能强大
(1)劫包:模拟接口不给前端返回数据,看前端怎么处理,如果没有工具,就只能采用断网、停用服务器
(2)篡改数据:假设没法去模拟前端对于接口返回数据很长时,怎么去展示,换行?截取?小屏幕上页面扭曲?如果通过篡改数据,就能直观的把数据返回给前端展示,很明显的看到前端数据是什么样的,就不需要从底层改数据
(3)模拟低速、弱网环境等,有些元素加载不出来会导致样式问题
网络爬虫是自动爬取网页的程序,在爬取的过程中必然会涉及客户端与服务端之间的通信,也需要发送一些HTTP请求,并接受服务器返回的结果。
有些网址变化肉眼是看不出规律的,这时配合抓包软件会变得较容易。
案例:网页底部“阅读更多”
在浏览一些图片网站时,浏览到最下面的时候会出现一个“阅读更多”的字样,此时单击“阅读更多”页面上显示更多内容,加载出来的内容跟原来的内容是在同一个网页上展示的。我们直接看网址的变化是看不出任何规律的,便无法分析该请求是如何实现的,无法通过程序构造出该请求。
此时可以通过Fiddler 进行抓包,对这些数据进行分析,查看request headers 发现是通过Get请求来实现的,总共有3个参数:order_by、page、per_page
通过分析就可以知道页面上只显示20篇文章,之后就需要通过 阅读更多 进行加载
每点击一次 阅读更多 ,相当于在修改page值
知道实现规律后,就可以通过编写程序构造出对应的请求,并由程序自动地实现这些请求的发送。
假如修改page为3、4、5,在新窗口进行访问,与页面阅读更多进行比对
Fiddler 默认是抓 http请求的,对于pc上的 https请求,会提示网页不安全,这时候需要在浏览器上安装证书
Fiddler可以通过伪造CA证书来欺骗浏览器和服务器,大概原理就是在浏览器面前Fiddler伪装成一个HTTPS服务器,而在真正的HTTPS服务器面前Fiddler又装成浏览器,从而实现解密HTTPS数据包的目的。
1、检查Fiddler设置
2、导出证书
3、导入到Firefox浏览器
测试下结果,打开百度网页,成功了,接下来就可以进行抓包了
1、cls (或 clear) 清屏命令
清空会话列表中的所有会话
2、select 筛选某一类型的会话命令
如 select html ,输入命令后敲回车键,在会话列表中所有html类型的会话都已被选中
3、? 查找网址中包含某些字符的会话信息
如 ?jianshu 可以查找出网址中包含“jianshu”字符串的会话信息,跟其他会话信息用不同颜色区分显示
4、help 帮助命令
打开官方的使用页面介绍,所有的命令都会列出来
5、bpu、bpafter 断点命令
6、dump 快速保存
以 铁路网的货物跟踪 为例
页面有车号、货票号、验证码三个字段,通过输入不同格式的值来观察页面提示与 Fiddler 抓包返回的 json值
1、先输入格式正确的值,点查询
2、修改货票号的位数,点查询
1、两次抓包的接口是一样吗?第一个是post,第二个是get,不是同一个
2、第二个请求没有发出去,应该是前端直接对数值的位数做了校验的,这个时候就不会调接口,所以就没有数据显示了
如想更深入的使用Fiddler,请查看 进阶篇
fiddler抓包详细教程--会话保存
前言
为什么要保存会话呢?举个很简单的场景,你在上海测试某个功能接口的时候,发现了一个BUG,而开发这个接口的开发人员是北京的一家合作公司。
你这时候给对方开发提bug,如何显得专业一点,能让对方心服口服的接受这个BUG呢?如果只是截图的话,不是很方便,因为要截好几个地方还描述不清楚,不如简单粗暴一点把整个会话保存起来,发给对方。
一、保存为文本
1、以博客园登录为例,抓到登录的请求会话
2、点左上角FileSaveSelected Sessionsas Text,保存到电脑上就是文本格式的
3、文本格式的可以直接打开,结果如下图
1、save-All Sessions :保存所有的会话,saz文件
2、save-Selected Session:保存选中的会话
(1)in ArchiveZIP :保存为saz文件
(2)as Text :以txt文件形式保存整个会话包括Request和Response
(3)as Text (Headers only) :仅保存头部
3、Request:保存请求
(1)Entir Request:保存整个请求信息(headers和body)
(2)Request Body:只保存请求body部分
4、Response:保存返回
(1)Entir Response:保存整个返回信息(headers和body)
(2)Response Body:只保存返回body部分
(3)and Open as Local File:保存Response信息,并打开文件
乱码问题(decode)
1、打开博客园首页: ,保存之后查看,会发现返回的是乱码
2、遇到这种情况,主要是需要解码,用前面学到的decode方法
3. 点击箭头区域后,重新保存就没乱码了。
4. 还有一个最简单办法就是选中上图会话框上的decode按钮,这样就自动解码了。
保存与导入全部会话
1、我们可以打开fiddler,操作完博客园后,选中saveAll Sessions,保存全部会话
2、保存后,在fiddler打开也很方便,直接把刚才保存的会话按住拽进来就可以了
3. 也可以选择FileLoad Archive导入这个文件
Repaly
1、导入请求后,可以选中某个请求,点击Repaly按钮,重新发请求
2、也可以ctrl+a全部选中后,点Repaly按钮,一次性批量请求
这里保存会话和replay功能其实就是相当于录制和回放了
fiddler中利用AutoResponder【重定向功能】 进行调试
一、将服务器的返回数据(即原资源)重定向到本地的文件进行调试
1、打开fiddler,打开浏览器输入(已百度为例),再回到fiddler进行设置
2、按照截图所示,分别将4个选购全部勾选,勾选完成后,将待重定向的网址直接拖到右方【手动填写完整地址/正则表达式进行模糊匹配的地址】即可
3、填写要替换的内容,下拉框有很多选项可以选择, 比如201、302、404,502等status code
注,我的一开始是404_Plain.dat
4、设置完成之后,刷新百度网页,请求回来的数据已经是替换后的内容了
注:想取消的话,直接将第1步中勾选的Enable rules去掉即可
二、利用AutoResponder【重定向功能】修改返回response的数据
1、在fiddler中打开百度,选择SyntaxView的内容进行复制,保存到本机上,以baidu.html格式进行保存
2、点击AutoResponder,把刚才的网址拖到右边
3、第一个下拉框选择Header:Accept=html
第二个下拉框选择你刚才保存baidu.html的路径
4、勾选Enable rules之类的四个,然后点击保存
5、再访问百度
注:想取消的话,直接将第1步中勾选的Enable rules去掉即可
fiddler怎么安装证书
首先,打开 Fiddler,在菜单栏中依次选择 【Tools】-【Fiddler Options】-【HTTPS】,勾上如下图的选项。
勾上后,Fiddler 会提示你安装一个证书。安装完后点击上图中的 "Export Root.." 按钮,将证书下载到桌面。
接着将证书导入到浏览器。这里以 chrome 举例,依次选择 【设置】-【管理证书..】 将保存在桌面的证书导入即可(其他浏览器类似,通常有个“证书”选项设置)。
也可以直接双击下载下来的证书,进行安装。
我们打开 ,这时就可以愉快地捕获 https 请求了!
细心的你可能会发现,在 https 的请求中夹杂着一些 http 的请求,并且该 session 的 Host 参数是个诡异的 "Tunnel to”,什么鬼? StackOverflow 里早已有 精彩解答 ,或者可以直接看 这里 ,简单地说 fiddler 当做代理转发 https 请求的时候,就会产生 "CONNECT Tunnels",所以大可忽略它。
使用fiddler+模拟器进行APP抓包
1、打开Fiddler,点击工具栏中的Tools—Fiddler Options
2、https设置及connections设置,勾选选择项
3、点击Actions,点击第二项:Export Root Certificate to Desktop,这时候桌面上会出现证书FiddlerRoot.cer文件,点击OK设置成功,关闭fiddler。
4、打开模拟器,设置代理。找到系统应用,点击设置,点击无线网络WLAN—左键常按点击已连接网络—修改网络。
5、将步骤3导出的证书FiddlerRoot.cer文件导入至模拟器。模拟器在更多里可以共享文件。将证书直接拖至该共享文件夹里。
6、在模拟器中打开系统应用—设置—安全—从SD卡安装。找到FiddlerRoot.cer文件,按提示导入即可,注意在此过程需要名称和解锁图案等,自行即可。
7、打开fiddler,重启模拟器,就可以在电脑上进行APP抓包了。
fillder证书的安装(firefox和手机)
注意:所有抓包过程中使用无痕浏览器
1、fiddler对浏览器抓包
1.1 对浏览器的http的抓包
Capturing开启,进行抓包;
Capturing关闭,停止抓包;
如下图:
1.2 对浏览器的https抓包
1.2.1 开启fiddler的https选项
配置路径:
Tools - Fiddler Options - HTTPS - 三个选项全部勾选
如下图所示:
1.2.2 fiddler导出ca证书
操作路径:
Tools - Fiddler Options - HTTPS - Export Fiddler Root Certificate to Desktop
如下图所示:
导出后,如下图所示:
1.2.3 火狐浏览器导入ca证书
操作路径:
浏览器 - 工具 - 选项 - 高级 - 证书 - 查看证书 - 导入
如下图所示:
导入:
1.2.4 重启浏览器和fiddler开始抓包
至此,fiddler可以对浏览器的http和https进行抓包
2、对安卓APP进行抓包
2.1 绑定手机网络至fiddler主机
操作路径:
设置 - 无线网络 - 选中连接的wifi - 高级设置 - 开启”手动HTTP代理“ - 编辑”代理服务器主机名“至主机IP
如图所示:
注意:抓包前,必须断开重连wifi
2.2 导入ca证书至手机
(1)传输证书至手机
可通过手机助手、微信助手等
(2)导入证书
如图:
(3)导入成功
如图:
至此,证书导入成功
2.3 fiddler设置移动设备抓包
操作路径:
Tools - Fiddler Options - Connections - 选中”Allow remote computers to connect”
如图:
注意:设置完后,抓包前必须重启fiddler设备
至此,fiddler可以正常对移动端设备进行抓包了