通过 charles 抓包,接口返回 protobuf.通过 requests 构造这个请求,返回啥都没有但状态吗 200. 可能有老哥看到这个结构就知道我在爬哪个了.看破不说破哈 0.0
1
dreamerlv3ex 2019-12-04 16:27:53 +08:00
看不懂
|
2
wersonliu9527 OP @dreamerlv3ex 一般接口返回都是 json 数据,但是这个接口返回的是 protobuf,不知道怎么解析
|
3
keepeye 2019-12-04 16:35:54 +08:00 1
这不就是 protoc --decode_raw 结果吗
大部分情况下也足够了,如果要知道每个字段含义,那必须得有 protobuf 定义文件才行 你抓的是 vx? |
4
wersonliu9527 OP @keepeye 不是 vx, 这个老版本是 json,新版本是 protobuf.理论上能够对着老版本 json 结构把这个.proto 文件定义好吧? 但是再怎么解析呢, requests 脚本 content,text 都是空
|
5
keepeye 2019-12-04 17:05:45 +08:00
@wersonliu9527 你可以把二进制 16 进制字符串拷出来,然后参考 json 定义 protobuf 消息(字段不用全定义),写个脚本解析一下试试
|
6
nxy006 2019-12-05 10:00:08 +08:00
必须要有 protobuf 的定义(.proto 文件),再把这个问题编译成类( Java、Python、C++等都支持)。以 Java 为例,调用 GenClass.parseFrom(response.toByteArray()); 方法就可以获得结果的实例,具体参数的值可以调 get 方法获得。
|
7
sanget 2019-12-05 10:15:28 +08:00
protobuf 是加密过的,没有原 .proto 文件基本翻译不出来。
|
8
locoz 2019-12-05 10:42:45 +08:00
翻源码找到它的 protobuf 解析部分( proto 文件转换的对应语言的代码)然后照着定义成 proto 文件再转回 python 版本
|