Js逆向教程19-websocket介绍
创始人
2024-03-04 16:59:02
0

Js逆向教程19-websocket介绍

在这里插入图片描述

作者:虚坏叔叔
博客:https://xuhss.com

早餐店不会开到晚上,想吃的人早就来了!😄

一、websocket介绍

Ws和Wss的区别相当于http和https的区别,

如果你想写一个聊天页面,需要频繁请求后台接口 还需要设置间隔时间(每隔1s发送一个请求) 才能拿到后台服务器的数据,因为http是轮询方式,只有请求完成后,才能拿到结果,只有客户端能发请求,所以说 要轮询 。

缺点就是占用服务器的性能?

更好的方案就是websocket,它是浏览器实现的。浏览器在底层升级http协议,从http协议升级到websocket只需要添加几个头部信息就可以完成升级。

为什么学逆向还要学wss呢,因为它不同于我们常用的http http用ajax发包。但是wss不是ajax发送请求

它是长连接协议 它的客户端一直会等着服务器发送数据。一些聊天软件也会加密 所以我们也需要逆向,其次,http都是文本数据,不会加密。wss发过来的都是二进制数据。这种字节码分析起来就比较麻烦,所以我们需要学调试字节码的技巧。

二、不同协议传输的类型

http最多的方式是json/xml/长文本。

wss传输二进制.

王者荣耀用protobuf,优点就是占用空间少。

QQ用的是TLV,TLV优点是处理tcp/udp的沾包问题。

三、websocket详解

这是关于介绍

https://www.runoob.com/html/html5-websocket.html

创建websocket对象才能在网页上使用。它是浏览器BOM定义好了,不能在v8引擎实现。

var Socket = new WebSocket(url, [protocol] );

其他语言都有封装websocket库 所以不在v8引擎实现也没关系。

既然是浏览器自带的,那么所有人实现都要带上websocket。

所以websocket本身就是关键词。

WebSocket 属性

属性描述
Socket.readyState只读属性 readyState 表示连接状态,可以是以下值:0 - 表示连接尚未建立。1 - 表示连接已建立,可以进行通信。2 - 表示连接正在进行关闭。3 - 表示连接已经关闭或者连接不能打开。
Socket.bufferedAmount只读属性 bufferedAmount 已被 send() 放入正在队列中等待传输,但是还没有发出的 UTF-8 文本字节数。

WebSocket 事件

可以通过Socket.onopen Socket.onmessage关键字查找。

Socket.onopen 因为服务器不知道客户端是否掉线。一般来说客户端退出要发送一个通知给服务器,这样服务器才知道,但有时客户端断点了,服务器那边还在等着客户端的退出请求呢 但是客户端断电了1小时 那么客户端就需要等1小时,会存在资源的浪费。如果同时有100个人掉线了,服务器还以为有100个人在线,就会产生资源的浪费。

通过心跳包就可以解决这个问题,约定的 客户端每隔30秒给服务器发个1,没有其他意义 ,什么时候服务器等了30秒后 没有接收到1,那么就直接断开和客户端的接触。这就是心跳包。

大家有时候做websocket爬取会莫名其妙断开了 一般是心跳包的问题

事件事件处理程序描述
openSocket.onopen连接建立时触发
messageSocket.onmessage客户端接收服务端数据时触发
errorSocket.onerror通信发生错误时触发
closeSocket.onclose连接关闭时触发

WebSocket 方法

Socket.send() 定义了客户端发送给服务器的方法。

比如说你看到了一个加密的数据从客户端发送到服务器,这个时候就应该找到send方法。

方法描述
Socket.send()使用连接发送数据
Socket.close()关闭连接

客户端的 HTML 和 JavaScript

目前大部分浏览器支持 WebSocket() 接口,你可以在以下浏览器中尝试实例: Chrome, Mozilla, Opera 和 Safari。


菜鸟教程(runoob.com)

四、实战

我们看一下网页的websocket的js应该怎么写,

http://kedou.workerman.net/

抓包的时候只能从new的时候开始抓,

打开调试工具,刷页面,切换到ws就可以看到请求了:

在这里插入图片描述

因为它不同于http所以就只有一个数据。可以看到这个数据一直在发送

在这里插入图片描述

红色箭头代码服务器像我们发送的数据

绿色箭头代表我们向服务器发送的数据

在这里插入图片描述

先看包的头部有哪些数据

ws开头的get请求 状态码是101 ,如果加密的就是wss

在这里插入图片描述

这四个标识了当前数据要升级为websocket,

Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits
Sec-WebSocket-Key: ODinYifeI+YCKffoh3pYfg==(可以随机生成)
Sec-WebSocket-Version: 13
Upgrade: websocket

在这里插入图片描述

返回的包:

服务器发回的数据

Connection: Upgrade
Sec-WebSocket-Accept: OKnTsOelskI4clKTEKuusDX+DMc=
Sec-WebSocket-Version: 13
Upgrade: websocket

在这里插入图片描述

这里的数据是明文的。它不同于http调试

通过包可以直接找到发起ws的位置:

在这里插入图片描述

		webSocket 				= new WebSocket( model.settings.socketServer );webSocket.onopen 		= app.onSocketOpen;webSocket.onclose		= app.onSocketClose;webSocket.onmessage 	= app.onSocketMessage;

绑定方法后 就会接收数据。

假如你找不到 也可以搜索

.onopen 

找到

在这里插入图片描述

停下断点后 可以点击js进到具体的方法。

在这里插入图片描述

这里就可以看到数据 没有加密的数据

在这里插入图片描述

搜索

.send(

可以找到发送数据的地方。

在所有相关的位置下断点

在这里插入图片描述

发送数据 就可以看到发送的明文数据

[

第五、总结

最后的最后
由本人水平所限,难免有错误以及不足之处, 屏幕前的靓仔靓女们 如有发现,恳请指出!

最后,谢谢你看到这里,谢谢你认真对待我的努力,希望这篇博客对你有所帮助!

你轻轻地点了个赞,那将在我的心里世界增添一颗明亮而耀眼的星!

💬 往期优质文章分享

  • C++ QT结合FFmpeg实战开发视频播放器-01环境的安装和项目部署
  • 解决QT问题:运行qmake:Project ERROR: Cannot run compiler ‘cl‘. Output:
  • 解决安装QT后MSVC2015 64bit配置无编译器和调试器问题
  • Qt中的套件提示no complier set in kit和no debugger,出现黄色感叹号问题解决(MSVC2017)
  • Python+selenium 自动化 - 实现自动导入、上传外部文件(不弹出windows窗口)

🚀 优质教程分享 🚀

  • 🎄如果感觉文章看完了不过瘾,可以来我的其他 专栏 看一下哦~
  • 🎄比如以下几个专栏:Python实战微信订餐小程序、Python量化交易实战、C++ QT实战类项目 和 算法学习专栏
  • 🎄可以学习更多的关于C++/Python的相关内容哦!直接点击下面颜色字体就可以跳转啦!
学习路线指引(点击解锁)知识定位人群定位
🧡 Python实战微信订餐小程序 🧡进阶级本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
💛Python量化交易实战 💛入门级手把手带你打造一个易扩展、更安全、效率更高的量化交易系统
❤️ C++ QT结合FFmpeg实战开发视频播放器❤️难度偏高分享学习QT成品的视频播放器源码,需要有扎实的C++知识!
💚 游戏爱好者九万人社区💚互助/吹水九万人游戏爱好者社区,聊天互助,白嫖奖品
💙 Python零基础到入门 💙Python初学者针对没有经过系统学习的小伙伴,核心目的就是让我们能够快速学习Python的知识以达到入门

🚀 资料白嫖,温馨提示 🚀

关注下面卡片即刻获取更多编程知识,包括各种语言学习资料,上千套PPT模板和各种游戏源码素材等等资料。更多内容可自行查看哦!

请添加图片描述

上一篇:安洵杯-复现

下一篇:CSS基础(超详解)

相关内容

热门资讯

失而复得的作文 失而复得的作文  在日常学习、工作或生活中,大家都经常看到作文的身影吧,通过作文可以把我们那些零零散...
拜年作文 拜年作文200字(精选14篇)  在平平淡淡的日常中,大家一定都接触过作文吧,作文要求篇章结构完整,...
月亮公主作文 月亮公主作文精选10篇  在学习、工作或生活中,大家都写过作文,肯定对各类作文都很熟悉吧,作文要求篇...
童年作文 童年作文100字(精选36篇)  在平时的学习、工作或生活中,大家都不可避免地会接触到作文吧,作文根...
我有一个梦作文 我有一个梦作文9篇  在现实生活或工作学习中,大家都写过作文吧,作文是由文字组成,经过人的思想考虑,...
我的新学校作文300字 我的新学校作文300字(通用70篇)  在平时的学习、工作或生活中,大家都尝试过写作文吧,写作文可以...
家国情怀作文 家国情怀作文(通用7篇)  在平日的学习、工作和生活里,许多人都有过写作文的经历,对作文都不陌生吧,...
棉被 棉被  好暖和,我躺在黑暗的小屋里,盖着母亲为我缝制的棉被--这是她在临我离家的前一天晚上熬了大半夜...
飞天小魔女作文 飞天小魔女作文  小魔女与蝴蝶仙子们和好如初,无比高兴。同时也有点担心,担心在这一年之内做不了一千件...
月光下的遐想作文600字 月光下的遐想作文600字(通用22篇)  在学习、工作或生活中,大家或多或少都会接触过作文吧,作文是...
唠叨作文400字 精选唠叨作文400字六篇  在日常的学习、工作、生活中,许多人都写过作文吧,作文根据体裁的不同可以分...
奇人异闻录650字作文 奇人异闻录650字作文  一个小朋友从口袋里掏出一元钱,向售货员说:“阿姨,我要买一支羊毫的`毛笔。...
关于中学生心理健康教育论文 现在很多关于校园暴力事件,这些事件的造成原因是什么,下面是小编为大家推荐的关于中学生心理健康教育论文...
启航2022专题作文 启航2022专题作文(精选15篇)  无论是身处学校还是步入社会,大家都接触过作文吧,作文是人们以书...
有所感悟的作文 有所感悟的作文其实每个人都不容易,再平凡的人也有他独特的一面,他也会为了生命而奋斗。人生道路上充满了...
借物喻人的作文 借物喻人的作文10篇  在平时的学习、工作或生活中,大家都有写作文的经历,对作文很是熟悉吧,作文根据...
春景图作文 春景图作文6篇  在生活、工作和学习中,大家总免不了要接触或使用作文吧,作文是从内部言语向外部言语的...
蛇头与蛇尾蛇作文 蛇头与蛇尾蛇作文蛇头与蛇尾蛇作文1  在一个春暖花开的春天里,有蛇头与蛇尾。 蛇尾看蛇头老是在前面自...
学会感恩的作文700字 关于学会感恩的作文700字合集九篇  在日常学习、工作或生活中,许多人都写过作文吧,作文是通过文字来...
阅读让生活更美好作文 阅读让生活更美好作文通用15篇  在平平淡淡的日常中,大家都尝试过写作文吧,通过作文可以把我们那些零...