【最新!七麦下载量analysis参数】逆向分析与Python实现加密算法

news2024/11/13 11:00:13

文章目录

  • 1. 写在前面
  • 2. 请求分析
  • 3. 加密分析
  • 4. 算法实现

1. 写在前面

  之前出过一个关于榜单analysis的分析,有兴趣的可以查看这篇文章:七麦榜单analysis加密分析

最近运营团队那边有同事找到我们,说工作中偶尔需要统计分析一下某APP在一些主流应用市场的下载量趋势数据

这个目前也只在一些成熟的移动应用数据聚合平台有,有的需要付费有的则数据有限。所以就有了这篇文章的出现!


分析目标

aHR0cHM6Ly93d3cucWltYWkuY24vYW5kYXBwL2Rvd25Ub3RhbC9hcHBpZC8xOTM1NDU1

在这里插入图片描述


作者声明:

本文章中所有内容仅供学习交流使用!严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!本文章未经许可禁止转载,若有侵权,请联系作者立即删除!

2. 请求分析

  首先我们选择最近一周提交请求,可以看到请求的参数所下图所示。加密参数analysis猜测是base64加密!appid(APP应用的ID),type(固定值天),sdate、edate(起始日期与截日期)

在这里插入图片描述

3. 加密分析

   这里我们搜索加密参数analysis或者一些加密特征关键词是很难搜索到有用的信息。还是需要使用XHR断点的方式!

下完断点我们直接往上找堆栈信息,因为断点截停处加密已经完成。之前文章说过加密的方式都一样,换汤不换药!下载量趋势这块着重在参数加密这块跟评论一样有点小细节

榜单是没有请求参数加密的,搜索有参数加密(不过参数不需要处理)

如下所示,我们直接定位到加密函数这里,断点调试分析可以非常清晰的看到a就是参数拼接之后的值(参数拼接是有讲究的,a是经过排序的):

在这里插入图片描述

然后接下断点继续往下走,会发现参数排序拼接后会经过base64编码,如下所示:

在这里插入图片描述

截止到这里我们尝试使用Python编码来实现一下对参数拼接后再Base64编码,如下所示:

在这里插入图片描述

这里要说一下的是这个d,一串字符。这个可能是后续会不定期更新的,如果你发现加密失效了,不一定是加密算法人家换了,可能就是这个字符串更新了而已!

在这里插入图片描述

4. 算法实现

最后,使用Python实现一下完整的代码,如下所示:

import base64
import random
import time

params = {
    'type': 'day',
    'edate': '2023-08-31',
    'sdate': '2023-08-25',
    'appid': '1935455'
}
data = ''.join(sorted([str(v) for v in params.values()]))
print(base64.b64encode(data.encode()).decode()

def get_analysis(params, url):
    # 定义字符集
    charset = 'xyz517cda96efgh'
    
    # 随机数
    random_value = -(random.randint(100, 10000))
    
    # 时间戳
    current_time = int(time.time() * 1000)
    
    # 计算o的值
    o = current_time - (random_value or 0) - 1515125653845
    
    # 对params进行Base64编码
    encoded_params = base64.b64encode(params.encode()).decode()
    
    # 构建字符串
    combined_string = f'{encoded_params}@#{url}@#{o}@#1'
    
    # 初始化结果字符串
    result = ''
    
    # 计算长度
    e = len(combined_string)
    n = len(charset)
    
    # 逐字符进行异或运算
    for i in range(e):
        result += chr(ord(combined_string[i]) ^ ord(charset[(i + 10) % n]))
    
    # 对结果进行Base64编码
    encoded_result = base64.b64encode(result.encode()).decode()
    
    return encoded_result

def get_download():
    cookies = '必填项,填自己的即可!'
    baseurl = 'https://api.qimai.cn'
    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
                      'Chrome/92.0.4515.159 Safari/537.36',
        'referer': 'https://www.qimai.cn/',
        'cookie': cookies,
    }
    url = '/andapp/download'
    params = {
        'type': 'day',
        'edate': '2023-08-31',
        'sdate': '2023-08-25',
        'appid': '1935455'
    }
    data = ''.join(sorted([str(v) for v in params.values()]))
    analysis = get_analysis(data, url)
    params['analysis'] = analysis

    res = requests.get(f'{baseurl}{url}', params=params, headers=headers).json()
    print(res)

使用上述Python代码测试结果如下:

在这里插入图片描述

  好了,到这里又到了跟大家说再见的时候了。创作不易,帮忙点个赞再走吧。你的支持是我创作的动力,希望能带给大家更多优质的文章

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

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

相关文章

DOM渲染与优化 - CSS、JS、DOM解析和渲染阻塞问题

文章目录 DOM渲染面试题DOM的渲染过程DOM渲染的时机与渲染进程的概述浏览器的渲染流程1. 解析HTML生成DOM树&#xff1a;遇到<img>标签加载图片2. 解析CSS生成CSSOM(CSS Object Model): 遇见背景图片链接不加载3. 将DOM树和CSSOM树合并生成渲染树&#xff1a;加载可视节点…

【动手学深度学习】--语言模型

文章目录 语言模型1.学习语言模型2.马尔可夫模型与N元语法3.自然语言统计4.读取长序列数据4.1随机采样4.2顺序分区 语言模型 学习视频&#xff1a;语言模型【动手学深度学习v2】 官方笔记&#xff1a;语言模型和数据集 在【文本预处理】中了解了如何将文本数据映射为词元&…

ATFX汇市:美初请失业金人数21.6万人,连降四期,劳动力供需偏紧

ATFX汇市&#xff1a;9月7日&#xff0c;美国劳工部数据显示&#xff1a;美国至9月2日当周初请失业金人数最新值21.6万人&#xff0c;低于前值22.9万人&#xff08;修正前22.8万人&#xff09;&#xff0c;低于预期值23.4万人。回顾历史数据&#xff0c;美国初请失业率人数从25…

【数学建模】2023数学建模国赛C题完整思路和代码解析

C题第一问代码和求解结果已完成&#xff0c;第一问数据量有点大&#xff0c;经过编程整理出来了单品销售额的汇总数据、将附件2中的单品编码替换为分类编码&#xff0c;整理出了蔬菜各品类随着时间变化的销售量&#xff0c;并做出了这些疏菜品类的皮尔森相关系数的热力图&#…

NIFI实现JSON转SQL并插入到数据库表中

说明 本文中的NIFI是使用docker进行安装的&#xff0c;所有的配置参考&#xff1a;docker安装Apache NIFI 需求背景 现在有一个文件&#xff0c;里面存储的是一些json格式的数据&#xff0c;要求将文件中的数据存入数据库表中&#xff0c;以下是一些模拟的数据和对应的数据库…

传输层协议 --TCP报文格式详细介绍

一、 TCP协议格式 TCP如何将报头与有效载荷进行分离&#xff1f; 当TCP从底层获取到一个报文后&#xff0c;虽然TCP不知道报头的具体长度&#xff0c;但报文的前20个字节是TCP的基本报头&#xff0c;并且这20字节当中涵盖了4位的首部长度。 因此TCP是这样分离报头与有效载荷的…

Java——》ThreadLocal

推荐链接&#xff1a; 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Kafka】 总结——》【Spring】 总结——》【SpringBoot】 总结——》【MyBatis、MyBatis-Plus】 总结——》【Linux】 总结——》【MongoD…

ChatGPT:深度学习和机器学习的知识桥梁

目录 ChatGPT简介 ChatGPT的特点 ChatGPT的应用领域 ChatGPT的工作原理 与ChatGPT的交互 ChatGPT的优势 ChatGPT在机器学习中的应用 ChatGPT在深度学习中的应用 总结 近年来&#xff0c;随着深度学习技术的不断发展&#xff0c;自然语言处理技术也取得了显著的进步。其…

软件设计模式(二):工厂、门面、调停者和装饰器模式

前言 在这篇文章中&#xff0c;荔枝将会梳理软件设计模式中的四种&#xff1a;工厂模式、Facade模式、Mediator模式和装饰器Decorator模式。其中比较重要的就是工厂模式和装饰器模式&#xff0c;工厂模式在开发中使用的频数比较高。希望荔枝的这篇文章能讲清楚哈哈哈哈&#xf…

OpenCV(三十一):形态学操作

​​​​​​1.形态学操作 OpenCV 提供了丰富的函数来进行形态学操作&#xff0c;包括腐蚀、膨胀、开运算、闭运算等。下面介绍一些常用的 OpenCV 形态学操作函数&#xff1a; 腐蚀操作&#xff08;Erosion&#xff09;&#xff1a; erode(src, dst, kernel, anchor, iteration…

【LeetCode】剑指 Offer <二刷>(6)

目录 题目&#xff1a;剑指 Offer 12. 矩阵中的路径 - 力扣&#xff08;LeetCode&#xff09; 题目的接口&#xff1a; 解题思路&#xff1a; 代码&#xff1a; 过啦&#xff01;&#xff01;&#xff01; 题目&#xff1a;剑指 Offer 13. 机器人的运动范围 - 力扣&#…

docker-compose安装mysql

基于docker-compose快速安装mysql 目录 一、目录结构 1、 docker-compose.yml 2、 my.cnf 3、error.log 二、执行安装 三、连接使用 一、目录结构 1、 docker-compose.yml version: 3 services:mysql:image: registry.cn-hangzhou.aliyuncs.com/zhengqing/mysql:5.7 #…

Kubernetes核心概念

Kubernetes是一个工业级的容器编排平台。 Kubernetes核心功能 服务发现和负载均衡。容器的自动装箱&#xff0c;调度&#xff08;scheduling&#xff09;&#xff0c;按照容器的规格&#xff08;需要的cpu和内存等&#xff09;确定一个容器存放到集群中的哪一个机器上。进行自…

创建vue3项目并引用elementui

1.创建vu3项目&#xff1a; 执行命令 npm create vuelatest 2.终端会出现如下选项&#xff0c;不确定的直接enter键进入下一步&#xff1b; 3.然后再执行下方命令&#xff1a; cd <your-project-name> npm install4.安装依赖成功后引入elementui,执行命令&#xff1a…

高压电容器的内部结构是什么样的?

高压电容器的内部结构取决于其具体的设计和用途&#xff0c;但通常包括以下主要组件&#xff1a; 电介质&#xff1a;电介质是高压电容器内部的核心部分。它通常由绝缘材料制成&#xff0c;如聚丙烯薄膜、聚酯薄膜、陶瓷或其他高绝缘性材料。电介质的选择取决于电容器的电压等级…

盘点那些有高级客服分配功能的软件系统

过去&#xff0c;很多企业虽然有服务意识&#xff0c;但并不强烈&#xff0c;现在客户需求以及团队运营的发展推动着企业在客户管理的方式上采用更有效的服务方式来应对实际的变化&#xff0c;尤其是客服行业&#xff0c;所以很多企业在客服的管理和分配上下尽了功夫&#xff0…

Unity的UI管理器

1、代码 public class UIManager {private static UIManager instance new UIManager();public static UIManager Instance > instance;//存储显示着的面板脚本&#xff08;不是面板Gameobject&#xff09;&#xff0c;每显示一个面板就存入字典//隐藏的时候获取字典中对…

【自动化测试】之PO模式介绍及案例

目录 概念 PO三层模式&#xff1a; 1. 构建基础的 BasePage 对象层 2. 构建首页的 Page 层&#xff08;操作层&#xff09; 3.构建业务层 常用断言方法&#xff1a; 4. 构建用例集&#xff0c;执行文件&#xff0c;输出自动化测试报告 测试报告模板 概念 PO&#xff08…

【C++】详解红黑树并模拟实现

前言&#xff1a; 上篇文章我们一起学习了AVL树比模拟实现&#xff0c;我们发现AVL树成功地把时间复杂度降低到了O(logN)。但是同时我们不难发现一个问题&#xff0c;在构建AVL树中我们也付出了不小的代价&#xff0c;频繁的旋转操作导致效率变低。为了解决这个问题&#xff0c…

使用Fastchat部署vicuna大模型

FastChat是一个用于训练、提供服务和评估基于大型语言模型的聊天机器人的开放平台。其核心特点包括&#xff1a; 最先进模型&#xff08;例如 Vicuna&#xff09;的权重、训练代码和评估代码。一个分布式的多模型提供服务系统&#xff0c;配备 Web 用户界面和与 OpenAI 兼容的…