某方protobuf闲谈

本文介绍了如何分析protobuf协议,通过抓包发现某网站使用protobuf传输数据。详细讲解了从跟踪栈到解析请求参数的过程,并提供了protobuf工具下载、proto文件编写及Python请求的步骤,最终成功解析请求结果。
  • 问题

    当我们去看某方的时候,搜索了关键词svm,然后通过抓包查看,请求的Request Payload是一串看不懂的乱码,并且返回的数据也大部分是乱码

    观察请求的Content-Type是application/grpc-web+proto,没错数据的传输是protobuf的形式了

    protobuf的相关概念和原理,网上有很多教程,自行百度即可

  • 跟栈分析

    从下图入口进去

    如下图打上断点,刷新可以看见请求参数

    在如下位置打上断点

解析抖音应用中使用的 Protocol Buffers(简称 protobuf)数据格式,通常涉及以下几个关键步骤: 1. **获取 protobuf 数据** 抖音的网络请求中,部分数据(如直播间弹幕、用户信息、评论等)可能以 protobuf 格式传输。可以通过抓包工具(如 Charles、Fiddler 或 mitmproxy)捕获抖音客户端的 HTTPS 请求,并提取响应体中的二进制数据。 2. **获取对应的 `.proto` 文件** 为了正确解析 protobuf 数据,必须拥有与数据结构匹配的 `.proto` 文件。抖音的 `.proto` 文件通常不会公开,因此需要通过逆向工程从 APK 中提取或参考社区分享的结构定义。例如,参考已有结构定义: ```protobuf message RoomUserSeqMessage { Common common = 1; repeated Contributor ranks = 2; int64 total = 3; string popStr = 4; repeated Contributor seats = 5; int64 popularity = 6; int64 totalUser = 7; string totalUserStr = 8; string totalStr = 9; string onlineUserForAnchor = 10; string totalPvForAnchor = 11; message Contributor { int64 score = 1; User user = 2; int64 rank = 3; int64 delta = 4; bool isHidden = 5; string scoreDescription = 6; string exactlyScore = 7; } } ``` 通过该定义可构建对应的解析器以解析抓包获取的二进制数据[^2]。 3. **使用 protobuf 编译器生成解析代码** 利用 `protoc` 工具将 `.proto` 文件编译为 Python、Java、C++ 等语言的类,用于解析实际数据。例如,使用 `protoc` 生成 Python 类: ```bash protoc --python_out=. room_user_seq_message.proto ``` 生成的代码可用于加载和解析数据。 4. **编写解析脚本** 使用生成的类对抓取到的二进制数据进行解析。以下是一个 Python 示例: ```python from room_user_seq_message_pb2 import RoomUserSeqMessage import sys def parse_protobuf_data(data): message = RoomUserSeqMessage() message.ParseFromString(data) return message if __name__ == "__main__": binary_data = sys.stdin.buffer.read() parsed_data = parse_protobuf_data(binary_data) print(parsed_data) ``` 5. **调试与适配** 抖音的 protobuf 数据可能会随着版本更新而变化,因此需要持续跟踪更新,并调整 `.proto` 文件结构以适配新版本。此外,部分字段可能被加密或压缩,需进一步解密处理。 6. **注意事项** 在解析过程中,应遵守相关法律法规,避免未经授权的大规模数据抓取行为。如涉及企业或商业用途,建议通过官方 API 获取数据。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_44902227

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值