前言
本博文只是在学习过程中对以下文章的查漏补缺,并不完善,推荐先看以下博文
https://blog.csdn.net/qq_35491275/article/details/111721639
一、protobuf是什么?
在解析protobuf时,必须得先对protobuf有个初步的了解,参考链接:
了解之后就可以编写一个属于自己的protoc文件了,当然还得先为你的计算机安装protoc的编译器,注意配置自己的环境变量,好全局使用
https://github.com/protocolbuffers/protobuf/releases/
二、使用protoc编译器解码,编译生成python/js文件?
fiddler保存抓包信息字节文件:
选择检查器,再选择hexview选项卡,可以看到最后的末尾处有一段黑色的报文,选中右键,点击save selected Bytes保存
该编译器可以在cmd中解码fiddler保存的字节文件
protoc --decode_raw < C:\Users\Administrator\Desktop\data
对自己编写的protoc文件进行编码生成py文件(要以./开头,即使在同一目录下)
protoc ./test.proto --python_out=./
对自己编写的protoc文件进行编码生成js文件(要以./开头,即使在同一目录下)
protoc --js_out=import_style=commonjs,binary:./ test.proto
补充上面链接中文章未提及的部分,利用python接受数据并解析:
首先编写好返回数据的protoc文件,再利用上面的cmd命令对其编译成py文件,并导入
# jie.protoc文件如下
syntax = "proto3"; // 定义proto的版本
message Number {
int32 id1 = 1;
int32 id2 = 2;
int32 id3 = 3;
int32 id4 = 4;
int32 id5 = 5;
int32 id6 = 6;
int32 id7 = 7;
int32 id8 = 8;
int32 id9 = 9;
int32 id10 = 10;
}
# 解析代码
# jie_pb2为编译好的py文件
import proto.jie_pb2 as cls
# Number 为 message的名字
Number = cls.Number()
Number.ParseFromString(response.content)
print(Number.id1) # 通过其属性的方式获取数据 结果 1:3129
总结
完结撒花