JS案例分析-某国际音x-tt-params参数分析

今天我们要分析的网站是:https://www.tiktok.com/@selenagomez?lang=en,参数名字叫x-tt-params

先来抓个包

这个接口是用户视频列表url,参数叫x-tt-params,该接口中还有其他参数像msTokenX-Bogus_signature经过多次的测试,发现这三个参数不带也能请求到数据,但是x-tt-params必须携带,否则会报错。

在这里插入图片描述

全局搜索下这个关键词x-tt-params,可以看到就一个搜索结果,点进去看看。

在这里插入图片描述
之后我们来到了第 33285行-33295行。

其中核心的代码如下:

 const i = (0,
 _.J4)(c);
 p.headers = Object.assign(Object.assign({}, null !== (a = p.headers) && void 0 !== a ? a : {}), {
     "x-tt-params": i
 }),

简单的看了下,x-tt-params参数是由i 来的,而i又是由 (0,_.J4)(c) 这个方法返回来的,所以我们只需要看看 (0,_.J4)(c)里面的逻辑如何计算的就可。

在这里插入图片描述
打个断点,看样子是进去了,证明此处就是加密代码。在控制台输入c参数,看打印是一个数组,很像请求url后面请求的参数。

单步点进去看看,然后来到这里

在这里插入图片描述

简单的分析下,首先是声明了一个数组t,然后循环遍历传进来的字典参数e,拿到key和value,组合成一个的新的字符串,再添加到数组t中。

最后在尾部追加一个"is_encryption=1"(算是个盐吧)。

继续断点跟进去,到这里。

 const i = ((e,t)=>{
     let i = e.toString();
     const o = i.length;
     return o < 16 ? i = new Array(16 - o + 1).join("0") + i : o > 16 && (i = i.slice(0, 16)),
     i
 }
 )("webapp1.0+20210628")

能看到这是根据入参参数e,最后返回一个固定的字符串,也就是webapp1.0+202106

在这里插入图片描述

接下来就是AES函数加密主体,可以看到还是CBC模式,填充padding依旧是Pkcs7

n = o.enc.Utf8.parse(i)
return o.AES.encrypt(e, n, {
     iv: n,
     mode: o.mode.CBC,
     padding: o.pad.Pkcs7
 }).toString()

其中ei和n我们已经知道了。e就是待加密数据,i 即是AES加密的key,也是秘钥。
在这里插入图片描述

然后把代码抠出来,在本地跑一下,可以很清晰的看到就是return 1, 2, 3的形式,在js中这样的写法就是先顺序执行1和2,最后返回3的意思。

在这里插入图片描述

完整的js代码如下:

var CryptoJS = require("crypto-js");
get_sign = e=>{
    const t = [];
    return Object.keys(e).forEach((i=>{
            const o = `${i}=${e[i]}`;
            t.push(o)
        }
    )),
        t.push("is_encryption=1"),
        ((e,t)=>{
                const i = ((e,t)=>{
                        let i = e.toString();
                        const o = i.length;
                        return o < 16 ? i = new Array(16 - o + 1).join("0") + i : o > 16 && (i = i.slice(0, 16)),
                            i
                    }
                )("webapp1.0+20210628")
                    , n = CryptoJS.enc.Utf8.parse(i);
                return CryptoJS.AES.encrypt(e, n, {
                    iv: n,
                    mode: CryptoJS.mode.CBC,
                    padding: CryptoJS.pad.Pkcs7
                }).toString()
            }
        )(t.join("&"))
}
// var param = {aid: 1988, app_name: 'tiktok_web', channel: 'tiktok_web', device_platform: 'web_pc', device_id: '7160487937061439018', …}
var params = {
        "aid": 1988,
        "app_name": "tiktok_web",
        "channel": "tiktok_web",
        "device_platform": "web_pc",
        "device_id": "7160487937061439018",
        "region": "US",
        "priority_region": "",
        "os": "mac",
        "referer": "https://www.tiktok.com/discover?lang=en",
        "root_referer": "https://www.tiktok.com/discover?lang=en",
        "cookie_enabled": true,
        "screen_width": 1920,
        "screen_height": 1080,
        "browser_language": "en",
        "browser_platform": "MacIntel",
        "browser_name": "Mozilla",
        "browser_version": "5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36",
        "browser_online": true,
        "app_language": "en",
        "webcast_language": "zh-Hant-TW",
        "tz_name": "Asia/Shanghai",
        "is_page_visible": true,
        "focus_state": true,
        "is_fullscreen": false,
        "history_len": 1,
        "battery_info": 0.96,
        "from_page": "user",
        "secUid": "MS4wLjABAAAATtFKZYaOb-9nF_w7QRi4y64d45mvuWuwf5ACEd3c6f-GTlfW9rJJlKfV2vWhg0aw",
        "count": 30,
        "cursor": "1653955582000",
        "language": "zh-Hant-TW"
    }

var xttparam = get_sign(params)
console.log("AES加密后结果:",xttparam)

参考文章:https://mp.weixin.qq.com/s/v9qBcdX6TMFUgfZbG_jcPw

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【51单片机】点亮一个LED灯(看开发板原理图十分重要)

&#x1f38a;专栏【51单片机】 &#x1f354;喜欢的诗句&#xff1a;更喜岷山千里雪 三军过后尽开颜。 &#x1f386;音乐分享【The Right Path】 &#x1f970;大一同学小吉&#xff0c;欢迎并且感谢大家指出我的问题&#x1f970; 目录 &#x1f354;基础内容 &#x1f3f3…

项目集的定义及管理

一、什么是项目集 项目集是相互关联且被协调管理的项目、子项目集和项目集活动&#xff0c;以便获得分别管理所无法获 得的效益。 以项目集的形式管理项目、子项目集及项目集活动能确保项目集组件的战略和工作计划根据各组 件的成果做出相应调整&#xff0c;或者按照发起组织的…

洞车系统常见问题解决指南

洞车常见问题解决指南 1.研发脚本处理问题1.1 WMS出库单无法审核1.2 OMS入库单无法提交&#xff0c;提示更新中心库存失败1.3 当出现OMS下发成功WMS/TMS/DMS还没有任务的情况时处理方案1.4 调度波次生成或者添加任务系统异常1.5 东鹏出库单部分出库回传之后要求重传1.6 更新订单…

不会前端,怎么快速打造属于自己的个人博客?

个人博客 简介提前准备 一、初始化vuepress项目二、页面配置首页配置顶部配置顶部导航栏路由配置侧边导航栏配置 三、打包部署四、数据统计插槽自定义插槽配置整体结构页面效果 项目地址 简介 主要教大家如何快速搞一个属于自己的博客网站&#xff0c;特别是一些不怎么会前端的…

信息安全保障

文章目录 信息安全保障基础基本概念信息安全定义广义和狭义的信息安全问题信息安全问题的根源和特征情报威胁和态势感知信息安全保障基础信息安全属性信息安全视角 信息安全发展阶段通信安全计算机安全信息系统安全信息安全保障网络安全空间 信息安全保障新领域工业控制系统(IS…

【虹科案例】使用 TCP 分析测量握手时间

如何使用 Allegro Network 万用表的 TCP 分析确定握手时间 握手需要多少时间&#xff1f; 在图 1 中&#xff0c;您可以在虹科Allegro 网络万用表的 TCP 统计数据中看到过去 10 分钟的客户端握手次数。在这里&#xff0c;您可以清楚地看到在指定时间段内有延长的响应时间。但…

ChatGPT探索系列之五:讨论人工智能伦理问题及ChatGPT的责任

文章目录 前言一、安全二、隐私和道德三、我们应该做什么总结 前言 ChatGPT发展到目前&#xff0c;其实网上已经有大量资料了&#xff0c;博主做个收口&#xff0c;会出一个ChatGPT探索系列的文章&#xff0c;帮助大家深入了解ChatGPT的。整个系列文章会按照一下目标来完成&am…

给定一个文本文件,每行是一条股票信息,写程序提取出所有的股票代码

问题&#xff1a;给定一个文本文件&#xff0c;每行是一条股票信息&#xff0c;写程序提取出所有的股票代码。其中&#xff0c;股票代码规则是&#xff1a;6 位数字&#xff0c; 而且以.SH 或者.SZ 结尾。 文件内容示例&#xff1a; 2020-08-08;平安银行(000001.SZ);15.55;2940…

如何用ChatGPT做品牌联名方案策划?

该场景对应的关键词库&#xff08;15个&#xff09;&#xff1a; 品牌、个人IP、社交话题、联名策划方案、调研分析、市场影响力、资源互补性、产品体验、传播话题、视觉形象设计、合作职权分配、销售转化、曝光目标、宣发渠道、品牌形象 提问模板&#xff08;1个&#xff09;…

kubernetes项目部署

目录 ​一、容器交付流程 二、k8s平台部署项目流程 三、在K8s平台部署项目 一、容器交付流程 容器交付流程通常分为四个阶&#xff1a;开发阶段、持续集成阶段、应用部署阶段和运维阶段。 开发阶段&#xff1a;开发应用程序&#xff0c;编写Dockerfile; 持续集成阶段&#…

很佩服的一个Google大佬,离职了。。

这两天&#xff0c;科技圈又有一个突发的爆款新闻相信不少同学都已经看到了。 那就是75岁的计算机科学家Geoffrey Hinton从谷歌离职了&#xff0c;从而引起了科技界的广泛关注和讨论。 而Hinton自己也证实了这一消息。 提到Geoffrey Hinton这个名字&#xff0c;对于一些了解过…

Spring Cloud学习笔记【分布式配置中心-Config】

文章目录 SpringCloud Config概述概述传统方式弊端主要功能与GitHub整合配置 Config服务端配置与测试服务端配置(即Gitee上的配置文件)Config Demo配置Spring Cloud Config访问规则 Config客户端配置与测试bootstrap.yml说明Config客户端 Demo配置 SpringCloud Config概述 概述…

无需公网IP 使用SSH远程连接Linux CentOS服务器【内网穿透】

文章目录 视频教程1. Linux CentOS安装cpolar2. 创建TCP隧道3. 随机地址公网远程连接4. 固定TCP地址5. 使用固定公网TCP地址SSH远程 本次教程我们来实现如何在外公网环境下&#xff0c;SSH远程连接家里/公司的Linux CentOS服务器&#xff0c;无需公网IP&#xff0c;也不需要设置…

深入理解Java虚拟机——垃圾收集器

1.前言 在前面我们已经说过了垃圾收集算法&#xff0c;那么现在我们要讲的垃圾收集器&#xff0c;实际上就是对垃圾收集算法的实践。 首先我们先看一张图&#xff0c;这张图可以帮助我们了解各款经典垃圾收集器之间的关系&#xff1a; 图中的垃圾收集器所在的区域代表了它是属…

【三十天精通Vue 3】第二十六天 Vue3 与 TypeScript 最佳实践

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: 三十天精通 Vue 3 文章目录 引言一、为什么使用TypeScript?二、Vue 3和TypeScript的基础2.1 安装TypeScript2.2 配置TypeScript2.3 Vue 3中使用TypeScript

Java多线程基础概述

简述多线程&#xff1a; 是指从软件或者硬件上实现多个线程并发执行的技术。 具有多线程能力的计算机因有硬件支持而能够在同一时间执行多个线程&#xff0c;提升性能。 正式着手代码前&#xff0c;需要先理清4个概念&#xff1a;并发&#xff0c;并行&#xff0c;进程&#…

TinyJAMBU的制动原理——一种轻量化的认证密码

关于TinyJAMBU的定义和介绍在另一篇博文已经介绍过了&#xff0c;这里只对其动作原理进行描述和说明。 对应的博文链接如下&#xff1a;TinyJAMBU&#xff1a;一种轻量化密码介绍 首先&#xff0c;该密码是一个流密码体系的块密码框架。其加密模式整体上来看是块密码&#xff0…

让语言学习更简单的 WordFlow

作为一个英语并不是那么特别好的计算机专业学生&#xff0c;长期积累英语的学习对个人发展还是有意义的。简单来说&#xff0c;我在语言上最大的两个问题&#xff0c;一个自己「不理解」&#xff0c;另一个是自己「不会表达」。 上述两个问题主要体现在口语层面&#xff0c;而…

实验二 存储器管理

实验二 存储器管理 实验目的&#xff1a; 理解各类置换算法的原理和虚拟存储器管理的方法。 实验内容&#xff1a; 编程实现LRU算法或CLOCK/改进算法等置换算法&#xff08;二选一&#xff09;&#xff0c;模拟实现虚拟存储器的地址变换过程。 实验步骤&#xff1a; 1…

【Golang项目实战】用Go写一个学生信息管理系统,真的太酷啦| 保姆级详解,附源码——建议收藏

博主简介&#xff1a;努力学习的大一在校计算机专业学生&#xff0c;热爱学习和创作。目前在学习和分享&#xff1a;数据结构、Go&#xff0c;Java等相关知识。博主主页&#xff1a; 是瑶瑶子啦所属专栏: Go语言核心编程近期目标&#xff1a;写好专栏的每一篇文章 学习了Go的基…
最新文章