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