08:js逆向---压缩技术

2023-11-12

可以看到了变的参数只有一个_toke,接下来解决toke,直接搜索

 通过window.Rohr_Opt.reload函数加密,reqUrlAndParams是在上面生成的

,进去函数里面看

 

 

               iP.reload = function(jv) {//jv最初生成的链接和接口
                    var jw;
                    var jx = {};
                    if (typeof jv === _$_543c[91]) {
                        jx = iO.parse(jv.split(_$_543c[146])[1])
                    } else {
                        if (typeof jv === _$_543c[2]) {
                            jx = jv
                        }
                    }

                     //jv==>没有toke的params
                    ;iP.sign = iJ(jx);
                       //生成时间戳
                    iP.cts = new Date().getTime();
                    
                    jw = iI(iP);

                    if (Rohr_Opt.LogVal && typeof (window) !== _$_543c[0]) {
                        window[Rohr_Opt.LogVal] = encodeURIComponent(jw)
                    }

                    ;return jw

(1):先通过函数ij把jx(没有toke的params)加密 

(2):在通过il把ip加密生成toke

ip={
    "rId": 100900,
    "ver": "1.0.6",
    "ts": 1674968465018,
    "cts": 1674968468363,
    "brVD": [
        150,
        714
    ],
    "brR": [
        [
            1536,
            864
        ],
        [
            1536,
            816
        ],
        24,
        24
    ],
    "bI": [
        "https://jx.meituan.com/meishi/pn4/",
        "https://jx.meituan.com/meishi/pn3/"
    ],
    "mT": [],
    "kT": [],
    "aT": [],
    "tT": [],
    "aM": "",
    "sign": "eJwljUtOAzEQRO+SRS/9mek4GMkLlBVSxI4DWJlOYjL+yG5HcAAW3ICDcKXcAyNW9Up6qtr4Sv55cQqOnukfAn+8+Eju/v11//yBJaREdZ974ifmOhzIhUPsbZ8XclpBruEc0mtd3YW5tEcp395FpMDdJ3HMUQ5ulyBLQgnFn8nhiMpj1unJQFk9n3KNTkMN7XqgG62DW67soDf6+5xwi/oBt8ZC72F0ImsMeoW7E5p5tnpahDY7tEbNVgktlFCbX2w0Snw="
}

 

 

 ij函数实际就干了3件事:ck==>拿了没有toke的params的所以vaule(见)

jd====>

 将jd在il函数里面加密,并返回

deflate===>压缩,在il函数实际就干了一件事:把传进去的参数进行压缩,

这个加密实际上就是干了2次压缩

可在python里面实现

压缩

import zlib
import base64
params = {
    'cityName': '北京',
    'cateId': '0',
    'areaId': '0',
    'sort': '',
    'dinnerCountAttrId': '',
    'page': '2',
    'userId': '2454184569',
    'uuid': '2ee9664a047f4633912d.1674960390.1.0.0',
    'platform': '1',
    'partner': '126',
    'originUrl': 'https://bj.meituan.com/meishi/pn2/',
    'riskLevel': '1',
    'optimusCode': '10',
}
#compress压缩
#AttributeError: 'dict' object has no attribute 'encode'所以必须强转为str
zill=zlib.compress(base64.b64encode(str(params).encode()))
print(zill)


解压

import zlib
import base64
#decompress解压
_token='eJxVjluPojAYhv9LbyG2MLVQ7zyB1qCgyAibuUAOcrKgFMlks/99O4l7scmXvIfvuXh/g+c2BTMNIYqQCl7ZE8yANkETAlQgevkhBqYEUWpqWFNB8n+nY6qC6zNYgdkvbYpUQ8NfP8VRZll8ENUksnlbjXypOpb3w2wlAgohun4G4bWa3LNSDDGfJO0dSt8XJey4DuUMIPG7L3Gp9Vvjt4p/2ZG7JduXNy5dxsamSoTwqvX5uBFFEuWK++mWJ2u6fi6ZZVi7+WgM8+98v6HV+eReF+6a1DcaekrC/IAz+xA1sdJyJeXhkjL4vfH2WVop1SAIzLmuhB7qQmHUPCvtx4itZOf4meCNzcZLbbe4eKW5xcNilylXE5tjuRhapb/oh3wzNxYBOeFmZa4jFJ8/uXN41E7jXPxtmrds73uugOOtf92asp+S+Qd0uyCL4b3WzGhp6BY62oNDa/Zaic6pp8EjEqwXq6DsW8ZYV4Sut1w46OGBP38B+QWQjw=='
zlll=zlib.decompress(base64.b64decode(_token.encode())).decode()
print(zlll)
import zlib
import base64
import time
params = {
    'cityName': '嘉兴',
    'cateId': '0',
    'areaId': '0',
    'sort': '',
    'dinnerCountAttrId': '',
    'page': '3',
    'userId': '2454184569',
    'uuid': '2ee9664a047f4633912d.1674960390.1.0.0',
    'platform': '1',
    'partner': '126',
    'originUrl': 'https://jx.meituan.com/meishi/pn3/',
    'riskLevel': '1',
    'optimusCode': '10',
}
def compress_yashu(data):
    encode1=str(data).encode()
    compress=zlib.compress(encode1)
    b_encode=base64.b64encode(compress)
    e_sing=str(b_encode,encoding="utf-8")
    return e_sing
sign=compress_yashu(params)
ip={
    "rId": 100900,
    "ver": "1.0.6",
    "ts": int(time.time()*1000),
    "cts": int(time.time()*1000)+1000,
    "brVD": [
        150,
        714
    ],
    "brR": [
        [
            1536,
            864
        ],
        [
            1536,
            816
        ],
        24,
        24
    ],
    "bI": [
        "https://jx.meituan.com/meishi/pn3/",
        "https://jx.meituan.com/meishi/pn2/"
    ],
    "mT": [],
    "kT": [],
    "aT": [],
    "tT": [],
    "aM": "",
    "sign":sign
}
toke=compress_yashu(ip)
print(toke)


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

08:js逆向---压缩技术 的相关文章

  • 检测骰子的上侧

    是否可以检测骰子的上面 虽然从顶部看这将是一项简单的任务 但从许多角度来看 可以看到多个侧面 Here is an example of a dice feel free to take your own pictures 您通常想知道自己
  • Visual Studio Code:如何使用参数调试 Python 脚本

    我正在使用 Visual Studio Code 来调试 Python 脚本 下列的本指南 https code visualstudio com docs python debugging 我在中设置了参数launch json file
  • 如何在python中确定过去的时区特定日期是否是夏令时?

    有没有办法检查特定时区在我指定的日期是否处于夏令时 test dt datetime year 2015 month 2 day 1 pst pytz timezone America Los Angeles test dt pst loc
  • Pandas 在列级别连接数据帧时添加键

    根据 Pandas 0 19 2 文档 我可以提供keys参数来创建结果多索引 DataFrame 一个例子 来自 pandas 文档 是 result pd concat frames keys x y z 我将如何连接数据框以便我可以在
  • python blpapi安装错误

    我试图根据 README 中的说明为 python 安装 blpapi 3 5 5 但是在运行时 python setup py install 我收到以下错误 running install running build running b
  • 无法使用 Python 循环分页 API 响应

    所以 我对这个感到摸不着头脑 使用 HubSpot 的 API 我需要获取我客户的 门户 帐户 中所有公司的列表 遗憾的是 标准 API 调用一次只能返回 100 家公司 当它返回响应时 它包含两个参数 使分页响应成为可能 其中之一是 ha
  • Django 说“id 可能不为 NULL”,但为什么会这样呢?

    我今天要疯了 我只是尝试插入一条新记录 但它返回了 post blogpost id 可能不为 NULL 错误 这是我的模型 class BlogPost models Model title models CharField max le
  • Scapy:如何将新层(802.1q)插入现有数据包?

    我有一个数据包转储 想要将 VLAN 标记 802 1q 标头 注入到数据包中 怎么做 为了找到答案 我查看了Scapy 插入新层和记录问题 https stackoverflow com q 17259592 1381638 这确实很有帮
  • 将带有 md5 消息摘要和 DESede/CBC/PKCS5Padding 的 3DES 加密的 java 代码转换为 python

    我有这个工作java代码 它使用3DES加密对密码进行加密 import java security MessageDigest import java util Arrays import java util Base64 import
  • TypeError:“NoneType”对象不可下标[重复]

    这个问题在这里已经有答案了 错误 names curfetchone 0 TypeError NoneType object is not subscriptable 我尝试检查缩进 但仍然有错误 我读到 如果数据库中没有文件名记录 变量名
  • 使用 os.forkpty() 创建一个伪终端以 ssh 到远程服务器并与其通信

    我正在尝试编写一个 python 脚本 它可以 ssh 到远程服务器 并可以从 python 客户端执行 ls cd 等简单命令 但是 在成功 ssh 到服务器后 我无法读取伪终端的输出 任何人都可以在这里帮助我 以便我可以在服务器上执行一
  • 如何在python中访问矩阵每个元素的相邻单元格?

    这里 如果两个单元共享边界 则它们被认为是相邻的 例如 A 5 6 4 2 1 3 7 9 8 这里 索引 0 0 的相邻元素位于索引 0 1 和 1 0 处 索引 1 1 的相邻元素位于索引 0 1 1 0 2 1 处 和 1 2 假设你
  • 在 Python 中将嵌套字典位置作为参数传递

    如果我有一个嵌套字典 我可以通过索引来获取键 如下所示 gt gt gt d a b c gt gt gt d a b c 我可以将该索引作为函数参数传递吗 def get nested value d path a b return d
  • 如何在自定义 django 命令中抽象出命令代码

    我正在我的应用程序下编写自定义 django 命令management commands目录 目前我在该目录中有 6 个不同的文件 每个文件都有不同的命令来解决独特的需求 然而 有一些实用程序是它们所共有的 抽象出这些公共代码的最佳方法是什
  • 使用 conda 安装额外功能

    With pip我们可以使用方括号安装子包 例如与阿帕奇气流 https pythonhosted org airflow installation html pip install airflow all 有类似的东西吗conda或者我必
  • 获取 python 模块的 2 个独立实例

    我正在与以非 OO 方式编写的 python 2 x API 进行交互 它使用模块全局范围来处理一些内部状态驱动的东西 在它不再是单例的情况下需要它 并且修改原始代码 不是我们的 不是一个选择 如果不使用单独解释器的子进程运行 有什么方法可
  • Django INSTALLED_APPS 的命名约定是如何工作的?

    该网站上的教程创建了一个名为 polls 的应用程序 它使用 django 1 9 所以在 INSTALLED APPS 中它是 polls apps PollsConfig 我正在观看一个教程 他将应用程序命名为新闻通讯 并且在 INST
  • Matplotlib:检查空图

    我有一个循环加载并绘制一些数据 如下所示 import os import numpy as np import matplotlib pyplot as plt for filename in filenames plt figure i
  • gnuplot:第 1 行:无效命令

    stackoverflow 上可爱的人们大家好 我正在尝试使用 gnuplot 绘制数据 我首先阅读表格并提取我想要的数据 我将此数据写入 dat 文件 截至目前 我只是尝试通过命令行绘制它 但会添加必要的代码以在 python 脚本工作后
  • 具有重复值的 Sqlite 列

    就说专栏吧aSQLite 数据库的非常重复 始终有相同的 4 个值 其他值可能稍后出现 但不同值的数量将少于 1000 个 VALUES hello world it s a shame to store this str many tim

随机推荐

  • Shell计算时间运行时间

    方法1 starttime date Y m d H M S 执行程序 endtime date Y m d H M S start seconds date date starttime s end seconds date date e
  • 笔试

    文章目录 前言 21 FPGA组成三要素 1 CLB 2 可编程内部互联资源 3 可编程输入输出块 22 查找表 LUT 23 锁存器 latch 触发器 24 亚稳态 25 逻辑电平 26 逻辑最小项 总结 往期精彩 前言 本文首发于微信
  • LeetCode-135.分发糖果、贪心算法

    老师想给孩子们分发糖果 有 N 个孩子站成了一条直线 老师会根据每个孩子的表现 预先给他们评分 你需要按照以下要求 帮助老师给这些孩子分发糖果 每个孩子至少分配到 1 个糖果 相邻的孩子中 评分高的孩子必须获得更多的糖果 那么这样下来 老师
  • 【共享内存】

    1 共享内存示意图 共享内存区是最快的 IPC 形式 一旦这样的内存映射到共享它的进程的地址空间 这些进程间数据传递不再涉及到 内核 换句话说是进程不再通过执行进入内核的系统调用来传递彼此的数据 2 共享内存数据结构 struct shmi
  • uniapp 框架引用turf.js步骤

    Turf js中文网 一 安装指定模块 示例 实现运动轨迹缓冲区及迹缓冲面积计算 接口获取的轨迹点连成线 Turf js 轨迹点只有一个则无法连成线 a npm 安装 npm install turf helpers b 页面引入 impo
  • 深入LDO学习

    目录 工程问题 1 LDO 输出电源电平低于设置值 2 电源芯片欠压保护电路导 致上电时序不满足设计的要求 原理 layout图 优点 缺点 原理 选型 热计算 计算 LDO 工作时的结温 工程问题 1 LDO 输出电源电平低于设置值 某款
  • jqueryweui,两个输入框解决方法

    document ready function
  • CURL使用SSL证书访问HTTPS

    在支付的交互过程中 安全绝对是需要考虑的重要因素之一 体现在对服务器交互数据的签名等环节 但有的时候为了能达到更高的安全级别 还需要用ssl证书 即web服务器有证书 浏览器客户端 请求端也需要安装证书来达到双向验证 比如请求下面的财付通支
  • Linux:169.254.0.0/24路由的来龙去脉

    在Linux中 发现每次系统启动时 都会将 169 254 0 0 16 路由启动并将其添加到路由表中 但是并不知道这条路由具有什么功能和它到底来自于哪里 要想搞清楚路由 169 254 0 0 16 究竟来自哪里并且它的作用是什么 首先需
  • Contest3032 - 计科2101~2104算法设计与分析上机作业03

    目录 问题 A 质数 问题 B 分治法求解全排列问题 问题 C 数的计数 问题 D 最大公共子序列问题 问题 E 分解式的个数 问题 F 矩阵最优连乘问题 问题 A 质数 题目描述 判断给定的一组正整数是否为质数 输入 第一行为测试数据的个
  • linux创建新用户

    只需要四步就能创建一个新的linux用户 1 打开终端 快捷键Ctrl Alt T 2 创建用户和密码 sudo useradd m aaa 创建用户名为aaa的用户 m 自动建立用户的登入目录 sudo是允许系统管理员让普通用户执行roo
  • 在地址栏里输入一个地址回车会发生哪些事情

    解析URL 首先会对 URL 进行解析 分析所需要使用的传输协议和请求的资源的路径 如果输入的 URL 中的协议或者主机名不合法 将会把地址栏中输入的内容传递给搜索引擎 如果没有问题 浏览器会检查 URL 中是否出现了非法字符 如果存在非法
  • libev学习系列之四:ev_loop事件循环

    libev学习系列之四 ev loop事件循环 版本说明 版本 作者 日期 备注 0 1 ZY 2019 5 31 初稿 目录 文章目录 libev学习系列之四 ev loop事件循环 版本说明 目录 一 前言 二 描述 三 例子 一 前言
  • tensorflow(十七)关于tensorboard网络运行时参数的查看

    关于tensorboard网络运行时查看参数主要包括网络的权值和偏差
  • [学习笔记-opencv篇]ubuntu系统下运行opencv自带双目标定+立体匹配程序

    ubuntu系统下运行opencv自带双目标定 立体匹配 双目标定 立体匹配 找了很多opencv自带双目标定的资料 发现大多数都是使用vs opencv或matlab运行的 也可能是找的还不够 参考了一些资料 写了个cmake 然后一通操
  • 机械革命深海幽灵z2学习电脑系统史

    目录 前言 第一次蓝屏 第一次接触重装系统 装Linux系统 Linux16 04版本与显卡1060不兼容问题 windows与linux双系统问题 Linux学习 售后 自己重装系统 换主板 没有我修不好的电脑 键盘故障 再次蓝屏 重装系
  • [精华]uniapp微信授权登录,

    转载一 微信授权登录 转载二 uniapp页面速成提效工具 uniapp uview ui 可视化 完全自由拖拽 一键生成flex代码网站 http aicode shagua wiki uni index html 十大特性 1 可视化
  • Unity屏幕坐标转UI局部坐标

    RectTransformUtility ScreenPointToLocalPointInRectangle https docs unity cn cn 2019 2 ScriptReference RectTransformUtili
  • 在C语言多维数组a[3][2]中的a[2]代表的是什么意思

    一开始我以为a 2 是等价与a 2 0 也就是第三行的第一个元素 后来发现错误 a 2 是等价与 a 2 其值是第二行的首地址 a 2 0 等价于 a 2 个人认为可以把二位数组的数组名理解成一个二维指针 解运算一次 放的是地址 行地址 解
  • 08:js逆向---压缩技术

    可以看到了变的参数只有一个 toke 接下来解决toke 直接搜索 通过window Rohr Opt reload函数加密 reqUrlAndParams是在上面生成的 进去函数里面看 iP reload function jv jv最初