爬虫 - ProtoBuf 协议

news2024/9/29 21:18:15

一、抓取请求

以下是请求的大致内容:
在这里插入图片描述
在这里插入图片描述

是乱码,需要解析。

二、解析

通过分析 requestresponseContent-Type: application/x-protobuf 得知:使用了谷歌的 protobuf 协议来传输数据,需要破解。

大致破解过程:
乱码 --> protobuf 数据 --> protobuf 文件 --> Java实体类 --> 序列化与反序列化 --> 传输数据。

三、破解

1. 获取 requestresponse 源文件

使用抓包工具 Fiddler 保存该请求的 requestresponse 源文件。不能直接复制 request Payloadresponse body 数据。直接复制的是富文本内容,我们需要的是原始的二进制数据。

2. 下载 Protoc

下载地址
下载解压之后,配置环境变量,路径配置到 bin 目录。
需要的两个控制台命令:

  • protoc --decode_raw < filename --命令一
  • protoc --java_out=./ filename --命令二

3. 获取 protobuf 原始数据

使用命令一,对 requestresponse 源文件操作。就会把 protobuf 原始数据打印到控制台。

4. 获取 protobuf 文件

这一步比较难,需要大致掌握 protobuf 语法,根据 protobuf 原始数据手动逆向出 protobuf 文件,并不断正向测试,修正 protobuf 文件。
官网文档由于是谷歌域名,所以被墙无法访问。
只能看些其他的网络资源

5. 生成 Java 实体类

使用命令二,对手动生成的 proto 文件操作。
在文件中需要加两行:
option java_package = "com.xxx.xxxx.xxxxx";
option java_outer_classname = "Filename";
会在 proto 文件同目录下,生成一个 com/xxx/xxxx/xxxxx/Filename.java 文件。

6. 序列化与反序列化

把该实体类放到工程内对应的目录下,在 pom 文件中加两个依赖,对应 protoc 版本。

<!--    Protoc相关依赖 -->  
<!-- https://mvnrepository.com/artifact/com.google.protobuf/protobuf-java -->  
<dependency>  
    <groupId>com.google.protobuf</groupId>  
    <artifactId>protobuf-java</artifactId>  
    <version>3.23.1</version>  
</dependency>  
<!-- https://mvnrepository.com/artifact/com.google.protobuf/protobuf-java-util -->  
<dependency>  
    <groupId>com.google.protobuf</groupId>  
    <artifactId>protobuf-java-util</artifactId>  
    <version>3.23.1</version>  
    <scope>runtime</scope>  
</dependency>

序列化并传输:

ProtoBuf.Message.Builder builder = ProtoBuf.Message.newBuilder();
builder.setF1();
builder.setF2();
ProtoBuf.Message data = builder.build();
byte[] payLoad = data.toByteArray();  
  
HttpRequest request = HttpRequest.post(url).body(payLoad);

反序列化:

ProtoBuf.Message msg = ProtoBuf.Message.parseFrom(data);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/670721.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

随时随地保持连接:数字游民适用的远程桌面

随着世界迅速适应数字革命&#xff0c;一种全新的职业——数字游民应运而生。数字游民指利用技术远程办公的专业人群&#xff0c;这是一种允许人们在旅行中办公、不受地点限制的工作生活方式。游牧式工作生活趋势并非一时的风尚&#xff0c;而是我们工作观念的彻底转变&#xf…

MUR8060PT-ASEMI快恢复二极管MUR8060PT

编辑-Z MUR8060PT在TO-247封装里采用的2个芯片&#xff0c;其尺寸都是140MIL&#xff0c;是一款高耐压大电流快恢复二极管。MUR8060PT的浪涌电流Ifsm为600A&#xff0c;漏电流(Ir)为10uA&#xff0c;其工作时耐温度范围为-55~150摄氏度。MUR8060PT采用抗冲击硅芯片材质&#x…

实在智能率先拥抱大模型技术,旗下“AI+RPA”系列产品迎来全面智能升级

实在智能RPA ​ AI时代&#xff0c;所有产品都将迎来用大模型进行全面智能升级。 随着以ChatGPT等为代表的生成式AI持续火热&#xff0c;大型语言模型&#xff08;Large Language Model, LLM&#xff09;领域的研发和布局在国内外有目共睹&#xff0c;微软、谷歌、百度系等生…

回收小程序是什么?有什么特点?

回收小程序旨在为用户提供便捷、环保的废品回收服务。以下是关于上门回收小程序的介绍&#xff1a;回收小程序旨在解决废品回收的难题&#xff0c;为用户提供一种方便、可持续的回收方式。通过小程序&#xff0c;可以轻松预约回收服务&#xff0c;将废品交由专业回收人员处理&a…

基于QFT的量子加法器的原理与实现-mindspore quantum

1 量子Fourier变换 离散Fourier变换以一一个复向量 x 0 , . . . , x N − 1 {x_0},...,{x_{N - 1}} x0​,...,xN−1​为输入&#xff0c;输出的数据是如下复向量 y 0 , . . . , y N − 1 {y_0},...,{y_{N - 1}} y0​,...,yN−1​&#xff1a; y k ≡ 1 N ∑ j 0 N − 1 x j …

【初识C语言】变量和常量

文章目录 1. 局部变量和全局变量2. 变量的作用域和生命周期3. 常量 生活中的有些值是不变的&#xff08;比如&#xff1a;圆周率&#xff0c;性别&#xff0c;身份证号码&#xff0c;血型等等&#xff09;有些值是可变的&#xff08;比如&#xff1a;年龄&#xff0c;体重&…

18款奔驰S450 4MATIC升级发光出风口,提升车内氛围感

完美匹配&#xff0c;全部都是原装位&#xff0c;安装很快&#xff0c;瞬间发光。随着氛围灯颜色的变化而变化。美丽靓丽与质感同存&#xff0c;大大提升了车的颜值档次。让您车生活更加的富有乐趣与满足&#xff01;

决策树笔记

决策树模型学习过程 1.根节点选择什么特征 2.只关注决策树的左侧分支 3.再关注右侧分支 纯度 熵就是样本的混乱程度&#xff0c;熵越大&#xff0c;越混乱&#xff0c;纯度就越低 减小熵信息增益 选择拆分信息增益 选择信息增益大的&#xff0c;以增加纯度 p1left 定义为…

2023年功能测试会被淘汰?自动化测试到测试开发?我的测试之路...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 现在2023年&#…

数据技术在金融行业有哪些应用_光点科技

随着信息技术的迅猛发展&#xff0c;大数据技术逐渐成为金融行业的重要工具。大数据技术的应用&#xff0c;不仅可以提高金融机构的运营效率&#xff0c;还能够提供更准确的风险评估和预测&#xff0c;从而为投资者和决策者提供更好的决策依据。 那么&#xff0c;大数据技术在…

ES应用风暴

文章目录 使用案例启发使用ElasticSearch作为主要的后端&#xff0c;作为搜索引擎在现有系统增加ElasticSearch使用ElasticSearch和现有的工具 常用于日志收集&#xff08;分析&#xff09;系统、实时警报 使用案例 维基百科&#xff1a;全文检索、高亮、搜索推荐。The Guar…

【无标题】Instant NGP(使用哈希编码的多分辨率的即时神经图形原语)

论文基本信息 作者&#xff1a;THOMAS MLLER&#xff0c;NVIDIA&#xff0c;瑞士ALEX EV ANS&#xff0c;NVIDIA&#xff0c;英国CHRISTOPH SCHIED&#xff0c;美国NVIDIA ALEXANDER KELLER&#xff0c;德国 关键词&#xff1a; Image Synthesis, Neural Networks, En- codings…

[230606] 听力TPO66汇总·最终篇|L3-WATM Wether Animals have a Theory Mind|19:30-21:30

[230605] 听力TPO66汇总下篇&#xff5c;L2-Fish Movement&#xff5c;13:00~14:0015:20~17:00 http://t.csdn.cn/jxqyr [230604] 听力TPO66汇总上篇&#xff5c; C1 L1 C2&#xff5c;10:20~12:00 http://t.csdn.cn/zyEGw 极度缺少相关背景知识

蓝精灵协会 | 23 年 6 月通讯

您好&#xff0c;Smurf 朋友们&#xff0c;欢迎阅读我们的新版时事通讯。它旨在分享来自社区及其项目的最新更新。我们希望您会喜欢它&#xff01; 水晶特卖&#xff1a;折扣从 6 月 19 日开始 根据社区的投票&#xff0c;我们延长了水晶薄荷的持续时间&#xff0c;并减少了折扣…

这所天津的热门院校,保护一志愿,曾连续两年专业课题目完全相同,平均140分!

一、学校及专业介绍 天津工业大学&#xff08;Tiangong University&#xff09;&#xff0c;简称“天工大”&#xff0c;位于天津市&#xff0c;是教育部与天津市共建高校、国家国防科技工业局和天津市共建的天津市重点建设高校、国家“双一流”建设高校、天津市高水平特色大学…

Python 常用内置函数与匿名函数的应用

目录 一、前言二、常用内置函数2.1 max()2.2 enumerate()2.3 map()3.4 reduce()2.5 filter()2.6 sorted() 一、前言 我们知道&#xff0c;Python 函数总体可分为两类&#xff0c;一类是标准函数&#xff0c;一类是匿名函数。其中标准函数中又可细分为内置标准函数、自定义标准…

支付宝一面:如何基于Redis实现分布式锁?

复习八股文的时候&#xff0c;分布式锁大家应该不陌生&#xff0c;像很多阿里、美团的面试官就很喜欢问这个问题。 前几天一位读者面试阿里的时候&#xff0c;就被问到了这个问题。当时&#xff0c;面试官追问的比较深&#xff0c;一些细节他回答的不是很好。不过&#xff0c;…

遭遇疑似网络攻击时服务器异常情况排查方法

一、适用场景 该方法主要用于发生网信安全异常情况时的异常设备信息提取和登机排查指导&#xff0c;主要包括主机类设备&#xff0c;linux和windows操作系统为主。 二、处理原则 网络安全应急工作坚持统一指挥、分工负责、及时预警、分级响应、密切协同、快速处置、确保恢复、…

Android Studio设置不自动运行到run标签

点击run成功后会自动切换到run标签&#xff0c;很烦人 设置&#xff1a; Edit Configuration app下的Miscellaneous 下&#xff0c;取消勾选 Activate tool window

提升项目经理能力,有什么方法?

一&#xff0c;项目管理是职场的基础能力 他思考了一会&#xff0c;和我说&#xff1a;项目经理这个职业&#xff0c;同事专业性强&#xff0c;薪酬稳定&#xff0c;福利优越。只要有几年的项目管理经验&#xff0c;也能生存无忧。 但是&#xff0c;如果你不满足于只做一个普…