python执行js代码的方法


Posted in Python onMay 13, 2021

什么是js代码混淆?

正常代码

我们现在看一段js代码,代码逻辑很简单,就是拼接时间返回。

function formatDate(now) {
    var now = new Date(1230999938);
    var year=now.getFullYear();
    var month=now.getMonth()+1;
    var date=now.getDate();
    var hour=now.getHours();
    var minute=now.getMinutes();
    var second=now.getSeconds();
    return year+"-"+month+"-"+date+" "+hour+":"+minute+":"+second;
}

    运行一下这段代码,如下图所示。

python执行js代码的方法

混淆代码

我随便找了个在线的js代码混淆网站。

js代码

function formatDate(mz1){var KkkGDiH2=new window["\x44\x61\x74\x65"](1230999938);var tsk3=KkkGDiH2['\x67\x65\x74\x46\x75\x6c\x6c\x59\x65\x61\x72']();var YMreyP4=KkkGDiH2['\x67\x65\x74\x4d\x6f\x6e\x74\x68']()+1;var Ozo5=KkkGDiH2['\x67\x65\x74\x44\x61\x74\x65']();var QMYEc$eD6=KkkGDiH2['\x67\x65\x74\x48\x6f\x75\x72\x73']();var JfXVV_Akq7=KkkGDiH2['\x67\x65\x74\x4d\x69\x6e\x75\x74\x65\x73']();var $mP8=KkkGDiH2['\x67\x65\x74\x53\x65\x63\x6f\x6e\x64\x73']();return tsk3+"\x2d"+YMreyP4+"\x2d"+Ozo5+" "+QMYEc$eD6+"\x3a"+JfXVV_Akq7+"\x3a"+$mP8

    上面这个真的不是我瞎写的,混淆之后就是这样子的,不信看图片。

python执行js代码的方法

可能我们会有个疑问,js代码都成这玩意了,还能执行吗? 答案是肯定的。即使js代码非常乱,但还是可以执行的,结果跟上面的是一样的。

这就造成了一个问题,我们在做爬虫时,如果需要,多多少少可能都要研究一下js代码,然后进行js解密一下,但是,但是,要是代码都混淆成了这了,还怎么解?

一点逻辑都看不通了,基本上不可用Python按照js逻辑重写出来了...

很巧,小编也是卡在这里...后来我就想,要是Python能执行js代码就好了,不用管函数里面的逻辑了,只拿函数返回值就好了。

Python第三方包Execjs

可能是吧,不止我一个人遇到了这种情况,所以大佬们就开发出来这种工具包,用于执行js代码。

安装

在安装之前,需要有node环境,这里就不举栗子了,下一步下一步就好了。

pip3 install PyExecJS

执行js

注:由于上述js代码会生成window对象,并不能直接执行成功,需要额外的其他辅助,这里简单的举一下其他例子。

正常js代码

function add(x, y) {
   return x + y;
}

Python执行js代码

import execjs

ctx = execjs.compile("""
function add(x, y) {
  return x + y;
}
""")
print(ctx.call("add", 1, 2))

执行结果如下图所示:

python执行js代码的方法

混淆js代码

function add(bi1,Pl$2){return bi1+Pl$2}

Python执行混淆js代码

import execjs

ctx = execjs.compile("""
function add(bi1,Pl$2){return bi1+Pl$2}
""")
print(ctx.call("add", 1, 2))

执行结果如下图所示:

python执行js代码的方法

可以看到,即使再混淆,只要执行的是js代码,都是没啥问题的。

上述拼接时间返回的js混淆代码也是可以执行的,但是它多了一个window对象,需要node安装jsdom才行,由于网络设置有问题,实在是下载不了举例子,实在是抱歉。

或者使用selenium打开游览器执行再返回也行,当然,速度更慢。

以上就是python执行js代码的方法的详细内容,更多关于python执行js代码的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python使用metaclass实现Singleton模式的方法
May 05 Python
Python的装饰器用法学习笔记
Jun 24 Python
python 按不同维度求和,最值,均值的实例
Jun 28 Python
Python实现简单石头剪刀布游戏
Jan 20 Python
python调用外部程序的实操步骤
Mar 04 Python
Python3 列表,数组,矩阵的相互转换的方法示例
Aug 05 Python
基于python实现自动化办公学习笔记(CSV、word、Excel、PPT)
Aug 06 Python
调用其他python脚本文件里面的类和方法过程解析
Nov 15 Python
django实现模板中的字符串文字和自动转义
Mar 31 Python
tensorflow常用函数API介绍
Apr 19 Python
python TCP包注入方式
May 05 Python
python分分钟绘制精美地图海报
Feb 15 Python
pytorch加载预训练模型与自己模型不匹配的解决方案
May 13 #Python
Python数据分析入门之教你怎么搭建环境
Pytorch 统计模型参数量的操作 param.numel()
May 13 #Python
Python机器学习算法之决策树算法的实现与优缺点
Python爬虫基础之爬虫的分类知识总结
pytorch中的numel函数用法说明
May 13 #Python
pytorch损失反向传播后梯度为none的问题
You might like
php实现的遍历文件夹下所有文件,编辑删除
2010/01/05 PHP
为你总结一些php信息函数
2015/10/21 PHP
PhpStorm+xdebug+postman调试技巧分享
2020/09/15 PHP
JQuery通过AJAX从后台获取信息显示在表格上并支持行选中
2015/09/15 Javascript
在原生不支持的旧环境中添加兼容的Object.keys实现方法
2017/09/11 Javascript
基于vue手写tree插件的那点事儿
2019/08/20 Javascript
微信小程序webview与h5通过postMessage实现实时通讯的实现
2019/08/20 Javascript
React传值 组件传值 之间的关系详解
2019/08/26 Javascript
vue调用语音播放的方法
2019/09/27 Javascript
jQuery与原生JavaScript选择HTML元素集合用法对比分析
2019/11/26 jQuery
[08:04]TI4西雅图DOTA2前线报道 海涛探访各路人马
2014/07/09 DOTA
把大数据数字口语化(python与js)两种实现
2013/02/21 Python
Python数据结构之翻转链表
2017/02/25 Python
Python随机生成身份证号码及校验功能
2018/12/04 Python
Pandas统计重复的列里面的值方法
2019/01/30 Python
为何人工智能(AI)首选Python?读完这篇文章你就知道了(推荐)
2019/04/06 Python
python中break、continue 、exit() 、pass终止循环的区别详解
2019/07/08 Python
Python缓存技术实现过程详解
2019/09/25 Python
python第三方库学习笔记
2020/02/07 Python
Python+Kepler.gl轻松制作酷炫路径动画的实现示例
2020/06/02 Python
Python3 webservice接口测试代码详解
2020/06/23 Python
Python如何重新加载模块
2020/07/29 Python
Nike英国官网:Nike.com (UK)
2017/02/13 全球购物
以色列的身体护理及家居香薰品牌:Sabon NYC
2018/02/23 全球购物
大唐面试试题(CPU,UNIX等等)
2012/01/11 面试题
银行实习自我鉴定
2013/10/12 职场文书
教师自我鉴定范文
2013/11/10 职场文书
后勤主管工作职责
2013/12/07 职场文书
中专生求职自荐信范文
2013/12/22 职场文书
学习党课思想汇报
2013/12/29 职场文书
村庄绿化方案
2014/05/07 职场文书
离退休人员聘用协议书
2014/11/24 职场文书
收银员岗位职责
2015/02/03 职场文书
小学一年级语文教学反思
2016/03/03 职场文书
pyqt5蒙版遮罩mask,setmask的使用
2021/06/11 Python
继承Win10缺点!教你关闭Win11烦人的网络搜索
2021/11/23 数码科技