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的__builtin__模块中的一些要点知识
May 02 Python
Python中统计函数运行耗时的方法
May 05 Python
详解Django中的ifequal和ifnotequal标签使用
Jul 16 Python
详解python3实现的web端json通信协议
Dec 29 Python
Python 数据处理库 pandas进阶教程
Apr 21 Python
python验证码识别教程之灰度处理、二值化、降噪与tesserocr识别
Jun 04 Python
python实现自动获取IP并发送到邮箱
Dec 26 Python
python启动应用程序和终止应用程序的方法
Jun 28 Python
python中什么是面向对象
Jun 11 Python
python 如何停止一个死循环的线程
Nov 24 Python
Python编写万花尺图案实例
Jan 03 Python
python树莓派通过队列实现进程交互的程序分析
Jul 04 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生成图形(Libchart)实例
2013/11/06 PHP
php正则替换处理HTML页面的方法
2015/06/17 PHP
php实现点击可刷新验证码
2015/11/07 PHP
php封装的mongodb操作类代码
2017/08/06 PHP
php 可变函数使用小结
2018/06/12 PHP
jquery实现的导航固定效果
2014/04/28 Javascript
jQuery多项选项卡的实现思路附样式及代码
2014/06/03 Javascript
jQuery插件MixItUp实现动画过滤和排序
2015/04/12 Javascript
js显示文本框提示文字的方法
2015/05/07 Javascript
javascript的列表切换【实现代码】
2016/05/03 Javascript
浅谈js中的三种继承方式及其优缺点
2016/08/10 Javascript
jQuery的Read()方法代替原生JS详解
2016/11/08 Javascript
JavaScript Reflect Metadata实现详解
2019/12/12 Javascript
jQuery实现颜色打字机的完整代码
2020/03/19 jQuery
解决Vue中使用keepAlive不缓存问题
2020/08/04 Javascript
[01:06:30]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第二场 1月9日
2021/03/11 DOTA
Python3搜索及替换文件中文本的方法
2015/05/22 Python
Python smallseg分词用法实例分析
2015/05/28 Python
浅谈python 线程池threadpool之实现
2017/11/17 Python
Python3之读取连接过的网络并定位的方法
2018/04/22 Python
在matplotlib的图中设置中文标签的方法
2018/12/13 Python
TensorFlow基于MNIST数据集实现车牌识别(初步演示版)
2019/08/05 Python
python3 BeautifulSoup模块使用字典的方法抓取a标签内的数据示例
2019/11/28 Python
pygame实现弹球游戏
2020/04/14 Python
Python过滤序列元素的方法
2020/07/31 Python
Python3使用 GitLab API 进行批量合并分支
2020/10/15 Python
顶丰TOPPIK台湾官网:增发纤维假发,告别秃发困扰
2018/06/13 全球购物
网友共享的几个面试题关于Java和Unix等方面的
2016/09/08 面试题
实习生单位鉴定意见
2013/12/04 职场文书
电子商务专业自我鉴定
2013/12/18 职场文书
职业生涯规划怎么写
2013/12/29 职场文书
活动策划求职信模板
2014/04/21 职场文书
2014年社区卫生工作总结
2014/12/18 职场文书
优秀毕业生主要事迹材料
2015/11/04 职场文书
Python可视化学习之seaborn调色盘
2022/02/24 Python
Python中request的基本使用解决乱码问题
2022/04/12 Python