如何解码谷歌请求头中的PB(Protocol Buffer)字符串?
解码谷歌请求头中的PB参数
你拿到的&pb=后的字符串不是标准Protocol Buffer二进制数据,而是谷歌自定义的私有编码格式,和公开的PB协议不是一回事,没有官方解码规范。
以下是可行的解码思路:
这种参数用
!作为分隔符,每个分段的前缀(比如1m、1y、2i)对应字段的类型和序号:y大概率是时间戳字段,数值可能是谷歌自定义的时间偏移值(比如从某个特定时间点开始的微秒数)i代表整数字段,后面的数字就是字段值b代表布尔字段,1对应true,0对应falses代表字符串字段,后面的编码串是经过处理的字符串值m代表复合字段,后面的数字表示该字段包含的子项数量e代表枚举字段,后面的数字是枚举值
针对你提供的参数分段解析示例:
!1m2:第1个复合字段,包含2个子项!1y5180949545401667117:第1个时间戳字段,值为5180949545401667117!2y10222232094831998944:第2个时间戳字段,值为10222232094831998944!2m1:第2个复合字段,包含1个子项!2i10:第2个整数字段,值为10!3e1:第3个枚举字段,值为1!4m6:第4个复合字段,包含6个子项!3b1到!20b1:这些都是上述复合字段下的布尔字段,值均为true!5m2:第5个复合字段,包含2个子项!1sjDZuZKnJB8uu5NoPkJ-GyA8:第1个字符串字段,值为jDZuZKnJB8uu5NoPkJ-GyA8(可能还经过了Base64或其他编码,需要进一步验证)!7e81:第7个枚举字段,值为81
需要注意的是,谷歌的这种私有编码字段含义没有公开文档,以上解析只是基于社区逆向经验的推测,不同场景下的前缀含义可能存在差异。如果需要精准解码,要么找到对应谷歌服务的内部.proto定义,要么尝试社区分享的逆向解码脚本,但准确性无法保证。
内容的提问来源于stack exchange,提问作者Scriphy
相关产品推荐
相关产品推荐

