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网络编程学习笔记(八):XML生成与解析(DOM、ElementTree)
Jun 09 Python
使用Python3中的gettext模块翻译Python源码以支持多语言
Mar 31 Python
Python中模块string.py详解
Mar 12 Python
高质量Python代码编写的5个优化技巧
Nov 16 Python
Python UnboundLocalError和NameError错误根源案例解析
Oct 31 Python
pycharm运行程序时在Python console窗口中运行的方法
Dec 03 Python
Django 多环境配置详解
May 14 Python
python读写csv文件方法详细总结
Jul 05 Python
pytorch实现onehot编码转为普通label标签
Jan 02 Python
Python迭代器Iterable判断方法解析
Mar 16 Python
使用keras时input_shape的维度表示问题说明
Jun 29 Python
ffmpeg+Python实现B站MP4格式音频与视频的合并示例代码
Oct 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
mysql中存储过程、函数的一些问题
2007/02/14 PHP
PHP XML error parsing SOAP payload on line 1
2010/06/17 PHP
LAMP环境使用Composer安装Laravel的方法
2017/03/25 PHP
Gird组件 Part-3:范例RSSFeed Viewer
2007/03/10 Javascript
JavaScript 原型继承
2011/12/26 Javascript
jquery仿搜索自动联想功能代码
2014/05/23 Javascript
js网页右下角提示框实例
2014/10/14 Javascript
jQuery中end()方法用法实例
2015/01/08 Javascript
Three.js学习之几何形状
2016/08/01 Javascript
Ionic项目中Native Camera的使用方法
2017/06/07 Javascript
深入理解Vue 的条件渲染和列表渲染
2017/09/01 Javascript
Node.js中环境变量process.env的一些事详解
2017/10/26 Javascript
angularJs在多个控制器中共享服务数据的方法
2018/09/30 Javascript
利用angular自动编译andriod APK的绕坑经历分享
2019/03/08 Javascript
简单了解Javscript中兄弟ifream的方法调用
2019/06/17 Javascript
[56:46]Liquid vs IG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
初步解析Python下的多进程编程
2015/04/28 Python
Python实现的破解字符串找茬游戏算法示例
2017/09/25 Python
python2 与python3的print区别小结
2018/01/16 Python
python 输入一个数n,求n个数求乘或求和的实例
2018/11/13 Python
django celery redis使用具体实践
2019/04/08 Python
Django中提示消息messages的设置方式
2019/11/15 Python
pandas实现excel中的数据透视表和Vlookup函数功能代码
2020/02/14 Python
python利用google翻译方法实例(翻译字幕文件)
2020/09/21 Python
彻底弄明白CSS3的Media Queries(跨平台设计)
2010/07/27 HTML / CSS
详解html5 canvas 微信海报分享(个人爬坑)
2018/01/12 HTML / CSS
英国领先的酒杯和水晶玻璃器皿制造商:Dartington Crystal
2019/06/23 全球购物
乡镇精神文明建设汇报材料
2014/08/15 职场文书
授权委托书样本
2014/09/25 职场文书
2014年保险公司工作总结
2014/11/22 职场文书
保证金退回承诺函格式
2015/01/21 职场文书
好好学习保证书
2015/02/26 职场文书
初婚未育证明样本
2015/06/18 职场文书
2016教师学习教育法心得体会
2016/01/19 职场文书
一文搞懂redux在react中的初步用法
2021/06/09 Javascript