c python通信protobuf_python 处理protobuf协议
背景:需要用django基于python3模拟一个http接口,请求是post方式,body是protobuf string,返回也是protobuf string
设计:django获取pb string的post body反序列化成json,通过json里面的指定字段的值获取对应的返回json, 并将返回的json序列化成pb string
重点:需要用python实现基于protobuf协议将json转化为pb string,将pb string转成json
步骤:
1.安装protobuf
安装protobuf,可直接下载编译后的压缩包直接解压后配置环境变量使用,我这里使用源码包安装方式【mac or linux】
下载源码包 https://github.com/protocolbuffers/protobuf/release
直接点击下载图示包,或者右键复制下载链接再通过wget下载
解压并安装
tar -zxvf protobug-all-3.6.1.tar.gz
cd protobuf-3.6.1 && ./configure && make && make check && make install
执行完毕之后通过命令 protoc --version校验是否安装成功,能显示版本则表示安装成功
2.python安装protobuf,直接通过pip安装
pip3 install protobuf
安装完成之后能成功导入 google.protobuf表示成功
3.根据协议生成python文件
将protobuf协议原文件openrtb.proto放在example目录包下,并执行命令则会生成对应的py文件openrtb_pb2.py
protoc --python_out=. openrtb.proto
4.实现pb和json的相互转换
from example importopenrtb_pb2from google.protobuf.json_format importMessageToJson, Parse#将pbStringRequest【protobuf string类型的请求body】转化为json string以便解析请求中的某个指定参数
defpb_to_json(pbStringRequest){
req=openrtb_pb2.BidRequest()
req.ParseFromString(pbStringRequest)
# preserveing_proto_field_name 设置为 True 可以保留 protobuf 的原有字段名,不然会自动转驼峰,如 request_id 会被自动转化为 requestId
jsonStringRequest=MessageToJson(req,preserving_proto_field_name=True)returnjsonStringRequest }#将jsonStringResponse转化为pbString返回
defjson_to_pb(jsonStringResponse){
bidResponse=openrtb_pb2.BidResponse()
Parse(jsonStringResponse, bidResponse)
pbStringResponse=bidResponse.SerializeToString()returnpbStringResponse }
c python通信protobuf_python 处理protobuf协议相关推荐
- 逆向分析:还原 App protobuf 协议加密
前言 之前有记录js逆向.安卓逆向等,今天这里记录下一些协议逆向,这种一般出现在websocket 协议. protobuf 协议等,某音,B站 APP等都有用到这些协议加密,而我们不再是像 js 端 ...
- 某音App protobuf协议还原逆向分析
趣味模块 小红是一名爬虫开发工程师,自从上次小红解决了字体反爬.websocket协议.B站protobuf协议后,小红一直所向披靡,过五关斩六将,在一个多月的时间里一直没有遇到过有难度的问题.但是今 ...
- B 站弹幕 protobuf 协议还原分析
这是「进击的Coder」的第 657 篇技术分享 作者:TheWeiJun 来源:逆向与爬虫的故事 " 阅读本文大概需要 3 分钟. " 目录 一.什么是protobuf? 二.网 ...
- netty 对 protobuf 协议的解码与包装探究(2)
netty 默认支持protobuf 的封装与解码,如果通信双方都使用netty则没有什么障碍,但如果客户端是其它语言(C#)则需要自己仿写与netty一致的方式(解码+封装),提前是必须很了解net ...
- protobuf协议_gRPC 使用 protobuf 构建微服务
gRPC 使用 protobuf 构建微服务 发表于 2018-05-02 | 阅读次数: 2997 | 字数统计: 1,805 gRPC 使用 protobuf 通信构建微服务 本文目录: 微服务架 ...
- 开源项目SMSS发开指南(三)——protobuf协议设计
本文的第一部分将介绍protobuf使用基础以及如何利用protobuf设计通信协议.第二部分会给出smss项目的协议设计规范和源码讲解. 一.Protobuf使用基础 什么是protobuf pro ...
- B站弹幕文件protobuf协议的逆向和还原
目标是B站弹幕的数据还原,随便打开一个视频,直接三连 能看到真实文本,但也有一些乱码,看一下 content-type content-type: application/octet-stream 参 ...
- Python基础 3.4 HTTP协议和静态Web服务器
HTTP协议和静态Web服务器 3.4.1 HTTP协议 1.HTTP协议介绍 全程:超文本传输协议 作用:规定浏览器和web服务器通信的数据格式 HTTP协议是在应用层的协议,基于传输层的TCP传输 ...
- Python 高级:05 HTTP 协议和静态 Web 服务器
一.HTTP 协议 1. HTTP 协议的介绍 HTTP 协议的全称是(Hyper Text Transfer Protocol),翻译过来就是超文本传输协议.超文本就是超级文本的缩写,是指超越文本限 ...
最新文章
- 2017年如何成为全栈工程师,这些技能是你必须具备的!
- PHP的上传文件思路及其代码
- MATLAB仿真TSC在哪里找,-bash:tsc:找不到命令
- 服务器互相备份不同步_详解容灾与备份,为数据安全保驾护航
- Redis源码分析(一)--Redis结构解析
- RPM 打包指南系列 一
- [Xcode 实际操作]四、常用控件-(12)环形进度条控件的使用
- C++编程基础一 28-编程练习一
- 使用ajaxfileupload.js上传文件成功之后,没有执行success方法
- 词性标注:中文词性标注简介
- 软件工程:编码和测试
- 实时换脸技术——直播,视频通话|脸部交换程序
- 人工智能趋势——2023 年综述
- 谈谈你对Spring Bean生命周期的理解【面试】
- euclidea4攻略_Euclidea几何构建10.4通关攻略
- 阿里旺旺 V5.60.03W
- Android WatchDog(4) - watchdog线程(Android 12)
- 计算机专业考研书目(中科大)
- 计算机二级中二叉树的考点,2019计算机二级(office高级应用)复习要点:二叉树的遍历...
- 涉密计算机及网络保密管理制度,长沙理工大学涉密计算机保密管理制度
热门文章
- sap 提取字符串中汉字
- ABAP 如何判断调用smartforms时是进行打印还是预览
- DELPHI的DBGRID有两个难点
- SAP: ALV的布局管理
- 冒险实施SAP HANA 农夫山泉缘何做第一个“吃螃蟹”者?
- 波司登在“寒潮”下再创新高,羽绒服行业真的靠天吃饭?
- 神武服务器维护打副本,6月9日神武2维护解读:120级副本奖励次数提升
- 为什么使用HashMap需要重写hashcode和equals方法_为什么要重写hashcode和equals方法?你能说清楚了吗...
- mysql gui tools 问题_Navicat与MySQL GUI Tools管理工具的优缺点对比
- java锁一次交互二次握手_Java后台开发面试实战(二):TCP三次握手四次挥手