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实现汉诺塔方法汇总
Jul 25 Python
Python实现对字符串的加密解密方法示例
Apr 29 Python
python学生信息管理系统
Mar 13 Python
Django基于ORM操作数据库的方法详解
Mar 27 Python
Python基于递归实现电话号码映射功能示例
Apr 13 Python
Python实现识别图片内容的方法分析
Jul 11 Python
在ubuntu16.04中将python3设置为默认的命令写法
Oct 31 Python
使用pyinstaller打包PyQt4程序遇到的问题及解决方法
Jun 24 Python
Django Form 实时从数据库中获取数据的操作方法
Jul 25 Python
python requests证书问题解决
Sep 05 Python
pytorch模型预测结果与ndarray互转方式
Jan 15 Python
aws 通过boto3 python脚本打pach的实现方法
May 10 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 自定义错误处理函数trigger_error()
2013/03/26 PHP
php如何实现只替换一次或N次
2015/10/29 PHP
Symfony2获取web目录绝对路径、相对路径、网址的方法
2016/11/14 PHP
Yii框架数据模型的验证规则rules()被执行的方法
2016/12/02 PHP
php中简单的对称加密算法实现
2017/01/05 PHP
phpinfo()中Loaded Configuration File(none)的解决方法
2017/01/16 PHP
jquery获取当前点击对象的value方法
2014/02/28 Javascript
封装了一个支持匿名函数的Javascript事件监听器
2014/06/05 Javascript
教你用jquery实现iframe自适应高度
2014/06/11 Javascript
js实现iGoogleDivDrag模块拖动层拖动特效的方法
2015/03/04 Javascript
js改变embed标签src值的方法
2015/04/10 Javascript
在JavaScript中处理时间之getHours()方法的使用
2015/06/10 Javascript
用vue和node写的简易购物车实现
2017/04/25 Javascript
vue+iview动态渲染表格详解
2019/03/19 Javascript
如何自动化部署项目?折腾服务器之旅~
2019/04/16 Javascript
小程序实现搜索界面 小程序实现推荐搜索列表效果
2019/05/18 Javascript
js设计模式之单例模式原理与用法详解
2019/08/15 Javascript
JavaScript console的使用方法实例分析
2020/04/28 Javascript
Python合并多个装饰器小技巧
2015/04/28 Python
Python中的super()方法使用简介
2015/08/14 Python
Python SQLite3数据库日期与时间常见函数用法分析
2017/08/14 Python
Django 跨域请求处理的示例代码
2018/05/02 Python
python 重定向获取真实url的方法
2018/05/11 Python
django主动抛出403异常的方法详解
2019/01/04 Python
python 实现查询Neo4j多节点的多层关系
2019/12/23 Python
虚拟环境及venv和virtualenv的区别说明
2021/02/05 Python
Django如何重置migration的几种情景
2021/02/24 Python
Opencv 图片的OCR识别的实战示例
2021/03/02 Python
HTML5 MiranaVideo播放器 (代码开源)
2010/06/11 HTML / CSS
简单的HTML5初步入门教程
2015/09/29 HTML / CSS
英国排名第一的餐具品牌:Denby Pottery
2019/11/01 全球购物
党员对照检查材料思想汇报(党的群众路线)
2014/09/24 职场文书
2015年护士节活动总结
2015/02/10 职场文书
Django Paginator分页器的使用示例
2021/06/23 Python
Python list列表删除元素的4种方法
2021/11/01 Python
搞笑Gif:这么白这么长的腿像极了一楼的女朋友
2022/03/21 杂记