当前位置: 首页 > news >正文

小程序开发公司简介范本沈阳seo关键词

小程序开发公司简介范本,沈阳seo关键词,深圳建设工程交易宝安,建设企业网站流程系列文章目录 训练地址:https://www.qiulianmao.com 基础-websocket逆向基础-http拦截基础-websocket拦截基础-base64编码与解码基础-protobuf序列化与反序列化视频号直播弹幕采集实战一:Http轮询更新中 websocket逆向-protobuf序列化与反序列化基础 系…

系列文章目录

训练地址:https://www.qiulianmao.com


  • 基础-websocket逆向
  • 基础-http拦截
  • 基础-websocket拦截
  • 基础-base64编码与解码
  • 基础-protobuf序列化与反序列化
  • 视频号直播弹幕采集
  • 实战一:Http轮询
  • 更新中

websocket逆向-protobuf序列化与反序列化基础

  • 系列文章目录
  • 一、基础知识
    • 1. 序列化与反序列化
    • 2. 常见的数据格式
    • 3. 什么是protobuf
  • 二、如何判断网站使用了protobuf
      • 1. 通过响应进行分析
      • 2. 通过请求头进行分析
      • 3. 分析js
  • 三、protobuf的序列化与反序列化
    • 1. 环境配置【python】
    • 2.定义proto结构
    • 3. 编译 .proto 文件
    • 4. 序列化
    • 5. 反序列化
  • 四、总结


一、基础知识

1. 序列化与反序列化

  • 序列化:就是将明文转化成字节序列的过程、方便传输。
  • 反序列化:就是将字节序列转化成明文的过程、方便使用。
  • 服务器【明文序列化为二进制】-------传输------> 客户端【二进制反序列化为明文】

2. 常见的数据格式

  • 文本化协议:json,xml。可视化效果好,便于维护。
  • 开源协议:protobufer,json。有现成的序列化与反序列化库,都是经过长期检验的。
  • 自定义的二进制数据:自行定义序列化与反序列化规则,自由度高,应用范围不广。

3. 什么是protobuf

  • protobuf是二进制数据序列化协议。
  • 优点:比json、xml等体积小、传输快。
  • 特点:序列化与反序列化需要借助proto文件。像结构体、有顺序、有string、int32、bool、bytes等数据类型。

二、如何判断网站使用了protobuf

1. 通过响应进行分析

请求响应是二进制的,抓包工具显示为乱码。

2. 通过请求头进行分析

在请求标头或者url地址参数中出现protobuf关键字

3. 分析js

js中出现1,2,3这样的顺序,出现string,int64,bytes…数据类型
分析js是非常重要的,在逆向过程中,需要借助js进行反推proto文件,才能对消息进行序列化与发序列化。

三、protobuf的序列化与反序列化

1. 环境配置【python】

  • 下载protoc.exe:https://github.com/protocolbuffers/protobuf/releases
  • 安装相关库【注意版本对应】
pip install protobuf
pip install google
# 如果提示没有安装google库
pip install google-cloud
pip install google-cloud-vision

2.定义proto结构

  • 文件名称:message.proto
syntax = "proto3";// 定义一个 Person 消息类型
message Person {string name = 1;int32 age = 2;Gender gender = 3;             // 枚举类型字段map<string, string> email = 4; // Map 类型字段,将字符串键映射到字符串值repeated Cars cars = 5;        // 重复字段,表示一个 Cars 类型的数组bool is_student=6//布尔类型bytes hi = 7}// 定义一个 Gender 枚举类型
enum Gender {UNKNOWN = 0;MALE = 1;FEMALE = 2;OTHER = 3;
}// 定义一个 Cars 嵌套消息类型
message Cars{string make = 1; // 假设 Cars 类型有一个名为 make 的字符串字段int32 year = 2;  // 假设 Cars 类型有一个名为 year 的 32 位整数字段
}

3. 编译 .proto 文件

有的电脑是不需要前面的.\
进入proto所在cmd路径后,执行

.\protoc --python_out=. person.proto

4. 序列化

# 秋恋猫
import person_pb2def serialize_person():# 创建一个 Person 对象person = person_pb2.Person()person.name = "秋恋猫"person.age = 30person.gender = person_pb2.Gender.FEMALE  # 使用枚举值# 添加 email 信息到 Map 字段person.email["plat"] = "qq"person.email["number"] = "qiulianmao@qq.com"# 添加车辆信息到重复字段car1 = person.cars.add()car1.make = "奥迪"car1.year = 2020car2 = person.cars.add()car2.make = "奔驰"car2.year = 2018# 布尔类型person.is_student = True# 字节型persion.hi = b'hi'# 将 Person 对象序列化为字节流serialized_data = person.SerializeToString()return serialized_dataserialized_data = serialize_person()

5. 反序列化

# 秋恋猫
import person_pb2
from google.protobuf.json_format import MessageToDict
def deserialize_person(serialized_data):# 创建一个空的 Person 对象person = person_pb2.Person()# 将字节流反序列化为 Person 对象person.ParseFromString(serialized_data)# Person 对象 转为字典obj1 = MessageToDict(person, preserving_proto_field_name=True)
deserialize_person(serialized_data)

四、总结

本文主要介绍了protobuf序列化与反序列化的知识点,主要讲解了序列化与反序列、常见的数据传输格式以及protobuf的实际使用。

http://www.khdw.cn/news/42890.html

相关文章:

  • 做网站开发学什么内容裂变营销五种模式十六种方法
  • 推荐个靠谱的网站四川刚刚发布的最新新闻
  • 高端网站建设设济南最新消息
  • 用php做网站难吗淘宝权重查询
  • 如何建设国外网站免费推广方式都有哪些
  • 购物网站项目开发什么叫seo优化
  • 共享互助医疗网站建设网络营销推广活动有哪些
  • 怎么做网站监控平台长尾关键词挖掘词工具
  • 山西住房城乡建设厅网站深圳百度推广seo公司
  • 网站开发软件百度关键词推广怎么收费
  • 招商网站建设推广品牌软文营销案例
  • 买空间服务器做网站怎么弄my63777免费域名查询
  • 网站前端切页面时间百度云搜索引擎 百度网盘
  • asp.net网站开发基础长沙官网seo服务
  • 青岛高品质网站制作成都网站关键词推广
  • 日本b2b网站活动推广方式
  • 潍坊做公司网站企业管理咨询
  • 罗湖商城网站建设哪家技术好郑州网站排名优化外包
  • 大邑县建设局网站免费制作网页平台
  • 网站建设项目及费用百度搜索大全
  • 网站底部 图标网络营销型网站
  • 上海网站建设明细表洗发水营销推广软文800字
  • 长春市城乡建设部网站怎么推广网页
  • 专业定制网站建设代理免费生成短链接
  • wordpress 中英安新seo优化排名网站
  • 免费网站优化排名制作网页的基本步骤
  • 重庆网红遵义网站seo
  • dw做的网站怎么做后台店铺推广引流的方法
  • 上海做网站的东莞哪种网站推广好
  • 承德网站建设规划微信小程序开发详细步骤