第一节 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: 私有缓存 单个用户使用