使用Fiddler抓取websocket包-Android

1、关于websocket:

1、HTML5提供的在单个TCP上运行的全双工通讯协议(应用层协议)
2、客户端和服务器之间只需要进行一次握手就能够实现双向通讯,进行数据传输
3、相比较Ajax轮询机制需要不断地从客户端间隔性发送请求,传输不必要的头部数据,消耗大量的带宽,websocket节省了服务资源和宽带
4、通过send()方法发送数据给客户端,客户端通过onmessage接收服务器返回的数据

2、使用fiddler抓取websocket数据包
(1)在fiddler–>Rules–>Customize Rules…–>Fiddler ScriptEditor 中
的class Handlers 添加方法:

		static function OnWebSocketMessage(oMsg: WebSocketMessage) {  

		// Log Message to the LOG tab    

		FiddlerApplication.Log.LogString(oMsg.ToString()); 

	}

在这里插入图片描述
(2)点击对应的抓取软件进行抓取,右侧将出现websoket数据报文,可点击进行查看
在这里插入图片描述
在这里插入图片描述
(3)可查看日志信息
在这里插入图片描述

2、websocket握手请求:

客户端请求:
GET / HTTP/1.1
Upgrade: websocket
Connection: Upgrade
Host: example.com
Origin: http://example.com
Sec-WebSocket-Key: sN9cRrP/n9NdMgdcy2VJFQ==
Sec-WebSocket-Version: 13

服务器回应:
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: fFBooB7FAkLlXgRSz0BT3v4hq5s=
Sec-WebSocket-Location: ws://example.com/

Connection 必须设置 Upgrade,表示客户端希望连接升级成websocket协议
Upgrade 字段必须设置 Websocket,表示希望升级到 Websocket 协议。
Sec-WebSocket-Key 是随机的字符串,服务器端会用这些数据来构造出一个 SHA-1 的信息摘要。把 “Sec-WebSocket-Key” 加上一个特殊字符串 “258EAFA5-E914-47DA-95CA-C5AB0DC85B11”,然后计算 SHA-1 摘要,之后进行 BASE-64 编码,将结果做为 “Sec-WebSocket-Accept” 头的值,返回给客户端。如此操作,可以尽量避免普通 HTTP 请求被误认为 Websocket 协议。
Origin 字段是可选的,通常用来表示在浏览器中发起此 Websocket 连接所在的页面,类似于 Referer。但是,与 Referer 不同的是,Origin 只包含了协议和主机名称。

目前ios抓websocket包还未实现,实现的小伙伴记得给我留言哦!

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值