爬虫 Web Js 逆向:RPC 远程调用获取加密参数(1)WebSocket 协议介绍

RPC (Remote Procedure Call) 是远程调用的意思。

在 Js 逆向时,本地可以和浏览器以服务端和客户端的形式通过 WebSocket 协议进行 RPC 通信,这样可以直接调用浏览器中的一些函数方法,不必去在意函数具体的执行逻辑,可以省去大量的逆向调试时间。

本文先介绍 WebSocket 协议相关内容。

1. 简介

WebSocket是一种在单个TCP连接上进行全双工通信的协议。

优点:WebSocket 协议使客户端和服务器端之间的数据交换变得更加简单,它允许交互双方创建持久连接,同时支持服务器端主动向客户端推送数据。

注意:WebSocket 协议规范只作为参考,所以服务器端和客户端的连接条件和消息格式通常由服务器端开发者决定。

因此,服务器端可以在握手时对客户端进行身份校验,在消息传递或数据帧方面也可以设计一些用于反爬虫的方法。

服务器端可以以任何理由关闭连接,开发者常常利用这些特点限制爬虫连接或者获取数据。

注意:WebSocket是独立的、创建在TCP上的协议,双端通过HTTP/1.1协议进行握手,握手成功后才会转为WebSocket协议(WebSocket 握手,即连接请求的过程)

服务器端接收客户端发起的握手请求后,返回的握手结果中包含状态码和当前所用的协议,其中,Status Code 代表本次握手结果,状态码中的101表示连接成功。

2. WebSocket 连接

我们可以通过 Chrome 开发者工具中的 Network 面板,查看WebSocket的连接信息及传输的数据。

如下图(状态码 101 表示连接成功):

上图中箭头向上的数据是客户端发送给服务器端的,箭头向下的是服务器端推送给客户端的。

注:如果 Network 面板没有 Type 列,可以鼠标右键在菜单中选择(Scheme 协议也可以显示出),如下图:

相关推荐
benbenAItalk1 小时前
数字人口播视频的批量生产实践:素材规范、任务编排与质量验收
java·前端·音视频
2601_962885721 小时前
如何用 Python 扫描 A 股跳空缺口并统计缺口回补概率?
java·前端·python
西瓜太郎12342 小时前
Claude Code、Codex CLI、Gemini CLI 能否共用一枚 Key?先看协议选择矩阵
前端·api 网关·claude code·gemini cli·codex cli
陈随易4 小时前
在Finch用了62亿词元,我认为这是新一代Agent工具之神
前端·人工智能·后端
水域安全老周4 小时前
水趣钓鱼救生衣专利拆解:两级锁紧如何解决落水人衣分离
java·前端·网络
计算机魔术师5 小时前
Anthropic CEO突然喊踩刹车,OpenAI罕见力挺:AI这辆车不能只踩油门了
前端
wing985 小时前
从codex转战workbuddy使用一周的感受
前端·人工智能·后端
EatFan5 小时前
Java接入支付宝 JSAPI 支付保姆教程(二):流程讲解与前后端代码讲解
前端·spring boot·后端·微信小程序·小程序·uni-app
梦想平凡6 小时前
百游棋牌源代码开发搭建教程(五):房间创建、座位分配与请求幂等实现
前端·javascript·数据库·源代码管理
IT_陈寒6 小时前
Redis的Set操作居然能把我的服务整挂了?
前端·人工智能·后端