《图解HTTP》--fiddler的使用

第一节 http协议介绍

1. 什么是http协议:

超文本传输协议 允许将超文本标记语言文档从web服务器传送到客户端浏览器

2. http的工作原理:

web浏览器发送http请求到web服务器,服务器会将web对象发送给浏览器,浏览器解析web对象,进行显示

3.Fiddler是什么:

记录客户端的http和https请求,允许监视,设置断点,修改数据,基于事件脚本的子系统,能够使用.net进行扩展

4. Fiddler的基本界面:

主菜单栏/工具栏/web session列表(会话)/功能面板/quickexec(命令行工具)/状态栏

5. inspectors选项卡

查看http请求相关的请求和响应报文, raw查看全部信息

6. web session列表: 显示每个session的摘要信息(左侧)

#: fiddler生成的id

result: 响应的状态码

Protocol: 使用协议http或https

Host: 服务器主机名和端口号

URL:

Body:

Caching: 根缓存相关的字段的值

Content-type:

Process: 对应本地Windows的进程

7. fiddler设置开始捕获和停止捕获:

1. F12 File->Capture Traffic

2. 左下角的Capturing

8. http请求报文的结构:

header

请求体 首部 method uri 协议版本

空行

Body 主体

9. http响应报文的结构:

header

响应体 首部 method uri 协议版本

空行

Body 主体

10.fiddler抓包原理:

实际上是一个web代理服务器

11.什么是代理服务器:

代理服务器是网络信息的中转站,

1.共享网络: 能解决只有一条线路,一个公有IP的问题

2.提高访问速度,缓冲功能,第一次访问过后 就有缓冲,下次访问就很快

3.突破访问限制

4.隐藏身份,内部网的用户要对外发布信息的时候,就需要使用代理服务器的反向代理功能

12.Fiddler的工作原理

代理地址127.0.0.1 8888

启动fiddler的时候会自动将Internet设置为127.0.0.1,8888 退出时 取消代理

非正常退出 重启

13. 查看Internet的选项代理设置

控制面板->Internet属性->连接-局域网-高级 可以观察到代理服务器被设置为127.0.0.1 8888

14.fiddler如何捕获firefox:

firebox未设置fiddler的代理服务器没有配置

工具-选项-高级-网络-设置-使用系统代理设置

15.fiddler能不过那些http数据包:

任何支持http(HTTPS)协议的请求都能够被抓包

16.解压http响应

http响应是乱码,单击response body encoded.Click to decode解压http响应

点击上方的Decode进行全局解码

第二节 http协议和fiddler抓包

1.什么是https:

http+TLS(SSL) 数字证书认证机构申请证书 通过证书,浏览器在请求数据前与文本服务器有几次握手验证,互相证明身份,然后对http请求进行加密

2. fiddler如何进行https抓包

Tool--Options--https--Decrypt Https traffic--Ignore server cert....勾选 弹框勾选yes

3. 添加例外绕过https证书错误

特例火狐

我已充分了解可能的风险--添加例外--确认安全例外 就可以实现抓取https报文了

4. Firefox安装证书

tools-options-Actions-xxxx desktop下载

选项-高级-证书-查看证书(打开证书管理器) -选择证书机构 单击导入 选择fiddlerRoot.cer 弹框3个都勾选

5. Fiddler可以捕获https的握手验证:

Tunnel to

通过http协议建立的cs通道 简称http穿梭

隐藏: Rules->Hide Connects

6. 查看Windows本地安装的证书

1.windows+R cmd窗口 输入命令certmgr.msc

2.Tool--Options--https--Actions-Open window certificate Manager # səˈtɪfɪˌkeɪt

第三节 http协议请求方法和状态码

1.url详解

url:统一资源定位符

uri:统一资源标识符

协议+域名+资源路径+参数+锚(#source: 页面内部的超链接)

2.http请求方法

get: 获取资源 查询信息 参数: 名=值

post:表单填好的数据发送到服务器

put:更新数据

delete:删除数据

3.get和post的区别:

1. get提交的数据放在url之后+? post将数据保存在body中

2. get提交数据大小有限制 post没有限制

3. get需要使用request.querystring来获取变量的值, post使用request.Form

4. get提交的数据有安全问题

4.http状态码

100-101: 信息成功,表示请求已经成功接收,继续处理

200-206: 成功,成功接收,理解 处理

300-305: 重定向 需要进一步处理才能完成请求

400-415: 客户端错误 语法错误或者请求无法实现

500-505: 服务端错误 未能实现合法的请求

200: ok 完成

204: No Content 没有内容(1.不获取资源的情况下了解资源的情况 2.查看某个对象是否存在 3.查看header测试资源是否被修改)

206: Partial content 部分内容 (断点续传,大文档分解多个同时下载)

301: Moved Permanently 永久性转移

302: 跳转

304: 文档被缓存,可以直接使用

400: 语法错误

401: 未授权 网页采用Http基本认证 需要http请求中带上Authorization Header

403: 被服务器拒绝 body中找原因

404: 资源不存在

500: 服务器内部错误 代码 语句

502: 网关错误

503: 服务器暂时不可以使用 维护升级

第四节 header的介绍

1.http中的header:

key:value

2.fiddler查看header

inspector->request->headers

3.cache相关的header

缓存请求副本

4.cookie相关的header

cookie:header

set_cookie:header

5.Accept相关的header

客户端可以接受的媒体类型 text/html

6.Accept-Encoding相关的header

gzip,deflate 告诉服务器,浏览器支持gzip

7.Accept-Language相关的header

浏览器声明自己的语言

8.User-Agent和修改

1,浏览器告诉服务器,客户端使用的操作系统和版本,cpu类型,浏览器及版本,浏览器渲染引擎,浏览器语言,浏览器插件等

2.Rules-User-Agent 选择类型

9.Refer

让服务器判断来源页面 统计用户来源,看用户是从哪里搜索进来的

10.Connection

Connection:keep-Alive 保持连接特性 不会永久保持连接 一定时间 (可以通过Apache设置)

http协议是基于TCP协议的 当一个网页完全打开后,客户端和服务器之间用于传输http数据的TCP连接不会中断,如果客户端再次访问服务器上的这个网页,会将继续使用这个已经建立的连接

11.Host

主机和端口号

12.Fiddler查看响应的headers

inspectors中header进行分类

13.fiddler查看和复制header

inspectors中header进行查看和复制

第五节 web网页抓包和fiddler修改包

1.一个网页时如何打开的

1.输入url进行请求

2.发送第一个http请求去获取页面布局的HTML,父请求,服务器将HTTP响应发回给浏览器

3.浏览器会分析http响应中的HTML,如果发现HTML中引用了很多其他文件,浏览器会再次发送很多http请求,子请求

4.所有请求的响应都返回后,浏览器会把1个父请求加上多个子请求渲染出来,形成页面

2.fiddler选择请求

select->child request 快捷键[C] 子请求

select->person request 快捷键[P] 父请求

select->Duplicate request 快捷键[D] 相同请求

3.web简单性能测试

statistics 查看响应时间和状态码 详情统计信息和数据统计板 显示每条http请求的具体统计信息,直接发生和接收数,发送和接收时间,除了统计世界各地访问该服务器所需要的时间

Overall elapsed 查看http响应返回的响应时间

4.fiddler查看响应

webview: 查看HTML文档

imageview: image数据

json: json数据

5. fiddler设置断点修改http请求

设置断点,截断http请求,修改后再放行

1.全局断点

Rules->Automatic BreakPoint->before(F11) 拦截所有会话

Rules->Automatic BreakPoint->disabled(shift+F11) 取消拦截所有会话

2.单个断点

QuickExec输入命令 bpu www.baidu.com

QuickExec输入命令 bpu 取消

具体实现步骤:

1. before

2. 浏览器输入url进行访问

3. disabled

4. T图标为拦截的请求, 修改想要修改的内容 run to completion按钮放行

5. 回到浏览器 发现页面修改

6. Fiddler设置断点修改http响应

拦截响应 进行修改

1.全局断点

Rules->Automatic BreakPoint->response after(F11) 拦截所有会话

Rules->Automatic BreakPoint->disabled(shift+F11) 取消拦截所有会话

2.单个断点

QuickExec输入命令 bpafter www.baidu.com

QuickExec输入命令 bpafter 取消

具体实现步骤:

1. after

2. 浏览器输入url进行访问

3. disabled

4.T图标为拦截的请求, 修改想要修改的内容 run to completion按钮放行

5.回到浏览器 发现页面修改

6. Fiddler设置断点修改http响应

7. 伪造refer

修改请求中的refer

第六节 http协议中的缓存

1.缓存的概念

http缓存: web请求抵达缓存时,如果本地已有,就可以从本地的缓存中提取这个文件 不需要从服务器提取

2.缓存的优点

1. 减少冗余数据的传递,节省传输时间

2. 减少服务器的负担,大大提高了网站的性能

3. 加快了客户端加载网页的速度

3.fiddler可以方便的查询缓存的header

cache

4.判断缓存新鲜度

1.浏览器将最后修改时间通过header'if-Modified-Since'告诉web服务器

2.浏览器把缓存文件的Etag通过header'if-None-Match'告诉web服务器

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

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

2. web服务器接收到http请求,将服务器的文档修时间跟http发送过来的header;if-modified-since'进行鼻尖,如果时间一致,说明是新的,web服务器返回304状态码给客户端告诉浏览器直接使用本地缓存

3.加入文档已经被更新了,web服务器将发送文档的最新版本给浏览器客户端

6.预缓存有关的header

7.ETag

ETag: 实体标签,根据实体内容产生的一段hash字符,表示资源的状态

使用ETag主要解决Last-Modified无法解决的问题(服务器不能得到最后修改时间,修改过于频繁,最后修改时间变了等)

ETag和if-None-Match数据相同证明没有更新,服务器返回304 使用本地缓存

8.浏览器不使用缓存

CTRL+F5强制刷新,不使用缓存

Cache-Control: no-cache

9.直接使用缓存,不要服务器验证

1. F5刷新浏览器并在地址栏输入网址,回车

2. F5刷新浏览器,浏览器回去web服务器验证缓存

CTRL+X删除所有session

10.设置IE不使用缓存

选项->常规->浏览历史->设置 从不 删除所有cache

11.公有缓存和私有缓存的区别

Cache-Control:public: 公有缓存 千名用户共享

Cache-Control:private: 私有缓存 单个用户使用

你可能感兴趣的:(fiddler,图解HTTP,HTTP,图解HTTP)