JS逆向——借助playwright实现逆向

news2024/12/23 15:30:54

原理:

1.修改js文件,将加密方法设定为全局变量并调用。

2.使用playwright替换浏览器加载的js文件

3.在python中通过playwright实现js注入获取加密结果

实现:

以下面链接为例:

Scrape | Movie

1.首先,要知道页面的数据是通过ajax请求获取的,所以点击页码的时候,会有network数据

然后找到数据接口,当然也可用通过搜索页面上的数据来找

 url如下:https://spa2.scrape.center/api/movie/?limit=10&offset=20&token=MWIxNDMzYjQ3MzVkMzJiOTkxYzQ2OWVmMjhmYmYwYTFkZTdmZGNkMCwxNjg1NjI5OTQw我们的目的是用代码实现加密数据token的生成

2.在源文件中添加XHR断点,从而找到发起请求的位置

 3.通过查看堆栈信息,我们可以找到参数由无到有的地方,e就是token,也是在这里生成的,其生成过程传入了this.$store.state.url.index跟a ,通过查看得知this.$store.state.url.index就是/api/movie而a就是页码*10

 我们再追踪下i['a']方法,查看其中的FunctionLocation就是i['a']方法实现的位置

不难看出,此处使用了base64加密和sha1加密(如果按照以前的思路,需要用python代码去模拟加密生成加密数据)

 接下来我们要做的就是将i['a']方法定义为全局方法(实现全局挂载),修改js文件,插入

window.crypt = Object(i["a"]);

这样我们可以通过js注入来调用加密方法。

右键文件-在边栏中显示,可以查看文件位置:/js/chunk-10192a00.243cb8b7.js

playwright支持js文件替换,/js/chunk-10192a00.243cb8b7.js是源文件路径,chunk.js是我们本地路径

page.route(
    "/js/chunk-10192a00.243cb8b7.js",
    lamada route:route.fulfill(path="./chunk.js")
)

这样加载js文件时会被替换我们本地的js.

page是playwright的一个页面。可以通过如下实现js注入

offset = "90"
def get_token(offset):
    result = page.evaluate('''() => {
        return window.crypt("%s","%s")
    }'''% ('/api/movie',offset))
    return result

这样,result就是我们想要加密生成的token,只需要实现文件替换和js注入,就可以实现逆向

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

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

相关文章

方法引用相关知识点

这里写目录标题 方法引用方法引用符简介代码演示 Lambda表达式支持的方法引用引用 类方法简介使用 引用对象的实例方法简介操作 引用类的实例方法简介具体代码 引用构造器简介代码演示 二级目录二级目录二级目录二级目录二级目录二级目录 方法引用 方法引用符 简介 注意 这里…

JDK SPI、Spring SPI、Dubbo SPI三种机制的细节与演化

JDK SPI、Spring SPI、Dubbo SPI三种机制的细节与演化 SPI机制 SPI机制的应用 JDBC中加载驱动 Spring SPI Dubbo SPI SPI深入理解 API与SPI的区别 ServiceLoader JDK SPI、Spring SPI、Dubbo SPI综合对比 SPI机制 Java SPI(Service Provider Interface&am…

Linux4.3Apache配置与应用

文章目录 计算机系统5G云计算第一章 LINUX Apache配置与应用及网页优化一、构建虚拟 Web 主机二、基于域名的虚拟主机1.为虚拟主机提供域名解析2.为虚拟主机准备网页文档3.添加虚拟主机配置4.设置访问控制5.Options指令解释6.AllowOverride指令解释7.地址限制策略8.加载独立的配…

10个Chatgpt国内可用镜像网页

自 2022 年底推出以来, ChatGPT一直风靡全球,原因显而易见。革命性的聊天机器人 AI 可以完成数量惊人的任务,从进行对话到撰写整篇学期论文。此外,ChatGPT 可以做很多您不知道的事情——从制作品牌徽标到创作音乐等等。 根据Open…

浮点数在内存中的储存(C语言)

浮点数在内存中的储存 一、浮点数简介二、浮点数在内存中的储存1.IEEE 754标准2.单精度浮点数的内存储存3.双精度浮点数的内存储存4.IEEE 754对有效数字M和指数E,还有一些特别规定 三、总结 一、浮点数简介 浮点数是计算机科学中的一种数据类型,用于存储…

2023第四届中国奢侈品数字化创新峰会

2023第四届中国奢侈品数字化创新峰会将于6月26日-27日在上海召开。 此次会议将线上线下同步举行,重点讨论后疫情时代奢侈品行业主要的数字化战略与趋势,探讨数字化技术如何成为与消费者沟通的有效手段和关键媒介,如何做好线上消费者洞察&…

【HashSet集合】概述和特点

HashSet集合概述和特点 1.HashSet概述 HashSet在java.util包下,使用时需要到爆,它是set接口的一个实现类,它所存储的元素是不可重复的,并且元素都是无序的,HashSet是根据对象的哈希值来确定元素在集合中的存储位置&a…

代码随想录第48天

1.打家劫舍: 动规五部曲分析如下: 确定dp数组(dp table)以及下标的含义 dp[i]:考虑下标i(包括i)以内的房屋,最多可以偷窃的金额为dp[i]。 2.确定递推公式 决定dp[i]的因素就是第…

chatgpt赋能python:Python分词方法——NLP技术的重要组成部分

Python分词方法——NLP技术的重要组成部分 自然语言处理(NLP)是人工智能领域的热点研究方向之一。而分词作为NLP技术的重要组成部分,对于中文文本的处理尤为重要。Python作为一种便捷、易学、高效的编程语言,拥有丰富的分词工具。…

陪诊系统开发|陪诊小程序源码|陪诊小程序源码开发

随着互联网的发展,人们对于医疗服务的需求越来越高,而移动互联网的普及也让医疗服务得以更加便捷高效地提供给用户。陪诊小程序是一款为顾客提供陪诊服务的应用程序,可以帮助患者更好地接受医疗服务,同时也为医疗服务的提供者带来…

【Collection集合的遍历】

Collection集合的遍历 Iterator:迭代器是集合的专用的遍历的方式,使用时也需要导包 Iterator iterator():返回集合中元素的迭代器,通过集合的iterator()方法得到迭代器使用过集合的iterator()方法得到的,所以说它是依…

压缩感知重构之分段弱正交匹配追踪法

算法的重构是压缩感知中重要的一步,是压缩感知的关键之处。因为重构算法关系着信号能否精确重建,国内外的研究学者致力于压缩感知的信号重建,并且取得了很大的进展,提出了很多的重构算法,每种算法都各有自己的优缺点&a…

压缩感知重构之基追踪

压缩感知中很重要的一步就是重构算法,重构算法关系着重建信号的质量。基追踪算法是凸松弛法是很有代表性的一种算法。 由于我们所要求解的问题是方程的个数远远大于未知数的个数,用0范数求解是很难求解出来的,这样就找到一种用范数来代替范数…

实训笔记-6.2

实训笔记 6.2一、座右铭二、新学Java知识1、算法1.1 常见的排序算法1.1.1冒泡排序(Bubble Sort)1.1.1.1 思想1.1.1.2 代码1.1.1.3 算法空间复杂度和时间复杂度的计算 1.1.2线性查找算法1.1.2.1 思想1.1.2.2 代码1.1.2.3 算法空间复杂度和时间复杂度的计算…

【paddlecls】多机多卡-linux(一:环境搭建)

1. 安装docker(引擎): (https://docs.docker.com/engine/install/ubuntu/) Install Docker Engine on Ubuntu To get started with Docker Engine on Ubuntu, make sure you meet the prerequisites, and then follo…

Mysql:SQL性能分析

1 SQL执行频率 MySQL 客户端连接成功后,通过 show [session|global] status 命令可以提供服务器状态信息。通过如下指令,可以查看当前数据库的INSERT、UPDATE、DELETE、SELECT的访问频次: -- session 是查看当前会话 ; -- global 是查询全局…

03散点密度图(遥感反演数据精度验证)

本文是在模仿中精进数据分析与可视化系列的第三期——散点密度图,本文所用的数据和代码可在公众号GeodataAnalysis回复20230602下载。 一、简介 散点密度图(Scatter Density Plot)是一种用于可视化二维数据分布的图表。它将散点图和核密度估…

linux【网络编程】之HTTPS协议,一文了解HTTPS是保证通信安全的

linux【网络编程】之HTTPS协议 一、什么是HTTPS协议二、加密和解密2.1 什么是加密解密2.2 为什么需要加密2.3 常见的加密方式2.3.1 对称加密2.3.2 非对称加密2.3.3 数据摘要(数据指纹)2.3.4 数字签名 2.4 理智选择加密解密方式2.4.1 只使用对称加密✖️2…

OpenMMLab-AI实战营第二期——2.人体关键点检测与MMPose

文章目录 1. 人体姿态估计的介绍和应用2-1. 2D姿态估计概述2.1 任务描述2.2 基于回归2.3 基于热力图2.3.1 从数据标注生成热力图(高斯函数)2.3.2 使用热力图训练模型2.3.3 从热力图还原关键点 2.4 自顶向下2.5 自底向上2.6 单阶段方法 2-2. 2D姿态估计详…

搞什么飞机?快速排序算法都没搞懂,还敢说自己值20k?

引言 之前面试过一位求职者,其期望薪资是20k,面试时问到了排序算法,结果就是模棱两可,说这说那的… 所以,还是有必要学一些基础算法的 首先,搞明白学算法的重要性和为什么学算法 算法我认为是一种解决问题…