宁波网站建设设计公司,汕头seo快速排名,二建报考报名入口,ui高级培训机构文章目录 1. 写在前面2. 请求分析3. 加密分析4. 算法实现 1. 写在前面 之前出过一个关于榜单analysis的分析#xff0c;有兴趣的可以查看这篇文章#xff1a;七麦榜单analysis加密分析
最近运营团队那边有同事找到我们#xff0c;说工作中偶尔需要统计分析一下某APP在一些主… 文章目录 1. 写在前面2. 请求分析3. 加密分析4. 算法实现 1. 写在前面 之前出过一个关于榜单analysis的分析有兴趣的可以查看这篇文章七麦榜单analysis加密分析
最近运营团队那边有同事找到我们说工作中偶尔需要统计分析一下某APP在一些主流应用市场的下载量趋势数据
这个目前也只在一些成熟的移动应用数据聚合平台有有的需要付费有的则数据有限。所以就有了这篇文章的出现 分析目标 aHR0cHM6Ly93d3cucWltYWkuY24vYW5kYXBwL2Rvd25Ub3RhbC9hcHBpZC8xOTM1NDU1 作者声明 本文章中所有内容仅供学习交流使用严禁用于商业用途和非法用途否则由此产生的一切后果均与作者无关本文章未经许可禁止转载若有侵权请联系作者立即删除 2. 请求分析 首先我们选择最近一周提交请求可以看到请求的参数所下图所示。加密参数analysis猜测是base64加密appidAPP应用的IDtype固定值天sdate、edate起始日期与截日期 3. 加密分析 这里我们搜索加密参数analysis或者一些加密特征关键词是很难搜索到有用的信息。还是需要使用XHR断点的方式
下完断点我们直接往上找堆栈信息因为断点截停处加密已经完成。之前文章说过加密的方式都一样换汤不换药下载量趋势这块着重在参数加密这块跟评论一样有点小细节 榜单是没有请求参数加密的搜索有参数加密不过参数不需要处理 如下所示我们直接定位到加密函数这里断点调试分析可以非常清晰的看到a就是参数拼接之后的值参数拼接是有讲究的a是经过排序的 然后接下断点继续往下走会发现参数排序拼接后会经过base64编码如下所示 截止到这里我们尝试使用Python编码来实现一下对参数拼接后再Base64编码如下所示 这里要说一下的是这个d一串字符。这个可能是后续会不定期更新的如果你发现加密失效了不一定是加密算法人家换了可能就是这个字符串更新了而已 4. 算法实现
最后使用Python实现一下完整的代码如下所示
import base64
import random
import timeparams {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_resultdef get_download():cookies 必填项填自己的即可baseurl https://api.qimai.cnheaders {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/downloadparams {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] analysisres requests.get(f{baseurl}{url}, paramsparams, headersheaders).json()print(res)使用上述Python代码测试结果如下 好了到这里又到了跟大家说再见的时候了。创作不易帮忙点个赞再走吧。你的支持是我创作的动力希望能带给大家更多优质的文章