因之前没有接触过protobuf故此查阅了很多相关的材料,大致了解了相关的过程,那总得实践一下吧,随便找了涉及相关知识的用以来验证。
发现抖音web端在私信方面涉及到这方面的知识,那我们就开始验证下所学的只是是否正确吧。
通过抓包发现竟然是走的ws的协议,这可真麻烦,有没有一种什么方式可以实现比较便捷的方式呢,经过一番倒腾发现他有应急协议,二话不说直接开干。下方是返回的protobuf信息。
- 一、我们先保存到本地的文件取名:1.bin
- 二、安装protobuf,这个自行百度,一堆的教程
- 三、识别protobuf看是否是完整的文件
CMD运行如下命令:
protoc --decode_raw < C:\1.bin
1: 100
2: 10013
3: "0.4.1"
4: ""
5: 3
6: 0
7: "7747f9e:master"
8 {
100 {
1 {
6: 58
6: 0x333630393930353a
7: 0x333436363a353534
6: 52
6: 0x35383338
}
2: 1
3: 6652201397120991746
4: "{\"mention_users\":[],\"aweType\":700,\"richTextInfos\":[],\"text\":\"1111\"}"
5 {
1: "s:mentioned_users"
2: ""
}
5 {
1: "s:client_message_id"
2: "15fc194e-d542-47c1-8dc1-47494xxx9"
//局部省略
- 四、这样是不是清晰多了呢,那么接下来我们就需要编写proto文件啦 直接照着结构编写就可以了
syntax = "proto3";
message Request {
int32 cmd = 9;
int32 id = 2;
string version = 3;
}
- 五、接下来就是生成对应语言的proto代码
python3 -m grpc_tools.protoc -I./ --python_out=. --grpc_python_out=. ./helloworld.proto
//代码含义这边不做过多的解释,自行百度
- 六、调用代码并构建参数(照着上面的抄就可以)来校验生成的proto是否正确
request.cmd = cmd
request.id = id
request.version = "0.4.1"
- 七、获取相关的messageid,这边仅仅是校验proto的准确性就不去再写出如何获取messageid,成功发出。至此就可以愉快的调用与编写proto。初识proto,写的不好勿喷。
总结:
解析原始文件,编写proto文件,生成proto的对应的语言代码,引入代码,根据原始文件的结构拼装proto数据结构,生成proto的数据,最后提交测试。