HTTP抓包实战要点
2021-08-17 14:38:00 0 举报
AI智能生成
登录查看完整内容
为你推荐
查看更多
HTTP抓包实战要点 读书笔记
作者其他创作
大纲/内容
计算机通讯网络中两台计算机之间进行通讯所必须遵守的规定或规则
协议
HyperText Transfer Protocol
y应用最广泛的网络协议
将超文本标记语言(HTML)从web服务器传送到客户端浏览器
超文本传输协议(HTTP)
HTTP/1.1
版本
基础知识
Web浏览器向web服务器发送一条HTTP请求
Web服务器接收到请求进行处理,生成响应
web服务器把响应发送给浏览器
浏览器解析HTTP响应中的HTML成网页
工作原理
获取指定页面信息并返回实体
获取变量值:Request.变量名
Get
类似Get,返回的响应中没有具体内容,用于获取报头
Head
向指定资源提交数据进行处理请求
数据包含在请求体重
新资源的建立或者对已有资源的修改
获取变量值:Request.Form
Post
传送数据取代指定文档的内容
Put
删除指定页面
Delete
Method(请求方法)
URL
协议版本
Request line
起始行
Request Header
以秒为单位
max-age=0
不使用缓存
no-cache
Cache-Control
缓存文件的最后修改时间
If-Modified-Since:
缓存文件的Etag值
If-None-Match:
HTTP1.0版本
Pragma:no-cache
Cache:缓存
Cookies
Accept:客户端可以接受服务器返回类型
Accrpt-Encoding:
Accep-Language:浏览器接受的语言
客户端使用的操作系统,版本,CPU类型,浏览器及版本,浏览器渲染引擎,浏览器语言,浏览器插件
Rules->User-Agents
修改模拟不同客户端
User-Agent
统计用户来源
用做防盗链接
主要用来让服务器判断来源页面
Referer
保持链接特性
Connection
指定主机和端口
Host
分类
首部(header)
Body
主体
请求报文
告诉客户端服务器是否产生了逾期的响应
第一位数字:响应的类别
3位数字组成
请求已被成功接收,继续处理
100~101
1XX
成功(成功接收,理解,接受)
200~206
2XX
重定向
要完成请求,必须进行更进一步的处理
300~305
3XX
客户端错误
有语法错误或无法实现
400~415
4XX
服务器错误
服务器未能实现合法的请求
500~505
5XX
200
Moved Permanently:重定向
请求的url已移走
返回中应该包含一个LocationURL,说明资源现在所处的位置
301/302
NotModified:未修改
客户的缓存资源是最新的,需要客户端使用缓存
304
NotFound
未找到资源
404
禁止访问
401
InternalServerError
服务器遇到一个错误,使其无法对请求提供服务
501
常见状态码
状态码
状态码消息
响应被缓存,且在多用户之间共享
public
响应做为私有缓存,不能在用户之间共享
private
提醒浏览器要从服务器提取文档进行验证
绝对禁止缓存
no-store
60s之后缓存过期
max-age=60
当前响应发送的时间
Date
缓存过期的时间(绝对时间)
注意:当Cache-Control和Expires同事存在,优先使用Cache-Control
Expires
服务器端文件的最后修改时间
Last-Modified
服务器端ETag的值
Entity Tag
ETag
Set-Cookies
首部
响应报文
报文结构
统一资源定位符
Uniform Resource Locator
用于描述一个网络上的资源
Schema:协议
host:域名
path:资源路径
QueryString:参数
一种超链接
在网页顶部设置锚点,以便点击能快速到达本页相应的位置
Anchor:锚
例:http://www.cnblogs.com/TankXiao/p/7087990.html#source
结构
1:请求一个文档,首先检查本地缓存,如果存在文档缓存,获取文档缓存的最后修改时间,通过If-Modified-Since发送给服务器
2:Web服务器收到请求,将服务器的文档修改时间跟请求Header中的If-Modified-Since相比较
3-1:如果时间一样,说明缓存还是最新的,服务器返回304(NotModified),告诉客户端直接使用缓存里的版本
:3-2:如果文档已经被更新了,Web服务器将发送该文档最新版本给客户端
原理
1:将缓存文件的最后修改时间通过Header中“If-Modified-Since”告诉服务器
2:把缓存文件的Etag通过Header的“If-None-Match"告诉服务端
判断缓存有效
浏览器缓存
代理服务器缓存
浏览器去web服务器验证缓存
F5刷新浏览器
直接使用有效的缓存
不会发送http去服务器校验缓存
这被称为缓存命中
输入网址按回车
Ctrl+F5强制刷新
不同操作的区别
选择从不
1:工具->Internet选项->常规->浏览历史记录->设置
IE缓存的文件就是临时文件
工具->Internet选项->常规->浏览历史记录->设置->查看文件
:2:删除临时文件
设置IE浏览器不使用缓存
缓存
HTTP+TLS
HTTP+SSL
采用HTTPS的网站需要去数字证书认证机构申请证书(Certificate Authority:CA)
对HTTP请求和响应进行加密
通过CA证书,浏览器在请求数据前与Web服务器有几次握手验证
HTTPS
把用户名:密码通过Base64编码加密后放在Http请求中的HeaderAuthorization中,发送给服务端
Http基本认证
HTTP协议
一个HTML
多个图片
CCS文件
JavaScript文件
JSON文件
父请求
1:浏览器会发送第一个Http请求去获取页面布局的HTML
如果引用很多其他文件(图片,CSS文件,JS文件..)
子请求
浏览器自动再次发送很多HTTP请求,去获取图片,CSS文件...
2:浏览器分析HTTP响应中的HTML
3:所有子请求响应全部返回,浏览器进行渲染形成页面
打开web页面的原理
对于每次请求服务器都独立处理,导致服务器不知道请求来自同一个浏览器同一个用户
服务器需要识别浏览器的请求,就必须了解请求的状态,Http协议是无状态的,所以就需要服务器和浏览器共同维护一个状态(会话机制),客户端再次请求时带上这个会话机制产生的id
为什么需要cookie
4taams9jkpgp8ahikm0pv1merh.JPG
会话机制产生过程.JPG
cookie机制保存会话id
会话机制产生过程
做用户认证(维持会话)
广告定向技术
cookie作用
Expries:过期时间
Path:路径
HttpOnly:安全方面的属相,一般设置成HttpOnly后javascript脚本就无法读取cookie信息
属性
临时性的
关闭浏览器cookie被删除
会话cookie
存储在硬盘上
退出或重启不删除
持久cookie
cookie分类
打开浏览器输入url
浏览器会先在硬盘查找相关cookie,然后把cookie放到请求中发给服务端
自动登录原理
通过跨站脚本攻击(XSS)获取
获取电脑上保存的Cookie文件
Cookie劫持
超链接
Cookie
Web网页
基于.NET Framework 2.0
Fiddler2
Fiddler4
网络的中间实体
网络信息的中转站
共享网络
提高访问速度
突破访问限制
隐藏身份
功能
代理服务器
Tools->FiddlerOptions
如何导入
JScript.NET写的一个CustomRules.js脚本文件
帮助文档:http://www.fiddlerbook.com/Fiddler/dev/ScriptSamples.asp
OnBeforeRequest
OnBeforeResponse
常用函数
FiddlerScript
常用插件
插件:www.telerik.com/fiddler/add-ons
1:cmd,输入certmgr.msc
Fiddler->tools->FiddlerOptions->HTTPS->Action->Open Windows Certificate Manager
打开Window本地证书管理器
快捷方式:F12
1:File->Capture Traffic
2:点击左下角Capturing
开启/停止抓包
Rules->AutomaticBreakpoint->BeforeRequests
快捷方式:F11
设置
Rules->AutomaticBreakpoint->Disabled
快捷方式:shift+F11
取消设置
全局断点
bpu www.baidu.com
命令行输入
bpu
取消
单个断点
拦截请求
Rules->AutomaticBreakpoint->AfterResponse
快捷方式:Alt+F11
bpafter www.baidu.com
bpafter
拦截响应
断点
手动模拟
1:设置断点
1:找到相应请求
2:拖到AutoResponder中
3:在RuleEditor中单击Find a file...
4:选择本地文件路径
5:选中Enable rules激活规则,选中Unmatched requests passthrough方形不匹配的请求
6:点击save
7:刷新浏览器
指定某接口自动模拟返回(Script)
模拟返回文件
命令行:urlreplace www.tabk-dev.com www.tank-demo.com
将发送给A站点的Http请求转发到B站点
请求转发到别的host
1:查相关浏览器信息
2:在Script中添加
手动添加不存在的浏览器
模拟各种浏览器
一个CustomRules.js脚本(JScript.NET)
http://www.fiddlerbook.com/Fiddler/dev/ScriptSamples.asp
官方文档
请求前调用
常见函数
新增模拟浏览器
代码放在OnBeforeRequest方法下
修改显示样式(Session的请求颜色)
修改Cookie
替换请求的host
或者修改其他参数:Host,Header,Cookie
修改Header
1:先读出Body字符串,修改,在放回去
2:直接替换body中的数据
修改body
修改请求
代码放在OnBeforeResponse方法下
修改响应
读写txt文件
使用正则表达式
保存session
读取session
可实现功能
R
重新发送请求,和工具栏和是哪个Replay按钮一样
Reissue Requests
U
无条件反复发送选中的请求
Reissue Unconditionally
E
把选中的请求以原来的方式重新发送,在每个新的请求中设置断点,在发送到服务端前可以修改请求
Reissue and Edit
V
重新发送请求,若响应和上一个请求一样,则绿色标记
Reissue and Verify
S
选中多个请求,按顺序发送请求,单线程模式
Reissue Sequentially
在Composer编辑该请求
Reissue from Composer
在IE浏览器中用get方法访问该请求
Revisit in IE
选中接口
按住shift,点击工具栏中Replay
输入请求发送次数
多线程同时发送
单接口指定次数
选中多个接口
点击工具栏中Replay
多接口同时
并发某个接口
Replay
重复的向服务器发送请求
危害
请求中添加时间戳(stamp)和数字签名(sign)
保证请求有效性
数字签名
保证请求的时效性
时间戳
解决方案
重放攻击
属于健壮性测试
验证弱网情况下软件的处理机制
软件的运行状态
处理机制
提示信息
网络恢复后的重连
测试点
操作时间
用户体验
响应缓慢,造成重复提交
关注点
网络慢或延迟,导致加载时间长
网络中断,Web服务器返回500等
网络超时,请求发送后,很长时间无响应
弱网场景
勾选:Rules->Performance->SimulateModemSpeeds
FiddlerScript中搜索if (m_SimulateModem),修改延迟时间
操作
1KB/延迟时间s=speed(s)
延迟时间计算公式
弱网模拟
1:选中父请求
Select->ChileRequests
2:右键鼠标
快捷键:C
选中所有子请求
Select->ParentRequests
快捷键:P
选中所有父请求
1:选中1个请求
Select->DuplicateRequests
快捷键:D
选择相同请求
如何选中请求
Apple设备需要制作新证书
fiddler默认证书是基于命令行工具makecert.exe
为了兼容,下载fiddler插件“CertMakerforIOSandAndroid
证书
Fiddler
基于JAVA的压力测试工具
网址:https://jmeter.apache.org/
当响应页没有设置编码时,JMeter会按照jmeter.properties文件中的sampleresult.default.encoding设置的格式解析,默认是ISO-8859-1修改成utf-8,重启
相应数据或页面乱码
常见问题
用于文本匹配的工具
正则表达式30分钟入门教程
正则表达式测试器
正则表达式
java源代码解释器
vars.get("name")
内置对象vars对变量操作
BeanShell
JMeter
QTP
客户端程序
Selenium
Web程序
Appium
手机UI
UI自动化
loadrunner
性能测试
soapUI
Postman
ResFulAPI/接口测试
基于HTTP协议
Mock and Stub
单元测试
JUnit
TestNG
JAVA
NUnit
.NET
测试套件框架
数据库测试
Firebug
HTTP Analyzer
抓包工具
Monkey
Monkey Runner
Android
UIAutomation
IOS
移动App
自动化测试和工具
HTTP抓包实战
0 条评论
回复 删除
下一页