JS逆向爬虫---请求参数加密②【某麦数据analysis参数加密】

主页链接:
https://www.qimai.cn/rank

在这里插入图片描述

analysis逆向

完整参数生成代码如下:

const {JSDOM} = require('jsdom')
const dom = new JSDOM('<!DOCTYPE html><p>hello</p>')
window = dom.windowfunction customDecrypt(n, t) {t = t || generateKey();  // 如果没有提供 t,则使用默认密钥// 将字符串 n 分割成字符数组n = n.split("");for (var i = 0; i < n.length; i++) {// 对字符 n[i] 进行异或运算n[i] = String.fromCharCode(n[i].charCodeAt(0) ^ t.charCodeAt((i + 10) % t.length));}// 将字符数组拼接成字符串return n.join("");
};// 拼接a字符串
function a_for_bs64(t){var z = window;var Z = "Object";var i7 = "keys";var Zt = "params";var M = "forEach";var n;var N2 = "hasOwnProperty";var a = [];var b = "push";var Ot ="sort" ;var I1 = "join";var _ = "";z[Z][i7](t[Zt])[M](function (n) {t[Zt][N2](n) && a[b](t[Zt][n])});a = a[Ot]()[I1](_);console.log(a);return a
}function  analysis_gen(t){var d = "xyz517cda96efgh";var currentDate = new Date();// 获取毫秒级时间戳var timestampInMilliseconds = currentDate.getTime();a_start = a_for_bs64(t);console.log('a_start==>',a_start)a_mid_1 = btoa(a_start);// MzIwMjMtMTEtMDYzNmFsbGNuaXBob25lconsole.log('a_mid_1==>',a_mid_1);time_period = timestampInMilliseconds - 1661224081041;// time_period = 38050153244;a_end = a_mid_1+"@#"+t.url+"@#"+time_period+"@#"+"3";console.log("a_end==>",a_end);// 我生成的  MjAyMy0xMS0wNjMzNmFsbGNuaXBob25l@#/rank/indexPlus/brand_id/1@#38050153244@#3// 页面生成 "MjAyMy0xMS0wNjMzNmFsbGNuaXBob25l@#/rank/indexPlus/brand_id/1@#38050153244@#3"data = customDecrypt(a_end, d);e  = btoa(data);console.log(e);return e
};// 接受一个t的对象
const t = {"url": "/rank/indexPlus/brand_id/0","params": {"brand": "all","country": "cn","device": "iphone","genre": "36","date": "2023-11-06","page": 3},"baseURL": "https://api.qimai.cn",
};
// 将 params 对象拼接为查询字符串
const params = new URLSearchParams(t.params).toString();// 构建完整的 URL
const fullURL = `${t.baseURL}${t.url}?analysis=${analysis_gen(t)}&${params}`;console.log(fullURL);// 完整生成流程
// 1. 获取加密请求数据对象
// 2. 生成需要加密的字符串a_start
// 3. base64编码生成密文 a_mid_1
// 4. 获取毫秒时间戳与定义差值
// 5. 拼接密文,时间戳差值,请求uri,参数等,生成代编码字符串a_end
// 6. 结合密钥d生成待编码字符串 data
// 7. base64编码字符串生成最终的analysis参数

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

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

相关文章

《006.Springboot+vue之旅游信息推荐系统》【有文档】

《006.Springbootvue之旅游信息推荐系统》【有文档】 项目简介 [1]本系统涉及到的技术主要如下&#xff1a; 推荐环境配置&#xff1a;DEA jdk1.8 Maven MySQL 前后端分离; 后台&#xff1a;SpringBootMybatis; 前台&#xff1a;vueElementUI; [2]功能模块展示&#xff1a; …

汽车网络安全渗透测试概述

目录 1.汽车网络安全法规概述 1.1 国外标准 1.2 国内标准 2.汽车网络安全威胁分析 2.1 汽车网络安全资产定义 2.2 汽车网络安全影响场景及评级示例 3.汽车网络安全渗透测试描述 3.1 参考法规 3.2 渗透测试内容 4.小结 1.汽车网络安全法规概述 近年来&#xff0c;汽车…

C语言每日一题(24)回文素数题解

BC158 [NOIP1999]回文数 题目描述 若一个数&#xff08;首位不为零&#xff09;从左向右读与从右向左读都一样&#xff0c;我们就将其称之为回文数。 例如&#xff1a;给定一个10进制数56&#xff0c;将56加65&#xff08;即把56从右向左读&#xff09;&#xff0c;得到121是…

科技创意赋能乡村文旅振兴

近日&#xff0c;由北京大学创意产业研究中心联合中国国际科技促进会新基建专委会共同主办的“科技创意赋能乡村振兴研讨会”在京举行&#xff0c;与会专家学者围绕“和美乡村共同富裕智慧文旅”主题进行深入探讨。北京大学创意产业研究中心副主任吕艺、国家文化和旅游公共服务…

【MongoDB】集群搭建实战 | 副本集 Replica-Set | 分片集群 Shard-Cluster | 安全认证

文章目录 MongoDB 集群架构副本集主节点选举原则搭建副本集主节点从节点仲裁节点 连接节点添加副本从节点添加仲裁者节点删除节点 副本集读写操作副本集中的方法 分片集群分片集群架构目标第一个副本集第二个副本集配置集初始化副本集路由集添加分片开启分片集合分片删除分片 安…

2023数学建模国赛C题赛后总结

今天国赛的成绩终于出来了&#xff0c;盼星星盼月亮的。之前面试的时候已经把我给推到国奖评委那里去了&#xff0c;可是好可惜&#xff0c;最终以很微小的劣势错失国二。只拿到了广西区的省一。我心里还是很遗憾的&#xff0c;我真的为此准备了很久&#xff0c;虽然当中也有着…

001、Nvidia Jetson Nano Developer KIT(b01)

之——镜像烧录 杂谈 Nvidia Jetson Nano Developer KIT&#xff08;b01&#xff0c;4G&#xff09;&#xff0c;系统配置全纪录&#xff0c;镜像烧录、系统安装、远程桌面安装、cuda与torch安装、pycharm、pycuda、tensorrt等等。 正文 1.开发板系统安装 1.1 开发板简介 Jet…

8、Python模块和包:导入模块、创建自己的模块和包

文章目录 Python模块和包:导入模块、创建自己的模块和包导入模块创建自己的模块创建包使用相对导入结论Python模块和包:导入模块、创建自己的模块和包 Python是一种功能强大的编程语言,它的模块和包系统是其强大功能的基石之一。在Python中,模块是包含Python定义和声明的文…

OpenSign 开源 PDF 电子签名解决方案

OpenSign 是一个开源文档电子签名解决方案&#xff0c;旨在为 DocuSign、PandaDoc、SignNow、Adobe Sign、Smartwaiver、SignRequest、HelloSign 和 Zoho Sign 等商业平台提供安全、可靠且免费的替代方案。 特性&#xff1a; 安全签名&#xff1a;利用最先进的加密算法来确保…

python df.apply()函数

DataFrame.apply(func, axis0, rawFalse, result_typeNone, args(), by_row‘compat’, kwargs) 沿df的轴应用函数 func:对每行或者每列应用的函数axis{0 or ‘index’, 1 or ‘columns’}, default 0 0是列&#xff0c;1是行 rawbool, default False result_type**{‘expand…

交货单过账/保存后增强点

增强点&#xff1a;交货单过账后的增强点->SE18->DELIVERY_PUBLISH 这个增强点是在VL02N修改/过账之后触发的 业务场景&#xff1a;需要在交货单过账之后自动开发票 sy-ucomm WABU_T "交货过账 "分子公司转采的单子需要同步开发票IF ( ( sy-tcode VL01N OR…

09 基变换

基变换 基本概念坐标转换詹妮弗坐标系→平面直角坐标系平面直角坐标系→詹妮弗坐标系转换对比基本原则 这是关于3Blue1Brown "线性代数的本质"的学习笔记。 基本概念 对于右手平面直角坐标系&#xff0c;一般用 i ⃗ \vec{i} i 和 j ⃗ \vec{j} j ​表示其基向量。…

PyCharm 无法登陆 Codeium 的解决方法

PyCharm 登陆 Codeium PyCharm 无法登陆 Codeium 的问题描述PyCharm 使用 token 登陆 Codeium PyCharm 无法登陆 Codeium 的问题描述 使用 PyCharm 登录 Codeium 时&#xff0c;单击 Login 无反应&#xff0c;单击侧边栏的 Codeium 图标也一直显示连接失败。 PyCharm 使用 to…

AI:59-基于深度学习的行人重识别

🚀 本文选自专栏:AI领域专栏 从基础到实践,深入了解算法、案例和最新趋势。无论你是初学者还是经验丰富的数据科学家,通过案例和项目实践,掌握核心概念和实用技能。每篇案例都包含代码实例,详细讲解供大家学习。 📌📌📌在这个漫长的过程,中途遇到了不少问题,但是…

微服务架构之路3,如何对微服务进行有效的监控?

目录 一、监控对象二、监控指标1、请求量2、响应时间3、错误率4、服务可用性5、资源使用率6、数据库访问量 三、监控维度1、全局维度2、分机房维度3、单机维度4、时间维度 四、监控系统原理1、数据采集2、数据传输3、数据处理4、数据展示 五、总结六、从零开始学架构&#xff1…

用自己的数据集训练YOLO-NAS目标检测器

YOLO-NAS 是 Deci 开发的一种新的最先进的目标检测模型。 在本指南中&#xff0c;我们将讨论什么是 YOLO-NAS 以及如何在自定义数据集上训练 YOLO-NAS 模型。 在线工具推荐&#xff1a; Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 -…

Ultra:知识图谱推理的基础模型

一、说明 训练单个通用模型来解决任意数据集始终是 ML 研究人员的梦想&#xff0c;尤其是在基础模型时代。虽然这些梦想已经在图像或自然语言等感知领域实现了&#xff0c;但它们是否可以在推理领域&#xff08;如图形&#xff09;中再现仍然是一个开放的挑战。 图片由作者根据…

力扣206. 反转链表

题目: 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1] 示例 2&#xff1a; 输入&#xff1a;head [1,2] 输出&#xff1a;[2,1] 示例 3&#xff1a;…

微信小程序获取剪切板的内容到输入框中

xml代码 <navigation-bar title"Weixin" back"{{false}}" color"black" background"#FFF"></navigation-bar> <view><input placeholder"请输入内容" name"content" type"text" …

.NET Framework中自带的泛型委托Action

Action<>是.NET Framework中自带的泛型委托&#xff0c;可以接收一个或多个输入参数&#xff0c;但不返回任何参数&#xff0c;可传递至多16种不同类型的参数类型。在Linq的一些方法上使用的比较多。 1、Action泛型委托 .NET Framework为我们提供了多达16个参数的Action…