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-iGraph如何绘制贴吧/微博的好友关系图详解
Nov 02 Python
Python实现的微信好友数据分析功能示例
Jun 21 Python
在python中利用最小二乘拟合二次抛物线函数的方法
Dec 29 Python
解决PyCharm控制台输出乱码的问题
Jan 16 Python
树莓派使用python-librtmp实现rtmp推流h264的方法
Jul 22 Python
numpy数组做图片拼接的实现(concatenate、vstack、hstack)
Nov 08 Python
python实现word文档批量转成自定义格式的excel文档的思路及实例代码
Feb 21 Python
python 的numpy库中的mean()函数用法介绍
Mar 03 Python
Python中socket网络通信是干嘛的
May 27 Python
Python实现图片查找轮廓、多边形拟合、最小外接矩形代码
Jul 14 Python
python+django+selenium搭建简易自动化测试
Aug 19 Python
Python 中如何使用 virtualenv 管理虚拟环境
Jan 21 Python
pytorch加载预训练模型与自己模型不匹配的解决方案
May 13 #Python
Python数据分析入门之教你怎么搭建环境
Pytorch 统计模型参数量的操作 param.numel()
May 13 #Python
Python机器学习算法之决策树算法的实现与优缺点
Python爬虫基础之爬虫的分类知识总结
pytorch中的numel函数用法说明
May 13 #Python
pytorch损失反向传播后梯度为none的问题
You might like
用ADODB来让PHP操作ACCESS数据库的方法
2006/12/31 PHP
php修改指定文件后缀的方法
2014/09/11 PHP
PHP调试函数和日志记录函数分享
2015/01/31 PHP
Yii开启片段缓存的方法
2016/03/28 PHP
JavaScript 继承详解(二)
2009/07/13 Javascript
js setattribute批量设置css样式
2009/11/26 Javascript
关于文本框的一些限制控制总结~~
2010/04/15 Javascript
浅析js中2个等号与3个等号的区别
2013/08/06 Javascript
jquery实现metro效果示例代码
2013/09/06 Javascript
Javascript学习笔记之函数篇(五) : 构造函数
2014/11/23 Javascript
理解JavaScript事件对象
2016/01/25 Javascript
js实现按钮控制带有停顿效果的图片滚动
2016/08/30 Javascript
详解微信开发中snsapi_base和snsapi_userinfo及静默授权的实现
2017/03/11 Javascript
详解Angular调试技巧之报错404(not found)
2018/01/31 Javascript
angular2中使用第三方js库的实例
2018/02/26 Javascript
Vue的轮播图组件实现方法
2018/03/03 Javascript
axios对请求各种异常情况处理的封装方法
2018/09/25 Javascript
基于jQuery实现可编辑的表格
2019/12/11 jQuery
VsCode里的Vue模板的实现
2020/08/12 Javascript
Python对小数进行除法运算的正确方法示例
2014/08/25 Python
改进Django中的表单的简单方法
2015/07/17 Python
tensorflow实现图像的裁剪和填充方法
2018/07/27 Python
python 获取sqlite3数据库的表名和表字段名的实例
2019/07/17 Python
Java多线程实现四种方式原理详解
2020/06/02 Python
python 对一幅灰度图像进行直方图均衡化
2020/10/27 Python
HTML5 Canvas绘制五星红旗
2016/05/04 HTML / CSS
全球500多个机场的接送服务:Suntransfers
2019/06/03 全球购物
俄罗斯披萨、寿司和面食送货到家服务:2 Берега
2019/12/15 全球购物
接待员岗位责任制
2014/02/10 职场文书
初中英语演讲稿
2014/04/29 职场文书
2014年党员学习“三严三实”思想汇报
2014/09/15 职场文书
2014小学二年级班主任工作总结
2014/12/05 职场文书
党支部综合考察意见
2015/06/01 职场文书
2019思想汇报范文
2019/05/21 职场文书
职业规划从高考志愿专业选择开始
2019/08/08 职场文书
Android自定义ScrollView实现阻尼回弹
2022/04/01 Java/Android