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同时兼容python2和python3的8个技巧分享
Jul 11 Python
python网络编程之读取网站根目录实例
Sep 30 Python
python常用知识梳理(必看篇)
Mar 23 Python
Tensorflow使用tfrecord输入数据格式
Jun 19 Python
Python读取YUV文件,并显示的方法
Dec 04 Python
Python绘制频率分布直方图的示例
Jul 08 Python
Python中的xlrd模块使用原理解析
May 21 Python
python中pandas库中DataFrame对行和列的操作使用方法示例
Jun 14 Python
如何在keras中添加自己的优化器(如adam等)
Jun 19 Python
Python3以GitHub为例来实现模拟登录和爬取的实例讲解
Jul 30 Python
python Matplotlib数据可视化(2):详解三大容器对象与常用设置
Sep 30 Python
python urllib库的使用详解
Apr 13 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 REMOTE_ADDR之获取访客IP的代码
2008/04/22 PHP
PHP漏洞全解(详细介绍)
2012/11/13 PHP
Laravel 5.4.36中session没有保存成功问题的解决
2018/02/19 PHP
PHP PDOStatement::fetchAll讲解
2019/01/31 PHP
Laravel如何创建服务器提供者实例代码
2019/04/15 PHP
RR vs IO BO3 第二场2.13
2021/03/10 DOTA
代码生成器 document.write()
2007/04/15 Javascript
javascript hashtable实现代码
2009/10/13 Javascript
网站页面自动跳转实现方法PHP、JSP(上)
2010/08/01 Javascript
jquery ajax return没有返回值的解决方法
2011/10/20 Javascript
jQuery$命名冲突怎么办如何解决
2014/01/16 Javascript
jquery动态添加删除一行数据示例
2014/06/12 Javascript
js实现当复选框选择匿名登录时隐藏登录框效果
2015/08/14 Javascript
jquery实现的淡入淡出下拉菜单效果
2015/08/25 Javascript
JS实现兼容各种浏览器的高级拖动方法完整实例【测试可用】
2016/06/21 Javascript
浅谈Vue的基本应用
2016/12/27 Javascript
webpack进阶——缓存与独立打包的用法
2017/08/02 Javascript
快速将Vue项目升级到webpack3的方法步骤
2017/09/14 Javascript
基于复选框demo(分享)
2017/09/27 Javascript
使用Angular CLI生成路由的方法
2018/03/24 Javascript
JS实现的透明度渐变动画效果示例
2018/04/28 Javascript
Node.js中文件系统fs模块的使用及常用接口
2020/03/06 Javascript
Python抓取Discuz!用户名脚本代码
2013/12/30 Python
Python 修改列表中的元素方法
2018/06/26 Python
python实现从ftp上下载文件的实例方法
2020/07/19 Python
Python实现哲学家就餐问题实例代码
2020/11/09 Python
Django如何重置migration的几种情景
2021/02/24 Python
Blue Nile台湾:钻石珠宝商,订婚首饰、结婚戒指和精品首饰
2017/11/24 全球购物
Rossignol金鸡美国官网:始于1907年法国百年雪具品牌
2019/03/06 全球购物
What is EJB
2016/07/22 面试题
岗位职责怎么写
2014/03/14 职场文书
关于清明节的演讲稿2015
2015/03/18 职场文书
怎样写观后感
2015/06/19 职场文书
高一数学教学反思
2016/02/18 职场文书
Python GUI编程之tkinter 关于 ttkbootstrap 的使用详解
2022/03/03 Python
Nginx动静分离配置实现与说明
2022/04/07 Servers