JS加解密,python

JS逆向加解密——python 实现AES加解密 python 实现AES加解密 阅读详情

之所以写这篇文章是因为之前在做一些爬虫项目的时候遇到在url或者header头中的加密参数,每次请求都需要变换,如果用chromdriver来解析的话耗费资源比较高,且耗时长,而刚接触 js 逆向的时候真的是头皮发麻,另外这里不谈哪个网站的加密参数,只说方法。

 

到现在为止遇到的参数加密类型主要分为两类:

第一类: 在请求数据接口之前不需要发起其它请求,其中可能只需要你连接中的数个参数或者页面中的一些信息来生成一个值;

第二类:在请求数据接口前还需要请求一段文本与来生成加密值,并且会在你的 cookie 中加入数一些信息,这里又分为两种(1. 这段文本是加密参数,2,这段文本是一段 js(可能是加密的),在浏览器中运行会生成你需要的值)。

 

 

想要用自己的代码来生成加密参数又分为两步:

第一步:找到生成加密参数方法,这里使用chrom浏览器。两种方法(1. 在开发者工具的 sources 栏中搜索数据接口中的关键字, 2.在开发者工具中的 Network 中抓一下包,找到你需要的那个请求,鼠标移动至那条请求的 Initiator 栏中,会显示这条请求所使用的函数),然后就是 debug 之路。这里就不贴截图了,想详细学习的话可以找依照 js加解密系列的视频。

如果你已经找到加密函数后,请往下看,不然的话还是继续找吧。

第二步:执行加密方法,生成加密值。 另外,我这里使用的是 PyExecJS,虽然 PyV8的效率比较高,但是安装比较烦,不兼容。这里还是介绍两种方式:

一. 利用 selenium 和 chromdriver ,首先实例化一个浏览器,然后打开一次你所需要的数据接口所在的页面,这是为了加载一次js, 如果加密类型是第一大类的话,可以直接利用浏览器实例的 execute_script 方法来执行一段js代码,这段代码可以是调用加密函数的代码,然后浏览器实例不要关闭等待下次使用。注:如果不是必须,推荐使用这种方法,因为相比下面那种方法,这个还是比较省力的;如果加密类型是第二大类的话可以先使用 requests 把 所需要文本给请求一次,然后在使用 execute_script 方法的时候作为参数传入进去就ok。

二. 这个就是不断的进行 debug ,然后把自己把需要的js代码给赋复制粘贴下来,因为js中有很多地方会使用到浏览器的 windows,documen等对象,甚至还有什么先在 html 标签的属性中写入一个值,在接下来的运算中再取出来进行计算这种骚操作,所以就需要改写 js 了。 这里可以给到大家几条经验,你猜是几条。。。。。。

JS改写的两条经验(没错,就是 2 )!!:

1.JS代码中如果遇到什么 三元表达式 、&&、|| 这种从HTML中拿东西的话,可能只是为了判断真假,这里你可以直接改写为布尔值;

2.在js代码中遇到什么 crypto 或者是 cryptoJS的话,就可以使用 PyExecJS 来解析了,不过你需要更换PyExecJS的引擎。PyExecJS的默认引擎为  JScript,这点你可以通过打印  execjs.get().name 来验证,你现在需要 安装node.js 并放到环境变量中,再次打印  execjs.get().name ,如果现在结果为 Node.js (V8) 的话,就说明你成功了。 其中 node 环境中已经有 crypto , 如果需要 cryptoJS 的话还需要安装 crypto-js 包。

这里提供一款JS调试工具:https://download.youkuaiyun.com/download/meteorcountry/10842095

珍爱生命,远离爬虫,且行且珍惜。

跨语言AES-CBC加解密实战:JavaScript与Python互通指南 对称加密是保障数据传输机密性的核心技术,其中AES(高级加密标准)因其安全高效被广泛应用。其原理在于使用相同的密钥进行加密和解密,通过分组密码模式对数据进行处理。在工程实践中,CBC(密码分组链接)模式通过引入初始化向量(IV)增强了安全性,避免了相同明文产生相同密文的问题。该技术的核心价值在于为跨系统、跨语言的数据安全交换提供了标准化解决方案,尤其在前后端分离架构中,前端JavaScript与后端Python的数据加密传输成为常见需求。要实现可靠的跨语言加解密,关键在于精确对齐加密算法、工作模式、填充方案 阅读详情

相关推荐

python爬虫加解密分析及实现

通过加载JS的方法去调用JS文件中的方法。

GR001009的博客 3069

Python爬虫最强项目案例之——JS逆向。这波学到就是赚到。

前言 前段时间看到有人js逆向了某手机的反馈专区,我也第一时间学习了一下,学完后一直想着凭借自己的能力,看能不能单独完成一次,拿下js逆向真正第一血,所以就有了今天的受害者,某蓝厂手机圈子的逆向。 网站分析 既然选定了目标,那就开始抓包,分析网页。 这是抓包后的情况,通过对多个包进行比较发现,实际变化的参数只有lastId、nonce、timestamp、pageNum。具体分析了一下,lastId:前一页最后一个发言用户的tid;pageNum:当前页码;timestamp:13位时间戳;no

爬遍所有网站 1万+

华为OD机试 - 字符串加解密(Python/JS/C/C++ 2024 D卷 100分)

每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新,全天优快云在线答疑。

学Java,找哪吒 1324

python+js逆向学习

本文旨在介绍 JavaScript 逆向工程、调试技术以及处理兼容性问题的基本原理和实践方法。通过深入理解 JavaScript 的内部机制和常见的调试技术,读者将能够更好地解决 JavaScript 应用程序中的问题,并扩展对 JavaScript 的学习和研究

is_Only_Me的博客 2491

从轴承润滑到代码实现:手把手教你用Python FDM求解稳态雷诺方程

本文详细介绍了如何用Python FDM(有限差分法)求解稳态雷诺方程,从轴承润滑理论到代码实现的全过程。通过构建无量纲方程、有限差分格式和迭代求解算法,开发者可以快速实现专业级润滑分析,应用于涡轮发电机、汽车曲轴等场景。文章还提供了完整的Python代码示例和结果可视化方法,帮助工程师优化轴承设计。

weixin_28689507的博客 119

C++语言程序设计教程第4版杨进才沈显君课后习题答案解析

为了更好地学习这门课程,我尝试在网上寻找一些学习资料和参考书籍,但效果并不是很理想。因此,我希望能有一些学长学姐或者是有经验的程序员能够分享一些学习经验和方法,让我更好地掌握这门课程。学习过程中,我发现这本书的内容非常丰富,讲解也非常详细,对于像我这样编程基础薄弱的学生来说,是一本非常实用的教材。同时,我也希望有经验的程序员能够推荐一些适合初学者的C++语言学习资料和工具,以便我能更好地学习和掌握这门课程。总之,希望能得到大家的帮助和支持,让我更好地学习和掌握C++语言程序设计。主 编: 杨进才,沈显君。

weixin_58833001的博客 1333

Python JS逆向篇(一)

逆向主题:51job请求头headers中携带的sign参数。 在本次逆向的网站中,里面涉及了大量js对象语法的使用,真的难受。而我也只会js的少部分基础语法知识(还没了解过js类对象的使用),所以这次js逆向的结果只能说是连拼带凑+运气 进行实现的(欧皇),也测试过多种参数,好像也都行得同,所以代码能跑就行也不是么!!!

qq_59142194的博客 3818

ADS中HB仿真自动优化报错问题解决心得

在ADS HB仿真中自动优化出现报错被强制暂停,解决方法如下

yyyyyyyyyyjy的博客 6541

python 爬虫之js逆向爬虫详解

JS逆向是一种分析反爬机制的行为,通过分析反爬机制如何加密、混淆和模拟JS代码的执行,使之能够成功处理并渲染网页。由于JS逆向的方式需要进行复制粘贴,因此开发过程中需要耗费一定的时间和精力。在Python上,我们可以使用Requests和Selenium等库来获取页面元素或模拟人类操作。Requests库是一种强大、简洁的HTTP请求库。而Selenium是一个自动化测试框架,用于模拟用户在浏览器中的操作。过程如下:使用Requests# 获取页面# 对页面进行解析# ...使用Selenium。

naer_chongya的博客 7695

新手自己动手设置3D-slicer中文版(超详细图文)

3DSlicer是一个开源的免费软件,用于医学图像分析(包括配准和交互式分割)和可视化(包括3D渲染)以及用于图像引导治疗研究的软件平台。复制qm文件,粘贴于3D-slicer文件相关文件夹内,\bin\translations\。打开3dslicer,edit菜单下Application Settings,支持的操作系统:Linux,Mac OSX和Windows。本人英语太差,所以第一反应就是中文版,官网无中文版下载,下载后不能直接使用,必须要发布成qm文件;qm文件已经生成,位于ts文件同一文件夹。

linjianping513的博客 9854

用c++生成随机迷宫_自动生成随机迷宫(1)prim算法

“程序 = 数据 + 算法”,一款好的作品不单单是代码的堆砌,还有其灵魂的部分,那就是算法;算法是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。算法既然是解决某类型问题的规范,那么我们就学习它,并在我们的作品中使用它。从这一期开始做一个迷宫系列,包括用算法生成随机迷宫,用算法自动寻址走迷宫。 三大迷宫生成算法之一“随机Prim算法不是...

weixin_31787547的博客 2598

利用crypto-js、python实现AES 、DES前后端的加解密

前端 crypto-js aes 加解密 要用 AES 算法加密,首先我们要引入 crypto-js ,crypto-js 是一个纯 javascript 写的加密算法类库 ,可以非常方便地在 javascript 进行 MD5、SHA1、SHA2、SHA3、RIPEMD-160 哈希散列,进行 AES、DES、Rabbit、RC4、Triple DES 加解密,我们可以采用 npm install crypto-js --save 进行下载安装,也可以直接去 GitHub下载源码~ const Crypt

u010741112的博客 1万+

手把手教你用STM32实现SPWM逆变器控制(附完整代码)

本文详细介绍了如何使用STM32微控制器实现SPWM逆变器控制,包括硬件设计、PWM生成配置、正弦表生成与DMA传输,以及闭环控制与性能优化。通过完整的代码示例和实测数据,帮助开发者快速掌握SPWM技术,应用于新能源和电力电子领域。

weixin_29296241的博客 318

python,js前后端aes,ras加解密

python,js前后端aes,ras基础加解密方案 前端js: aes.js:https://blog.youkuaiyun.com/yingbaoyu/article/details/95761177 ras.js:https://blog.youkuaiyun.com/m0_46370117/article/details/120721155 <html> <head> <meta http-equiv="Content-Type" content="text/html; cha

qq_38778838的博客 868

virtualbox虚拟机里面最顶部没有控制、设置和帮助等选项

无意中操作,导致virtualbox虚拟机里面最顶部没有控制,设置和帮助选项  virtualbox虚拟机窗口显示如下如: 如何设置,窗口显示如下图所示呢: virtualbox虚拟机窗口模式显示设置,切换可以通过如下图所示操作进行切换: PS:一定要是右边的Ctrl+C

WEL测试 8780

matlab 点云可视化(1)——pcshow()函数可视化单个点云

matlab可视化单个点云常用方法汇总。

点云侠的博客 5359

Python与JavaScript关于AES加解密和RSA加解密

【代码】【无标题】

不长个的小胖子的博客 325

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

爬虫逆向学习(四):python与Javascript方式处理常见加解密

【代码】爬虫逆向学习(四):python与Javascript方式处理常见加解密。

九月镇灵将的博客 3162

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

base64 python兼容js_python和javascript共用的base64加解密代码

最近在OpenEDX中开发了个新的组件,其中需要支持上传功能。由于全都是异步操作,而一些现有的文件上传的库都失效不可用。所以想自己将文件编码成base64,扔到服务端,服务端接收解码保存,以此来实现文件上传的功能。之前在javascript中加解密部分一直喜欢用CryptoJS库。结果发现此库对数据Base64编码后,python的base64库解密不出来。后来更换了js-base64 这个库,还...

weixin_42557656的博客 224

python兼容js base64_python和javascript共用的base64加解密代码

最近在OpenEDX中开发了个新的组件,其中需要支持上传功能。由于全都是异步操作,而一些现有的文件上传的库都失效不可用。所以想自己将文件编码成base64,扔到服务端,服务端接收解码保存,以此来实现文件上传的功能。之前在javascript中加解密部分一直喜欢用CryptoJS库。结果发现此库对数据Base64编码后,python的base64库解密不出来。后来更换了js-base64 这个库,还...

weixin_39937312的博客 315

python 和 js 加解密

AES 加解密 (前后端互通) CryptoJS加密: var data = "测试字符串"; var passphrase = "passphrase"; var encrypted = CryptoJS.AES.encrypt(data, passphrase).toString(); console.log(encrypted); python实现如下: # coding: ut...

weixin_42296492的博客 673

python中base64加密和解密 和js 加解密配合使用

base的原理 这个还是别人讲的好,详情请看:Base64编码原理与应用 简单小案例 其实它的原理不是很难,以下是几个小案例 import base64 str='admin' str=str.encode('utf-8') #加密 bs64=base64.b64encode(str) print(bs) #结果是 b'YWRtaW4=' bs32=base64.b32encode(str) print(bs32) #结果是 b'MFSG22LO' bs16=base64.b16encode(

0x8g1T9E- 778

SM2跨语言加解密实战:解决JavaScript与Python交互的“暗礁”

非对称加密是保障数据传输安全的核心技术,其基于公钥与私钥的数学原理,实现了信息在不可信信道上的机密性与完整性。在工程实践中,国密SM2算法作为国产密码标准,广泛应用于金融、政务等领域的数据加密场景。然而,不同编程语言和密码库的实现差异,如密文块拼接顺序(C1C2C3与C1C3C2)、公钥格式和编码方式,常导致跨系统加解密失败,成为开发中的典型“暗礁”。本文聚焦SM2算法在JavaScript(如sm-crypto库)与Python(如gmssl库)间的协同问题,通过剖析密文结构、编码处理等底层原理,提供了一

weixin_29325007的博客 305

Python、aes.js和node.js实现AES(Crypto)加密与解密实现代码

AES算法可以实现字符串的加解密,本文主要介绍Python、Js(JavaScript)和node.js中实现AES(Crypto)相互加解密,分别通过Python和aes.js实现方法及示例代码。 原文地址:Python、aes.js和node.js实现AES(Crypto)加密与解密实现代码 ...

weixin_42098295的博客 312
上一篇: 密码传纸条算法训练 -- python 实现
下一篇: 由python实现的单向链表来看python的基础概念(赋值,垃圾回收)
A-f
A-f
博客等级 码龄9年 19粉丝 11原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值