fiddler抓包实战
fiddler的下载和安装
官网 下载地址 主要在Windows系统上运行,Mac和linux上有beta版本作者还在开发 基本界面 inspectors选项卡下可以查看HTTP请求和HTTP响应的报文结构。其中RAW可以查看完整信息Headers查看消息中的Header,imageview可以查看图片信息,如图所示
- web sessions 列表包含信息如下
- fiddler生成的ID
- Result响应的状态码
- Protocol:使用的协议HTTP或HTTPS
- Host:主机名端口号
- URL:路径
- Body:http响应中包含的字节数
- Caching:跟缓存相关的字段值
开始捕获/停止捕获 请求报文结构 响应报文结构
什么是代理服务器
web代理服务器是网络中间实体。代理web客户端和web服务器之间扮演中间人,fiddler就相当于代理服务器,它代理地址127.0.0.1,端口:8888
fiddler启动时,会偷偷吧Internet选项中的代理修改为127.0.0.1,端口8888 关闭后,它自动取消代理这样就不会影响别的程序
我们可以看一下,打开控制面板,找到Internet属性,然后选择连接,局域网设置,高级,可以看到,如图 解压http响应(点击如图Decode) fiddler如何捕获HTTPS会话 如图
用fiddler选择请求
选择子请求 找到父请求 快捷键C 选择父请求 找到子请求 快捷键P
web页面简单的性能测试
如图
fiddler下断点,修改http报文
第一种全局 第二种单个断点,在命令行 输入
bpu www.baidu.com
这时候会拦截百度 想要取消单个断点输入 dpu
实例:修改HTTP请求
- 打开全局断点
- 打开浏览器输入www.163.com
- 回到fiddler界面,点击disable
作用是已拦截到自己想要的请求了,其他http请求不需要拦截了
- 被拦截请求有一个T图标在做下角,选中修改的HTTP请求,选中Inspectors选项卡使用RAW选项卡
- 把URL 修改为www.taobao.com同时把host修改为www.taobao.com 让后点击绿色RUN to completion放行
- 回到浏览器,此时发现打开的是淘宝页面了
如果点击黄色break on response 则会继续拦截这个http请求
此实例演示输入百度URL显示淘宝页面
在浏览器中显示淘宝的手机端页面
回到浏览器搜索淘宝官网,是不是变成手机版的了。
fiddler中设置断点修改http响应
全断点 取消全断点 Disabled 单个断点 命令行输入bpafter www.baidu.com 取消单断点输入 bpafter
实例:fiddler修改网页标题
在命令行输入 bpafter http://www.baidu.com 打开浏览器输入http://baidu.com官网 在fiddler中选中http://www.baidu.com 这里顺便介绍一下快捷键,点击session会话框 ctrl + x 清楚所有会话 或者命令行输入cls 。如果太多会话怎么着 ctrl+f 把URL输入进去回车即可 选中后 点击inspectors按钮 response下使用raw按钮,修改<title> 中的值让后点击绿色按钮放行 看一下你浏览器页面标题是不是已经改变了
http协议中的缓存 缓存的好处 减少传输,节省时间,减少服务器负担,浏览器和代理服务器都有缓存,http报文让代理服务器向源服务器验证,缓存是否有效,判断缓存新鲜度,如果时间一样那么源服务器不响应数据,让代理服务器或浏览器的缓存响应,那么怎么办判断的呢 浏览器吧最后修改时间通过header “if-modified-since” 告诉web服务器 浏览器浏览器把缓存文件的ETag通过Header“if-none-match”告诉web服务器
实例:fiddler前端快速调试
好处是在本地修改文件,就能看到文件在线上环境下的样子,因为大家都知道,不管在线下写的多好,项目部署到线上后难免会出现一些bug,那么我们就需要这样的快速调试,修改本地文件,直接可以反馈给自己。那么我们来实操一下就懂了
- 在浏览器中打开http://www.cnblogs.com/tankxiao2/
- 在本地建个test.js文件,输入一下
$().ready()
{
$("#Header1_HeaderTitle").html("我是你大爸");
}
- 启动fiddler,抓到一个JavaScript的http请求,应该是TankPageFooter.js,在将其拖拽到AutoResponder中如图。
点击
- 这里选择自己的本地文件test.js
- 注意看红色框,对钩安我的打上,最后点击save
回到浏览器刷新,你可以看到效果了,如果不行可以强制刷新ctrl+fn+f5 这个强制刷新,作用是不管你浏览器或代理服务器有没有缓存都向源服务器请求数据,不信的话你cls一下打开一个页面普通刷新再cls一下打开刚才的页面强制刷新,请求会话中,它的id数,是不是不一样,强制刷新的请求多是吧
自己可以尝试换一下图片 操作类同
|