当前位置: 首页 > news >正文

软件定制开发公司排名seo诊断优化方案

软件定制开发公司排名,seo诊断优化方案,模板网站建设全过程,做游戏网站多少钱在做APP抓取时#xff0c;会发现有的APP Response回来的数据有“加密”。不知道返回的内容是什么。 如下#xff1a; 如上#xff0c;内容不是明文的#xff0c;没办法解析数据。APP常见的对数据加密有三种情况#xff1a;第一种是#xff0c;用诸如AES这类加密算法对数…在做APP抓取时会发现有的APP Response回来的数据有“加密”。不知道返回的内容是什么。 如下 如上内容不是明文的没办法解析数据。APP常见的对数据加密有三种情况第一种是用诸如AES这类加密算法对数据加密然后在APP里用key进行解密这类的数据解密的难度不是很大弄清楚是用的什么加密算法就能反解。 第二种是用“私有”协议把数据序列化只有了解该协议的细节才有可能把数据反序列化出来。这个的难度较大没有功底头发撸白都不一定撸出来。游戏和大厂APP盛行搞一个自己的私有协议来交换数据。 第三种是用第三方厂商的协议来数据序列化自己搞不出来私有协议的就选用第三方厂商的。比如用 Google 的 Protobuf 来做数据序列化也就是数据“加密”。 今天聊的就是第三种Protobuf 的数据反解析。 先来看一个 Protobuf 做数据序列化的直观例子。比如一个 APP 的 Response 原先是以 json 格式返回的 这样很容易被解析用Protobuf把上面数据序列化再传输就变成类似这样 这张图片只是样例 这样就没法直接解析数据如果了解 Protobuf 协议的话就能加快反解速度。所以还得从头来聊 Protobuf 。 一、什么是 Protobuf Protobuf 是 Google 开发的一套数据存储传输协议跟 xml 和 json 一样的都是用来储存和传输数据的。 因为 Protobuf 能够把数据压缩得很小所以传输数据就比 xml 和 json 快几倍Protobuf 解析数据的速度也比它两快所以在数据网络传输上用 Protobuf 而不用 json 就有点受欢迎了。 不过 Protobuf 储存、压缩、传输效率比 json 好付出的代价就是用法麻烦不像 json.loads() json.dumps() 一下就搞定了这么简单。Protobuf 有一套自己的语法。不了解 Protobuf 协议语法和用法的话也无法反解数据。 先了解下 Protobuf 序列化和反序列化的整个流程1.1.先定义一个 Protobuf 语法文件 .proto 文件 该语法文件用来说明要传输哪些字段、字段的数据类型、数据间的嵌套关系这些。比如一个APP要返回的数据有电话号码姓名年龄这三个字段你就需要把这三个字段定义在 .proto 文件里并且指明他们的数据类型比如姓名和电话是字符串 年龄是整型。1.2.使用 Protobuf 提供的工具编译该语法文件。用工具编译 .proto 文件的目的是把 .proto 文件编译成代码工具会根据该 .proto 文件自动生产代码。 这个代码就是用来做数据序列化和反序列化的。 1.3.服务端用第2步中的代码把“明文”数据序列化变成“密文”后返回给APP。1.4. APP 客户端用第2步中的代码把“密文”数据反序列化就“解密”成明文拉。 理论说多了很迷糊再整个完整的直观例子二、Protobuf 正向开发流程  2.1.先配置 Protobuf 环境 https://github.com/protocolbuffers/protobuf/releases/在 Google 官方 github 地址下载 Protobuf  。 下载一个 Protobuf 编译器和一个调用编译器的接口程序我们这里用Python版的。 如上图箭头所示解压 protoc.win64.zip 里有个 protoc 命令就是编译器。PS注意要给 protoc 配置上环境变量不然没法全局调用该命令。  解压 protobuf-python-3.11.4.zip 这是Python模块cd到python目录里运行 Python setup.py build 和 Python setup.py install 安装Python模块。 Python编辑器里运行 import google.protobuf 可以检测是否安装成功。 example目录里有官方写好的Python示例程序 和 示例 .proto文件。 2.2.写一个 .proto 语法文件 语法文件怎么写要根据具体的传输数据来定制比如按照 example 里的示例如果要传输的数据是如下格式 那么定义的 .proto 语法文件就如下 这样就定义好了一个 .proto 语法文件语法文件如何定义要根据传输数据的不同而变。 更全的 protobuf 语法 可以看这个有网友翻译成了中文版的。https://colobu.com/2017/03/16/Protobuf3-language-guide/ 2.3.使用第一步中下载的 protoc 编译器来编译 .proto 文件 protoc --python_out. addressbook.proto 上述表示把 addressbook.proto 文件编译成Python版的。 如果文件语法错误在编译的时候会有提示。编译完后会多出一个.py文件 我们就可以调用这个 .py 来序列化上面的数据。 2.4.开始序列化数据 print里输出的就是序列化“加密”后的数据。 2.5.对序列化后的数据进行反序列化“解密” 反序列化就把数据又还原啦。 上述过程就是一个完整的正向数据 protobuf 序列化过程。我们可以看出来主要是定义一个 .proto 文件然后把它编译生成代码。 后面就主要用这个代码来做序列化和反序列化工作。 三、逆向解析 Protobuf 正向过程比较轻松因为对方即有 .proto 文件也有序列化代码也知道要传输的数据样式。但是逆向这个过程APP里是没有 .proto文件的APP里是有反序列化的代码但是看得也头晕。那该怎么办呢 借助工具我们使用上面下载的protoc编译工具这个工具提供反解析参数 protoc --decode_raw  people.bin 如上使用 --decode_raw 参数就能把序列化后的数据反序列化解密出来。 上面只是把数据还原了那如果我们要完全把 .proto 文件也还原出来该怎么办呢 如果 APP 发送 request 的数据要先序列化后再发送给服务端的话那爬虫要做的事情就不只反序列化还要能序列化。 做序列化是一个正向的过程按照上面流程必须先要有 .proto 文件才行。所以继续还原 .proto 文件还原 .proto 是个体力活和细致活。就是参照反解析出来的数据还原出 .proto 文件。   上面这张图是关键看懂了就能还原出来。上图左边是反解析出来的数据中中间是参照左边写出来的 .proto 文件右边是人家原本的 .proto 文件。 左边和中间图对比可以看出就是根据左边的字段挨个把字段重新定义出来就OK啦。遇到 { 就定义一个message。 中间和右边图对比可以看出变量的名字是无关紧要的数据类型还原正确就行。变量赋值的那些123是标识号message里同一层级的标识号不能重复一般是按照变量顺序从1开始递增。标识号的数字是个关键数字写错了反解析出来的数据会不对。 这样就把 .proto 文件还原出来了然后按照正向流程又去编译就可以使用它去序列化“加密”和反序列化“解密”APP数据了。
http://www.yutouwan.com/news/294759/

相关文章:

  • 绍兴网站建设seo腾讯企点下载
  • 本机电脑怎么做网站设计行业网站
  • 用phpmysql做网站国外免费网站服务器链接
  • 品牌设计公司网站在线设计海报的网站
  • 西安做h5网站美丽南方官网网站建设
  • 备案查询站长之家桂林旅游景点大全
  • 数据网站建设工具模板wordpress手机适配插件
  • 在大学做网站wordpress的aware主题
  • 快速网站价格温州移动互联网开发
  • 自己做响应式网站难吗更新wordpress
  • 微网站建设报价方案模板下载源码之家进不去
  • 石狮市建设局网站网店美工工资
  • 网站建设学的是什么知识跨境外贸是做什么的
  • 建设银行信用卡在网站激活后如何设置密码做网站流量要钱吗
  • 哈尔滨网站制作室内装修效果图制作
  • 简单的网站怎么做的免费海报设计网站有哪些
  • 电商网站建设实训报告互联网公司花名推荐
  • 做明星粉丝网站国家建设部网站查询
  • 外贸做网站建设哪家好多用户开源系统哪个好
  • 专业网站制作设网站短信接口怎么做
  • 做苗木生意上什么网站伪造wordpress浏览量
  • 给网站做优化刷活跃要收费吗导视设计案例分析
  • 营销推广手段有什么厦门做网站优化的公司
  • 网站建设涉及的标准天津市城乡建设网站
  • 花店网站建设个人小结app仿制
  • 江苏网站建设多少钱做外贸哪些国外网站可以推广
  • html5网站开发价格东莞++网站建设
  • 如何将网址提交到一些权重比较高的网站网站设计建设 网络营销推广
  • seo sem 外贸建站 网站建设 文化墙设计抚顺网站推广
  • 目前网站开发怎么兼顾手机网站展示型推广