ajax的请求解密

  $.ajax({url: i,dataType: "json",success: function(e) {r.decompressAndDeobfuscateData(e, w).then((e=>{if (!(e = JSON.parse(e))[0].series[0].serie.data[0])return t(!0);e = r.transformData(e),I && console.log("result:", e);解释每一行代码

返回的数据时密文,逐个跟栈,最后找到这行代码,在前面打断点,可以发现解密部分就在这里。

这是很常见的写法,每一行代码的含义分别为。

这段代码是一个 AJAX 请求,用于获取 JSON 数据。让我来逐行解释:

  1. $.ajax({: 这是 jQuery 中用于发起 AJAX 请求的方法。

  2. url: i,: 这里的 i 应该是一个变量,表示请求的 URL。该行指定了请求的 URL。

  3. dataType: "json",: 这表示预期从服务器返回的数据类型是 JSON 格式。

  4. success: function(e) {: 这是一个回调函数,当请求成功完成时执行。参数 e 是从服务器返回的数据。

  5. r.decompressAndDeobfuscateData(e, w).then((e=>{: 这里调用了 decompressAndDeobfuscateData 函数,传递了两个参数 ew。这个函数是一个异步函数,因此在成功解密数据后,使用 then() 方法执行一个回调函数。

  6. if (!(e = JSON.parse(e))[0].series[0].serie.data[0]): 这里首先将返回的 JSON 数据解析为对象 e。然后,检查对象中特定路径上的数据是否存在。如果数据不存在,可能会执行 t(!0),但是在提供的代码片段中,缺少了这一部分。

  7. e = r.transformData(e),: 如果数据存在,将调用 r.transformData 对数据进行进一步处理。

  8. I && console.log("result:", e);: 这里条件地(I &&)使用 console.log 输出处理后的数据。I 可能是一个全局变量,如果为真,则会执行 console.log

请注意,给定的代码片段中缺少了一些上下文信息,特别是在条件 if (!(e = JSON.parse(e))[0].series[0].serie.data[0]) 中的 t(!0)。此外,变量 rwIt 的定义也不明确,可能是在其他地方定义的。

解密函数decompressAndDeobfuscateData的完整代码:

decompressAndDeobfuscateData: async function(e, t) {try {const a = await async function(e, t) {let a = atob(e), i = new Uint8Array(a.length);for (let e = 0; e < a.length; e++)i[e] = a.charCodeAt(e);const r = (new TextEncoder).encode(t);for (let e = 0; e < i.length; e++)i[e] ^= r[e % r.length];return n.inflate(i, {to: "string"})}(e, t);return a} catch (e) {return console.log(e),null}

为了在Nodejs中运行,可以借助GPT的帮助,让它帮你修改代码

修改后的能在Nodejs中运行的代码:

const { inflateRawSync } = require('zlib');async function decompressAndDeobfuscateData(e, t) {try {// 解码 base64 编码的字符串let decodedData = Buffer.from(e, 'base64');// 创建一个 Uint8Array 以存储解码后的数据let uint8Array = new Uint8Array(decodedData);// 创建一个用于解密的 Uint8Arrayconst keyData = Buffer.from(t);// 对解码后的数据进行异或解密for (let i = 0; i < uint8Array.length; i++) {uint8Array[i] ^= keyData[i % keyData.length];}// 使用 zlib 模块的 inflateRawSync 方法解压缩数据const inflatedData = inflateRawSync(uint8Array);// 将解压缩后的数据转换为字符串并返回return inflatedData.toString('utf8');} catch (error) {// 如果出现错误,打印错误信息并返回 nullconsole.error(error);return null;}
}// 使用示例:
const e = 'a/lpZGluZ2VjbOv3Iga4Sz2m1+vTByHdjKNCosAEh7lP6lh/SXrPvhH/rzw4aXR7kIdYx0ToFK0QpTBBloiTjRCvAM3q9KYITp7Hh5meP1ttYJQOFXHVPN6wg4+XFeqr2A5sOtle9uayXNqWO7UIl44P0PhVEKIwynb4PNYsIn3tgvTInN6h2Xb1CPQjsAwngLCTkvMRFTuG11GGCJSVCnEVkxgOqo9bWSORDJ6expBGug6+EcVcggZx+BOQx9GXG/GdSmCQniwNgMGy9MiVUpDbrfbLjvXWKcuM3CWxkIIokPu2uhh6Jqgkm6BrF52BLPGOnM4dCheTcPnIlayZHwrpSBIptiz+2k9jZicW12fhEG9PEqqQfCanNlgvc8ghXirRiHmNTAMoAa//KYJj4DhQbSqjUXEBzuS4YJ4vj2hLJhJyQhZ/VNIM2QWPfMQEsOPmeItr35MUpQnhEn9zyac3dBj8+X25iPh4H6g2ZYTBjoiTqLuDPt3hPN0jUUDCjha/4496Jb3d+ijuSwX1HAhp80V2w88nLUyvTVXpZLW/uUY7GiBSveCt5fvJO7Pi40VEMBK9zS/I+ohseENbei+3XbcfEzTPB1/k2nyEbgonT30SgcN1d1AtYcy2qNyURDVVH24yL9CI+WfykUVXp9fGXVF3FhGuDxYWKtfLdU+inkISLjxdZXj6O3Wi34R8L+PaD8gCITyRGMjTKIkZ6Xz9DpJJwFCxn3tupcNqxhpeK9uJlHUCoP0wTk9vQRNtTedtTKvT/SHLpPAu5MGYT5n2rhRPKlrALa5y8G3O2NT3eTUkSTTyJmPOMICASpWznmw23lFP2RUlJNiHt1HkiQAK2xltCgg+7/a7hyQEeEqYUVR47qh2ourLJbtJ0JFAvPQw1HXqCXh5LLFnGciNsxNCvh4My1O2yZ9SZse/R+A47OTbi4fyz1FNwd1qEGYDIUwrxVVXM7ABYiuCvM82RvhdfozHMwD23D0t6hyHOUwtjl5TbFQ91ZpfdSSUIhtSMwpGbDWQSsW6UqxIrBf9ceXXFzOHFtkrCOwXPkMb89NjbsTAKh8Z5I00vzZRM2h8tsHdI0uQ/cPjv1vviddcvl+TTDYIw9yAqIIW//i2y4kvUv84WSUu12UUTk8Quv9KWSHl1d0p9CDp1DaIM2v3E+Ky+btE3hUnhHOge/CvlyN4Vb87cVljHjxQOUwBLjvU0yO50E7IwswPyBdiWSSJA4IHuuhzz1Y1GIXliYI/UNiQfjljcPynQn9yP7VsGVHL5pxYTLnbnJhRv/bvzdvVKGCCD4g9VZpqzcOk/D8v8xVJ4Fh7XBHmqZkqy2mnvupmoxqDSWMF1ukX1vo1DDQ84YkO8lxzkUlnVCkByUirB+AoCtPBEIddPVu9ISh93uYEq5XH+7QyL7AXvhwFjfunh5isuf8cggs5gyta/g5CErRLKx/vuB890MR3BCHHA5/5DXIjufMvnb/AH4sFS8szema1KYO8xiKytIR37wTsPU8IuECDe19dFC8cqNZOzaGx+AswQ+yGT7bGsNX2oZBS2OgZX9QTw3BXpRVFdnSJtZeQiSm7mfr/1YcH+eiW7bS5gm8fsq8K7xVl7gQuNOPK+P9SBuDbjguBwk0tv5jWa2rslYOa3ZYYqcv0J6IxsgzQseS1snzefr/JHC6agzGfGBe3s9vjlVfTgY+FTvmokMKI2sLTZi/EPacOY2kt';
const t = 'tradingeconomics-charts-core-api-key';decompressAndDeobfuscateData(e, t).then(result => {console.log(result);}).catch(error => {console.error(error);});

 

 

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

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

相关文章

uniapp 百度地图 拖动获取经纬度级搜索连用

import loadBMap from /utils/loadBMap.js// 百度聚合具体代码 // 拖动 initMapc() {let that thisloadBMap(百度key).then(() > {map new BMap.Map(mapContainer)const centerPoint new BMap.Point(this.longitude, this.latitude)map.centerAndZoom(centerPoint, this.…

Agilent MSO9404A、Keysight MSO9404A示波器,4 GHz,4 通道,20 GSa/s

Agilent MSO9404A、Keysight MSO9404A、HP MSO9404A 示波器&#xff0c;4 GHz&#xff0c;4 通道&#xff0c;20 GSa/s Keysight MSO9404A 示波器配备 15 英寸 XGA 显示屏&#xff0c;封装深度仅为 9 英寸&#xff08;23 厘米&#xff09;&#xff0c;重量仅为 26 磅&#xff…

AI地名故事:笔岗村

笔岗村&#xff0c;实际上是由笔村和宏岗村两个古老的村落合并而成的。南宋度宗元年&#xff0c;也就是公元1265年&#xff0c;笔村开始建立。随着时间的推移&#xff0c;到了宋代后期&#xff0c;宏岗村也相继建立。这两个村落各自承载着丰富的历史和文化&#xff0c;最终在历…

铁山靠之数学建模 - Matlab入门

Matlab基础 1. Matlab界面与基本操作1.1 matlab帮助系统1.2 matlab命令1.3 matlab功能符号1.4 matlab的数据类型1.5 函数计算1.6 matlab向量1.7 matlab多项式1.8 M文件1.9 函数文件1.10 matlab的程序结构1.11 echo、warning和error函数1.12 交互输入1.13 程序调试1.14 设置断点…

各个行业里做得比较好的SAAS平台(强烈建议收藏)

各个行业里做得比较好的SAAS平台&#xff0c;供大家参考&#xff01; 具体如下&#xff1a; 1、企业IM&#xff1a;钉钉、企业微信、班聊 2、IT运维平台&#xff1a;宝企通IT服务、卓豪 3、OA协同&#xff1a;织信、今目标、明道 4、人力资源&#xff1a;金柚网、51社保、…

‌‍‬⁣⁡​⁤⁢​⁢⁡⁣‬‍‌​​‬ ​‍⁤‬ ‬⁡⁡⁡‍‌‬⁡⁡⁢‬⁤⁢⁢⁤​‍‌​​‬ ​⁣‌绘唐3一键追爆款反推软件哪家好

‌‍‬⁣⁡​⁤⁢​⁢⁡⁣‬‍‌​​‬ ​‍⁤‬ ‬⁡⁡⁡‍‌‬⁡⁡⁢‬⁤⁢⁢⁤​‍‌​​‬ ​⁣‌绘唐3一键追爆款反推软件哪家好 支持单镜精绘&#xff0c;可以根据故事情节进行单镜头绘图调整&#xff0c;并支持对SD各类模型的自定义调整。 支持一键完成图文视频合成&am…

Windows11“重置此电脑”后,Edge浏览器在微软应用商店显示“已安装”,但是开始菜单搜索不到的解决办法

Windows11“重置此电脑”后&#xff0c;Edge浏览器在微软应用商店显示“已安装”&#xff0c;但是开始菜单搜索不到的解决办法 为什么重新使用Edge&#xff1f;问题描述不该更新可用更新问过AI&#xff08;通义千问&#xff09;&#xff0c;并且AI提供方法全都无效。现象 操作步…

国产分布式数据库高可用故障检测实现

在分布式数据库架构下&#xff0c;当数据库节点异常时&#xff0c;数据库管理组件能够自动感知到异常并触发节点隔离或者自动切换&#xff0c;是数据库高可用容灾的基本能力。在节点服务器异常、网络异常或进程异常等场景下&#xff0c;各数据库产品本身已经具备了可靠的检测能…

流动性生态协议MTMT正式登陆MEXC,将在5月13日开启交易

据悉&#xff0c;MTMT SFT流动性应用协议代币MTMT&#xff0c;在社区正式宣布即将登陆全球知名的加密货币交易平台MEXC&#xff0c;并将于5月13日正式上线并开放交易。 MTMT SFT流动性应用协议&#xff0c;全称Meta-Transaction Management Tool&#xff0c;是一个基于去中心化…

为什么说气膜是环保建筑呢—轻空间

气膜建筑&#xff0c;作为一种绿色环保建筑&#xff0c;其环保特性主要体现在以下几个方面&#xff1a; 1. 节约水资源&#xff1a; 气膜建筑在施工和运行过程中不需要大量水资源&#xff0c;与传统建筑相比&#xff0c;可以每年节约数万吨水资源。这种节约不仅有利于缓解水资源…

使用centos7搭建流媒体平台

实现流媒体直播 流媒体服务器&#xff0c;推流客户端&#xff0c;拉流客户端 硬件设施 centos7服务器&#xff0c;window拉流客户端 软件层面 dockersnginxrtmp模块 其他工具 git vlc 搭建rtmp服务器 这里是搭建服务器的环境 首先配置centos的环境 下载vmware vmware的…

【学习AI-相关路程-工具使用-自我学习-Ubuntucudavisco-开发工具尝试-基础样例 (2)】

【学习AI-相关路程-工具使用-自我学习-cuda&visco-开发工具尝试-基础样例 &#xff08;2&#xff09;】 1、前言2、环境说明3、总结说明4、工具安装0、验证cuda1、软件下载2、插件安装 5、软件设置与编程练习1、创建目录2、编译软件进入目录&创建两个文件3、编写配置文…

【iOS开发】—— 初识锁

【iOS开发】—— 初识锁 线程安全锁的种类自旋锁定义原理自旋锁缺点OSSpinLock&#xff08;自旋锁&#xff09; 互斥锁os_unfair_lockpthread_mutexNSLockNSRecusiveLockSemaphore信号量synchronized 总结两种之间的区别和联系&#xff1a; 线程安全 当一个线程访问数据的时候…

音视频开发4-补充 FFmpeg 开发环境搭建 -- ubuntu ffmpeg开发环境搭建

ubuntu ffmpeg开发环境搭建 1 创建目录 在 /home/hunandede/ffmpeg/ 目录下创建 ffmpeg_sources&#xff1a;用于下载源文件 ffmpeg_build&#xff1a; 存储编译后的库文件 bin&#xff1a;存储二进制文件&#xff08;ffmpeg&#xff0c;ffplay&#xff0c;ffprobe&#…

Request请求数据 (** kwargs参数)

目录 &#x1f31f;前言&#x1f349;request入门1. params2. data3. json4. headers5. cookies6. auth7. files8. timeout9. proxies10. allow_redirects11. stream12. verify13. cert &#x1f31f;总结 &#x1f31f;前言 在Python中&#xff0c;发送网络请求是一项常见的任…

Linux----磁盘操作

1.在Linux中要使用一个新的磁盘&#xff0c;通常可以按照哪几个步骤进行&#xff1f; 在Linux中要使用一个新的磁盘&#xff0c;通常可以按照以下步骤进行&#xff1a; 查看磁盘&#xff1a;使用 fdisk -l 等命令查看新磁盘是否被系统识别。分区&#xff1a;使用 fdisk 或 gdis…

淘宝商品评论电商API接口,让你购物不再困扰

现在的时代购物已经成为了人们生活中不可或缺的一部分。然而&#xff0c;面对琳琅满目的商品&#xff0c;我们常常犯愁&#xff0c;不知道如何选择。为了解决这个问题&#xff0c;淘宝推出了商品评论电商API接口&#xff0c;为广大消费者提供了极大的便利。联讯数据将详细介绍淘…

数据挖掘实战-基于决策树算法构建银行贷款审批预测模型

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

6818Linux内核--Bootloader应用分析

Bootloader应用分析 一个嵌入式 Linux 系统从软件的角度看通常可以分为四个层次&#xff1a; 引导加载程序。包括固化在固件( firmware )中的 boot 代码(可选)&#xff0c;和 Boot Loader 两大部分。 Linux 内核。特定于嵌入式板子的定制内核以及内核的启动参数。 文件系统…

一分钟把小程序音频保存到手机上

在这个快节奏的时代&#xff0c;每一分钟都显得格外珍贵。你是否曾在小程序中偶遇一段旋律&#xff0c;它如同清晨的露珠&#xff0c;晶莹剔透&#xff0c;却又转瞬即逝&#xff1f;是否曾在某个瞬间&#xff0c;渴望将那段旋律永久地镌刻在心间&#xff0c;让它成为你私人时光…