python爬虫SHA案例:某直播大数据分析平台

声明:
该文章为学习使用,严禁用于商业用途和非法用途,违者后果自负,由此产生的一切后果均与作者无关

一、找出需要加密的参数
  1. js运行 atob(‘aHR0cDovL3d3dy5oaDEwMjQuY29tLyMvc2VhcmNoL3NlYXJjaA==’) 拿到网址,F12打开调试工具,点击搜索,找到 api/dy 请求,鼠标右击请求找到Copy>Copy as cUrl(cmd)
  2. 打开网站:https://spidertools.cn/#/curl2Request,把拷贝好的curl转成python代码
    在这里插入图片描述
  3. 新建hrdj.py文件,把代码复制到该文件内,复制请求中的参数赋值给data,把请求中的data参数换成json,把reponse.text换成reponse.json(),运行该文件会发现请求成功,并且成功打印出数据
    在这里插入图片描述在这里插入图片描述
  4. 然后把代码中的header全部注释,再运行文件,会发现数据依然可以请求成功,再把data中的sign注释会发现数据请求失败,说明cookie中不存在加密参数,params中的code是加密参数,token看起来是加密参数,不过是登陆成功后后台返回的,不用管
    在这里插入图片描述
二、定位参数加密位置
  1. 首先尝试关键字code搜索,会发现很难定位到
    在这里插入图片描述
  2. 切换到sources,添加XHR拦截 api/dy
    在这里插入图片描述
  3. 点击搜索发送方请求,一直点击跳到下一个函数,遇到拦截器,会发现请求拦截器中并没有相关的加密逻辑,继续点击跳到下一个函数,遇到 a 是返回结果的时候,分析代码发现,会发现 Object(D[“g”])(a).then 方法,恰好 a 是 then 里面函数的参数,可以初步判断 Object(D[“g”]) 是调用请求的函数,在 then 里面打上断点
    在这里插入图片描述在这里插入图片描述
  4. 结束断点调试,点击搜索发送方请求,点击跳过断点调试,找到刚才打断点的地方,鼠标悬浮到 D[“g”] 上,点击蓝色的地方找到该方法,会发现有两个 sign 赋值的地方,可以确定 sign 是在这两个地方中其中一个生成的,在这两个地方都打上断点 ,至此 sign 加密位置以确定
    在这里插入图片描述在这里插入图片描述
三、分析 sign 值加密代码
  1. 结束断点调试,点击搜索发送方请求,在控制台输出 E(n, e) ,结束断点调试,最新查看请求中的 sign 和打印出的 E(n, e) 值是一样的,说明 sign 是由E(n, e) 生成
    在这里插入图片描述
  2. 点击搜索发送方请求,分析代码得知 E(n, e) 内部是由 k(“param=” + JSON.stringify(n) + “&timestamp=” + e + “&tenant=1&salt=” + C) 实现,而 k = t(“6c27”).sha256 说明该算法是 SHA256 算法生成
    在这里插入图片描述
四、生成加密参数
  1. 新建 hrdj.js 用于放 扣下的 js 代码
  2. 把 E 函数拷贝出来,放到 hrdj.js 文件,并把 k 替换成 SHA256 算法
    在这里插入图片描述
  3. 分析加密数据,把 n 输出控制台会发现,n 是请求中的 param 参数,分析代码 可以看出 e = (new Date).getTime(),而 C 是 z 函数,把 z 函数拷贝出来,放到 hrdj.js 文件,把 C 换成 e函数 ,把 E 参数的 e 换成 e = (new Date).getTime(),有命名冲突的需要换命名,其实 C 是固定的字符串直接打印出来赋值就行,这里为了走完流程把 C 生成的代码也扣一下
    在这里插入图片描述在这里插入图片描述
  4. 分析z函数,需要注意的有 s[“a”]、A[“a”]、h[“a”]、p[“a”]、f[“a”]、m[“b”],把它们在控制台打印出来发现都是函数,点击控制台上的打印信息,把函数拷贝到 hrdj.js 文件,分别替换 s[“a”]、A[“a”]、h[“a”]、p[“a”]、f[“a”]、m[“b”],在拷贝的过程中会发现这些函数内部实现的变量都是固定值,只有 m[“b”] 函数中的 i 变量是由 t 函数生成,在生成 i 的地方打断点
    在这里插入图片描述在这里插入图片描述
  5. 刷新页面,在控制台输出 i 会发现 i = 66,把 hrdj.js 里 d1 的 i 替换成 66
    在这里插入图片描述在这里插入图片描述
  6. 验证签名,api/dy 请求上的 param 参数本来就是字符串,所以把 JSON.stringify(n) 换成 n 就行,打印出加密数据 和 加密结果,复制加密数据,打开 https://spidertools.cn/#/crypto,找到加解密中
    在这里插入图片描述在这里插入图片描述
五、验证结果
  1. 修改 hrdj.py 文件,重新运行,数据获取成功
    在这里插入图片描述在这里插入图片描述

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

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

相关文章

基于安卓android微信小程序的个人管理小程序

运行环境 开发语言:Java 框架:ssm JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包&a…

记录一次较为完整的Jenkins发布流程

文章目录 1. Jenkins安装1.1 Jenkins Docker安装1.2 Jenkins apt-get install安装 2. 关联github/gitee服务与webhook2.1 配置ssh2.2 Jenkins关联2.3 WebHook 3. 前后端关联发布 1. Jenkins安装 1.1 Jenkins Docker安装 Docker很好,但是我没有玩明白如何使用Docke…

EI论文程序:Adaboost-BP神经网络的回归预测算法,可作为深度学习对比预测模型,丰富实验内容,自带数据集,直接运行!

适用平台:Matlab 2021及以上 本程序参考中文EI期刊《基于Adaboost的BP神经网络改进算法在短期风速预测中的应用》,程序注释清晰,干货满满,下面对文章和程序做简要介绍。 为了提高短期风速预测的准确性,论文提出了使用…

创新工具 | 教你6步用故事板设计用户体验事半功倍

问题 构思方案时团队在细节上难以共识 故事板是什么?故事板就像连环画一样,将用户使用解决方案的关键步骤顺序串联了起来,呈现了方案和用户之间的交互。 故事板以先后顺序展现团队票选出来的最佳解决方案,在过程中对于方案中未…

LangChain 5易速鲜花内部问答系统

展示了一个完整的问答系统的实现,使用了Flask来构建Web界面、langchain进行文档处理和检索,以及OpenAI的语言模型。代码的复杂性在于集成了多种高级技术和处理大型数据集和语言模型。 LangChain 实现给动物取名字,LangChain 2模块化prompt t…

MATLAB Simulink和S7-1200PLC MOBUSTCP通信

MATLAB Simulink和SMART PLC OPC通信详细配置请查看下面文章链接: MATLAB和西门子SMART PLC OPC通信-CSDN博客文章浏览阅读749次,点赞26次,收藏2次。西门子S7-200SMART PLC OPC软件的下载和使用,请查看下面文章Smart 200PLC PC Access SMART OPC通信_基于pc access smart的…

Django实战:从零到一构建安全高效的Web应用

目录 一、概述 二、版本控制和部署 1、Git版本控制 2、Docker部署 三、数据库配置 1、配置数据库设置 2、创建数据库模型 四、URL路由和视图 1、定义URL路由 2、创建视图 五、模板渲染 1、创建模板 2、在视图中使用模板 总结 一、概述 Django是一个高级Python W…

CleanMyMac X4.16免费版mac电脑一键清理电脑垃圾工具

但是,我最近发现随着使用时间的增加,一些奇奇怪怪的文件开始占据有限的磁盘空间,存储空间变得越来越小,系统占用空间越来越大,越来越多的无效文件开始影响我电脑的运行速度。 Mac的文件管理方式和Windows不太一样&…

基于C#实现字符串相似度

一、概念 对于两个字符串 A 和 B,通过基本的增删改将字符串 A 改成 B,或者将 B 改成 A,在改变的过程中我们使用的最少步骤称之为“编辑距离”。比如如下的字符串:我们通过种种操作,痉挛之后编辑距离为 3,不…

【zabbix监控四】zabbix之监控tomcat服务报警

一、监控tomcat服务是否正常运行 1、客户端部署 首先要在zabbix-agent客户端上安装tomcat服务,并能正常启动和关闭 1.1 客户端编写脚本 vim /opt/tomcat.sh#!/bin/bash anetstat -natp |grep 8080|awk {print $6}|grep LISTEN if [[ $a LISTEN ]];thenecho &qu…

upload-labs(1-17关攻略详解)

upload-labs pass-1 上传一个php文件,发现不行 但是这回显是个前端显示,直接禁用js然后上传 f12禁用 再次上传,成功 右键打开该图像 即为位置,使用蚁剑连接 连接成功 pass-2 源码 $is_upload false; $msg null; if (isse…

QMenuBar和QToolBar使用同一个QAction

文章目录 前言一、编辑QMenuBar二、将QMenuBar中的Action添加到toolbar总结 前言 qmenubar中的action添加到toolbar,不是在toolbar中再添加action,效果图如下 一、编辑QMenuBar 正常编辑QMenuBar,以下图为例 二、将QMenuBar中的Action添…

matlab层次分析法模型及相关语言基础

发现更多计算机知识,欢迎访问Cr不是铬的个人网站 代码放在最后面! 这篇文章是学习层次分析法模型的笔记。 1.什么时候用层次分析法 层次分析法是建模比赛中最基础的模型之一,其主要用于解决评价类问题(例如:选择哪种方案最好、…

opencv(5): 滤波器

滤波的作用:一幅图像通过滤波器得到另一幅图像;其中滤波器又称为卷积核,滤波的过程称为卷积。 锐化:边缘变清晰 低通滤波(Low-pass Filtering): 目标:去除图像中的高频成分&#…

什么是RS485通信

RS-485是一种通讯接口标准,RS就是Recommended Standard的缩写(推荐标准的意思)485是标识号。 RS485采用总线的接线方式,广泛应用于数据采集和控制,它的主要优点之一是它允许将多个RS485设备放在同一条总线上。 多设备…

关于LED显示屏的扫描方式知识

LED显示屏的扫描方式是指LED显示屏如何以一定的顺序控制LED点阵的亮度,从而形成图像或文字。主要有静态扫描和动态扫描两种方式。 静态扫描(Static Scan): 描述: 在静态扫描中,LED显示屏的每个LED点都有一个…

DataBinding原理

1、MainActivity首先使用DataBindingUtil.setContentView设置布局文件activity_main.xml。 2、随后,经过一系列函数调用,ActivityMainBindingImpl对象最终会实例化,并与activity_main.xml进行绑定。 3、实例化后的ActivityMainBindingImpl对象…

基于深度学习的单帧图像超分辨率重建综述

论文标题:基于深度学习的单帧图像超分辨率重建综述作者: 吴 靖,叶晓晶,黄 峰,陈丽琼,王志锋,刘文犀发表日期:2022 年9 月阅读日期 :2023.11.18研究背景: 图像…

微信小程序配置企业微信的在线客服

配置企业微信后台 代码实现 <button tap"openCustomerServiceChat">打开企业微信客服</button>methods: {openCustomerServiceChat(){wx.openCustomerServiceChat({extInfo: {url: 你刚才的客服地址},corpId: 企业微信的id,showMessageCard: true,});} …

深度学习之基于YoloV5-Pose的人体姿态检测可视化系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 深度学习之基于 YOLOv5-Pose 的人体姿态检测可视化系统介绍YOLOv5-Pose 简介系统特点系统架构使用方法 二、功能三、系统四. 总结 一项目简介 深度学习之基…