【JS逆向 + python模拟获取】今天逆向一个简单的半混淆网站,获取token的生成方法,并用python模拟获取数据

news/发布时间2024/5/16 7:03:10

逆向日期:2024.02.20

使用工具:Node.js、python

加密工具:Crypto-js标准库

文章全程已做去敏处理!!!  【需要做的可联系我】

AES解密处理(直接解密即可)(crypto-js.js 标准算法):在线AES加解密工具

【点赞 收藏 关注 】仅供学习,仅供学习,
1、打开某某网站(请使用文章开头的AES在线工具解密):/zf4dYpaVbBna4oFFFS+lXiskGNj9rKuHiy8z+D57/Lb1mqzgSuIUTJKfYJjLJIs
2、打开网站后,翻页抓包,控制台查看,这就是我们要逆向的【token】值

3、全局搜索,打断点,翻页,断住了,每次加密结果不一样,长度较短,直接排除RSA加密,目测为AES、DES、Base64加密,,里面应该有时间戳,这个token的唯一作用就是反爬虫的,会将token传递给服务器,服务器进行验证后,会看这个token有没有过期,是不是正确的加密方法。但对于会js逆向的爬虫工程师来说,就有点多余,,,直接断点步入进去

4、步入进来后,可以看到他用了一个【crypto】标准库,然后传递进来了一个固定参数【/api/movie】,然后经过循环添加了一个时间戳,然后用sha1加密,加密后的结果在与之前的时间戳合并,然后在进行Base64加密,得出的结果就是token了

5、我们直接本地模拟一下,然后看看结果是否和上面那个图的结果一样 ,,测试完成后,我们将那个时间戳改成实时生成的,然后我们取用python模拟测试一下

6、js直接优化一下,然后python直接模拟成功获取数据

【附上源码】

【token.js】

// 安装 crypto 加解密包
// npm install crypto-js --save
const CryptoJS = require('crypto-js')function token(){o = '/api/movie't = Math.round((new Date).getTime() / 1e3).toString()data = [o,t].join(',')c = CryptoJS.SHA1(data).toString()data = data = [c,t].join(',')a = CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(data))return a
}

【token.py】  此处的密文需要经过AES加解密工具工具后得出python代码

JXtvLmP9Dt9/JkkmxV1w1+V6TviFL10uR2oSMSsPES7brQRzziFlUrZ2Vdyapj9OTMw8bGgH1pApGTbedfjZKDGfc9jnv4z3sNWq3wPuJm2RQVX0Hj2OLXG+PExHncPsS+XjJnIJXG9C3fdpaGTuCG6RLC0kd7mjrxvknb2Rvc0/OQPugJWhuK2gRiF6i5S+4mlmZzIt/LQsDfl1yaFpIGTX620aXDR3C+zwLetYIWlYAeEKzFTgOBl/f+GX2QykcCtCBICUmsVnKC2joTY8gfnk/z3GUQrYGTluPqvpIpMKVeGtJJTJXYVRRXdP45yTS2lqsv32AtMFU1xGEWfn55Ghunhf6HNVVCjBlxT4+6lDEbEDUmHYdQ0sQZ/NKPFlsUtmi6iVYFIFyEoaXTeIxes2ZGCJeChofQ/tVEnpUsz4UuJapn5of7ZuW7tS3g6G/0sYtJ3DF96dTfIHNWPYESUeLSSIT2IO3NovxuyTgDx1wg0a9wl126jHi0CGmNcADMBGq8cAQZqlAmZ1CrtNwIVnsyM57cgWiJcSGjnfbPbA7paFIqJa7e8hQOxlX57gVrvh9nvkEH+mfGAVId6NiIPrPgdJ+wW0CjIp4HEJCB9o5hoWPGcQ6x07vK8a8CEKVRjBGcW0+e1iWsYURFmd46U2Y8bAftXreo69kK/Pro9oYs1Y0z6u/3OFqSt88bWpf0oXogFakr14Mrh9xgevnEAAyzXsbro0hcEC+1XWv3HOqPDES/3hBIJLRo0MRmYTfi8+XdfDW9ZQYHntv+AQd+BNlfGAlsh6G5jVC9QO9NooaLaw6GeH3SB3fE+Byp4p6VeJec5Nf3Z83Ogu2oTUUgqexXuRMLIP3NkR4pUCmNqdN+iPU0YMFHSa4xARZ8aZgWrtJ2I6Dc51iIQ2ZBVoRA==

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

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

相关文章

Python爬虫-存储到csv乱码-使用utf-8-sig编码

代码 import requests import csvdef get_data():url https://careers.tencent.com/tencentcareer/api/post/Query?timestamp1708743664770&countryId&cityId&bgIds&productId&categoryId&parentCategoryId&attrId&keywordpython&pageIn…

常用显示屏学习——LCD12864(含高级驱动程序)

LCD12864液晶显示屏 屏幕介绍 ① 可显示四行字符,每行可显示8个汉字或者16个数字和字母; ②可串行通信和并行通信; ③ 串口接口管脚信号 通信方法 (一)八位并行通信方法 (二)串行通信方法 用…

​LeetCode解法汇总2583. 二叉树中的第 K 大层和

目录链接: 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:. - 力扣(LeetCode) 描述: 给你一棵二叉树的根节点 root 和一个正整…

JSON(javaScript Object Notation,Js对象标记)—我耀学IT

Json是一种轻量级的数据交换格式,目前使用非常广泛,是一种轻量级的数据交换格式。易于人阅读和编写,可以在多种语言之间进行数据交换 。同时也易于机器解析和生成 1.1json的值: 值可以是对象、数组、数字、字符串或者三个字面值(false、nul…

acwing算法学习笔记 ------ 双链表

1、定义 这里可以做一个投机取巧,我们不再像单链表去用head去存头和尾,直接让r[0] 1,l[1] 0; idx 2.进行初始化, 解释一下l[N] 和 r[N] l[N]:是表示指向左面下一个节点下标, r[N]:表示指向下一个节点的下标。大家不用担心i…

如何利用AI产品写作高质量SEO文章

在搜索引擎优化(SEO)的过程中,我们的目标非常明确,即增加网站的流量并实现有效的转化。那么,如何才能吸引更多的用户访问网站呢?这时候,文章就成为了一个非常好的工具。用户可以通过阅读文章来了…

08 Redis之集群的搭建和复制原理+哨兵机制+CAP定理+Raft算法

5 Redis 集群 2.8版本之前, Redis采用主从集群模式. 实现了数据备份和读写分离 2.8版本之后, Redis采用Sentinel哨兵集群模式 , 实现了集群的高可用 5.1 主从集群搭建 首先, 基本所有系统 , “读” 的压力都大于 “写” 的压力 Redis 的主从集群是一个“一主多从”的读写分…

协议的概念+本质+作用+最终表现形式,网络问题(技术+应用+解决的协议+存在原因),主机的对称性

目录 协议 概念 示例 -- 摩斯密码 本质 作用 网络问题 引入 技术问题 应用问题 主机的对称性 问题对应的协议 问题出现的原因 理解协议(代码层面) 举例 -- 快递单 协议的最终表现形式 协议被双方主机认知的基础 协议 概念 协议是在计算机通信和数据传输中规定通…

飞天使-k8s知识点23-kubernetes实操8-数据存储1

文章目录 持久化存储的必要EmptyDirHostPathNFS 持久化存储的必要 Volume是Pod中能够被多个容器访问的共享目录,它被定义在Pod上,然后被一个Pod里的多个容器挂载到具体的文件目录下,kubernetes通过Volume实现同一个Pod中不同容器之间的数据共…

韩国突发:将批准比特币ETF

作者:秦晋 韩国两党宣布将批准比特币ETF。比特币也再次成为竞选的宠儿。 4月10日,韩国将迎来每隔4年而进行的一次立法大选。在大选之前,现执政党与反对党都承诺将批准比特币ETF。 我们知道,比特币的主要受众群体以年轻人居多。此前…

零基础C++开发上位机--基于QT5.15的串口助手(一)

嵌入式开发的过程中,大部分我们的代码是无法一次成功的。这时候我们大部分的工程师可能最熟练的调试方法是printf函数,打印随意一个数据,来观察当前运行的函数是否执行正确。我们连接的工具有各个大神做的串口助手。另外,在做一般…

Git基本操作(2)

Git基本操作(2) 上交文件之后,git文件的变化git cat-file HEAD指针里面有啥文件被修改git statusgit diff 文件名 版本回退(git reset)撤销回退git reflog 撤销的三种情况还没有addgit checkout -- [file] 已经add还没…

聊聊分库分表

文章导读 背景介绍 随着互联网技术的发展,数据量呈爆炸性增长。大数据量的业务场景中,数据库成为系统性能瓶颈的一个主要因素。当单个数据库包含了太多数据或过高的访问量时,会出现查询缓慢、响应时间长等问题,严重影响用户体验。…

如何在Linux部署OpenGauss数据管理系统并实现公网访问内网数据

文章目录 前言1. Linux 安装 openGauss2. Linux 安装cpolar3. 创建openGauss主节点端口号公网地址4. 远程连接openGauss5. 固定连接TCP公网地址6. 固定地址连接测试 前言 openGauss是一款开源关系型数据库管理系统,采用木兰宽松许可证v2发行。openGauss内核深度融合…

学习JAVA的第二天(基础)

目录 基本概念 关键字 class关键字 字面量 练习 变量 定义格式 变量使用 数据类型 基本数据类型 标识符 命名规则 键盘录入 1.导包 2.创建对象 3.接受数据 运算符 算术运算符 练习 隐式转换(自动类型提升) 强制转换 自增自减运算符 …

【前端素材】推荐优质后台管理系统Jampack平台模板(附源码)

一、需求分析 后台管理系统(或称作管理后台、管理系统、后台管理平台)是一种专门用于管理网站、应用程序或系统后台运营的软件系统。它通常由一系列功能模块组成,为管理员提供了管理、监控和控制网站或应用程序的各个方面的工具和界面。以下…

[论文解读]ALOHA 2:用于双手遥控操作的增强型低成本硬件

多样化的演示数据集推动了机器人学习的重大进步,但此类数据的灵活性和规模可能受到硬件成本、硬件鲁棒性和远程操作难易程度的限制。我们推出ALOHA 2,这是ALOHA的增强版本,与原始设计相比,它具有更高的性能、人体工程学和稳健性。…

Spring 容器、核心容器总结

目录 创建容器获取 bean容器类层次结构图核心容器总结容器相关bean 相关依赖注入相关 创建容器 方式一: 类路径加载配置文件 ApplicationContext ctx new ClassPathXmlApplicationContext("applicationContext.xml");方式二: 文件路径加载配…

TCP Keepalive 和 HTTP Keep-Alive

HTTP 的Keep-Alive 在 HTTP 1.0 中默认是关闭的,如果浏览器要开启 Keep-Alive,它必须在请求的包头中添加: Connection: Keep-Alive然后当服务器收到请求,作出回应的时候,它也添加一个头在响应中: Connec…

基于java+springboot+vue实现的美食信息推荐系统(文末源码+Lw)23-170

1 摘 要 使用旧方法对美食信息推荐系统的信息进行系统化管理已经不再让人们信赖了,把现在的网络信息技术运用在美食信息推荐系统的管理上面可以解决许多信息管理上面的难题,比如处理数据时间很长,数据存在错误不能及时纠正等问题。这次开发…
推荐文章