fiddler学习

1 http协议和fiddler抓包

Fiddler抓包的原理:fiddler本质是一个代理服务器,默认的工作端口是8888.

Fiddler的工作原理:是以代理web服务器的形式工作的,使用的代理地址:127.0.0.1.端口:8888.

当fiddler退出时,会自动在Internet选项中取消代理,这样就不会影响别的程序。

查看Internet选项代理设置:控制面板—网络和Internet—Internet选项—连接—局域网设置—高级,可以看到代理服务器地址被fiddler设置为127.0.0.1:8888.关闭fiddler时,代理服务器地址取消。

注意:fiddler捕获Firefox的请求时,需要手动将Firefox的代理服务器配置成fiddler。打开Firefox,工具—选项—高级—网络—设置—使用系统代理设置。

Fiddler能够捕获任何程序发出的http/https请求,只要这个程序支持web代理服务器即可。

在抓包的过程中,若http响应是乱码,单击“response body is encoded. Click to decode.”

2 HTTPS协议和fiddler抓包

http协议是不安全的,浏览器发送给服务器的内容非常容易被中间人拦截。

Web通信如何做到安全:需要对http数据包进行对称加密,只有浏览器和web服务器知道如何加密和解密他们之间的消息。并且通过协商来确定使用哪种加密算法。

HTTPS就是加密过的http;HTTPS=HTTP+TLS或者SSL,采用HTTPS的网站需要去数字认证机构申请证书(certificate authority,CA)。通过这个证书,浏览器在请求数据前与web服务器有几次握手验证,以证明相互的身份,然后对http请求和响应进行加密。

Fiddler获取HTTPS会话:启动fiddler—tools—options—HTTPS,选中decrypt HTTPS traffic,在弹出的两个对话框中单击yes,同时选中ignore server certificate errors。Fiddler弹出警告信息,单击yes,信任证书,系统弹出警告,单击yes,安装证书。(可以在浏览器中输入https://www.baidu.com检查是否捕捉到了https的百度请求)

添加例外绕过https证书错误:有时候安装好了fiddler证书,使用fiddler捕获https网站的时候,仍然会出现连接错误,此时单击“我以充分了解可能的风险—添加例外—确认安全例外”,可以绕过证书错误。

Firefox需要单独安装证书,具体步骤:点击actions下面的第二个选项“export root certificate to desktop”把证书导出到桌面,证书文件名为“fiddlerroot.cer”;然后打开Firefox,工具—选项—高级—证书—查看证书,打开证书管理器—选择证书机构—单击导入fiddlerroot.cer,选择弹出对话框的3个选项,确定即可。

Fiddler可以捕获https的握手验证请求:fiddler中抓到的“tunnel to”的请求。HTTP tunnel又叫做HTTP隧道或者HTTP穿梭。

查看Windows本地安装的证书:Windows+r,在命令行窗口输入certmgr.msc;或者tools—https—actions—open Windows certificate manager。

3 HTTP协议请求方法和状态码

URL:uniform resource locator,统一资源定位符;用于完整描述Internet上某一处资源的地址。

URI:uniform resource identifier,统一资源标识符;原来唯一的标识某一个资源。

URL是一种具体的URI;

URL的基本格式:schema://host[:port#]/path/…/[query-string] [#anchor]

Schema:协议

host:域名

path:资源的路径

query-string:参数

anchor:锚

URL中的锚点是一种超链接,只是它是页面内部的超链接;

常见的http方法:get,post,put,delete,head。

理解get和post方法的区别:


http状态码,http status code

每个http响应报文都会携带一个状态码,用于告诉客户端请求是否成功;http响应报文的第一行由http协议号、状态码、状态消息3部分组成。

状态码   已定义范围      含义

1xx      100-201          信息提示,表示请求已经成功接受,继续处理

2xx      200-206          成功,表示请求已经被成功接收、理解、接受

3xx      300-305          重定向,要完成请求,必须进行进一步的处理

4xx      100-415          客户端错误,请求有语法错误或者请求无法实现

5xx      500-505          服务器错误,服务器未能实现合法的请求

4 http协议header介绍

http请求和http响应中有很多header,header的语法格式是“key:value”

5 网页抓包和fiddler修改包

打开一个网页,浏览器需要发生很多个请求;

web页面简单的性能测试:使用statistic查看性能,可以看到每个http请求的响应时间。在overall elapsed中能够看到http响应返回所需要的响应时间。

使用fiddler查看响应:raw选项可以查看完整的http响应;webview可以查看HTML文档;imageview可以查看图片;Jason选项可以查看JSON;

fiddler中设置断点修改http请求:fiddler本身是一个代理服务器,fiddler可以设置断点。拦截住http请求,修改http请求之后再放行。设置到断点之后,可以修改http的任何请求信息。设置断点的两种方法:

全局断点,单击rules—automatic breakpoint—before request,这种方法会拦截所有的会话;

单个断点:已知请求的URL地址,此时只要针对这一个请求打断点调试,其他的请求不会拦截。在fiddler左下角的quickExec命令行输入命令“bpu www.baidu.com”,要取消单个断点,在命令行输入“bpu”。

实例:fiddler修改http请求

1 启动fiddler,设置全局断点;

2 打开浏览器,输入www.baidu.com;

3 回到fiddler界面,关闭断点设置,因为此时已经拦截到想要拦截的http请求了,不需要拦截其他的http请求;

4 被拦截的http请求会有一个红色的T图标,选中需要修改的http请求,在raw选项卡中修改URL,同时修改相应的host。

5 单击绿色的run to completion按钮放行,回到浏览器可以发现打开的浏览器是新输入的地址。

6 fiddler手机抓包

fiddler要想实现手机抓包的条件:安装有fiddler的电脑和手机处于同一网络下;在fiddler中设置好捕获HTTPS。

手机抓包:

1 配置fiddler允许远程连接,启动fiddler--tools--options--connections—allow remote computers to

connect。配置完成之后记得重启fiddler。

2 获取fiddler所在机器的ip地址;

3 在手机上设置代理服务器;找到手机连接的WiFi,将代理改为手动,服务器主机名为fiddler所在电脑的IP地址,服务器端口号为8888,单击连接即可设置成功。

4 需要捕获HTTPS请求,则必须把fiddler证书安装到手机上。

Android设备安装证书的方法:

方法一:在手机浏览器输入http://hostip:8888,在打开的浏览器中单击“fiddlerroot certificate”下载证书,进行安装;

方法二:tools--options--HTTPS--点击actions下面的第二个选项“export root certificate to desktop”把证书导出到桌面,证书文件名为“fiddlerroot.cer”,然后发送到手机上。再打开手机中的设置--系统安全--凭据存储--从SD卡安装--选择fiddlerroot.cer进行安装。                               

在手机上设置好代理之后,fiddler会抓取到pc端和手机端的所有请求,可以设置过滤。tools--options--HTTPS--选择from remote clients only。

7 http协议中的缓存

浏览器和web服务器之间如何处理浏览器缓存:

http缓存是指当围脖服务器请求抵达缓存时,如果本地有“已缓存的副本”,就可以从本地存储设备中提取这个文档,而不是从原始服务器中提取;

缓存的优点:减少冗余的数据传输,节省了传输时间;减少了服务器的负担,提高网站的性能;加快了客户端加载网页的速度。

fiddler中可以方便的查看缓存的header;

通过最后修改时间来判断缓存的新鲜度:

1 浏览器客户端想请求一个文档,首先检查本地缓存,发现存在这个文档的缓存时,获取缓存文档的最后修改时间,通过“if-modified-since”发送http请求给web服务器;

2 服务器接收到http请求,将服务器文档的修改时间(last-modified)跟http请求header中的if-modified-since相比较,如果时间一样,说明缓存是最新的,web服务器将发送状态码304(not modified)给浏览器客户端,告诉客户端直接使用缓存里面的版本;

3 假如文档被更新了,web服务器会发送该文档的最新版本给浏览器客户端。

Etag(entity tag)实体标签,根据实体内容生成一段hash字符串,可以表标识资源的状态,当资源发生变化时,Etag也随之发生变化。ETag是web服务器产生的。

浏览器把缓存文件的ETag通过header“if-none-match”告诉web服务器,if-none-match和ETag的值一样,说明文件没有更新,服务器返回304,告诉客户端使用本地缓存文件。

使用【Ctrl+F5】快捷键强制刷新浏览器,可以让浏览器不使用缓存;

设置ie不使用缓存:打开ie--工具--Internet选项--常规--浏览历史记录--设置--选择从不;

缓存文件夹所在位置:打开ie--工具--Internet选项--常规--浏览历史记录--设置—查看文件;

8 http协议压缩和URL encode

http压缩可以将纯文本压缩至原内容大小的40%,节省了60%的数据传输;http可以对内容进行编码,http压缩就是内容编码的一种。

URL Encode(URL编码)就是将所有非英文字母、数字字符都替换成%+两位十六进制数,比如空格的编码为“%20”;

可以使用fiddler中的textwizard对字符编码:

tools--textwizard--选择transform—URLEncode

9 fiddler使用技巧

通过filter功能过滤,使网页只显示自己想要看的http请求;在filters选项卡,选中“use filters”,即可开启过滤功能;

QuickExec命令行的使用:

help:显示所有的命令;

cls:清屏;

select:选择会话;

?.png :选择后缀为.png的图片;

bpu:截获request;


fiddler比较会话的不同,可以下载Windiff工具;

fiddler插件:利用Java script formatter插件可以格式化JavaScript代码,增加可读性;

Gallery插件可以显示图片的缩略图。

你可能感兴趣的:(fiddler学习)