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 相关文章推荐
RC4文件加密的python实现方法
Jun 30 Python
python实现将英文单词表示的数字转换成阿拉伯数字的方法
Jul 02 Python
Python实现的查询mysql数据库并通过邮件发送信息功能
May 17 Python
django2+uwsgi+nginx上线部署到服务器Ubuntu16.04
Jun 26 Python
django admin后台添加导出excel功能示例代码
May 15 Python
python实时检测键盘输入函数的示例
Jul 17 Python
Python 画出来六维图
Jul 26 Python
Win 10下Anaconda虚拟环境的教程
May 18 Python
Python通过类的组合模拟街道红绿灯
Sep 16 Python
弄清Pytorch显存的分配机制
Dec 10 Python
Python实现Kerberos用户的增删改查操作
Dec 14 Python
python神经网络ResNet50模型
May 06 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面向对象三大特点学习(充分理解抽象、封装、继承、多态)
2012/05/07 PHP
PHP dirname简单使用代码实例
2020/11/13 PHP
通过JAVASCRIPT读取ASP设定的COOKIE
2006/11/24 Javascript
js时间戳格式化成日期格式的多种方法
2013/11/11 Javascript
用jquery写的菜单从左往右滑动出现
2014/04/11 Javascript
JavaScript获得当前网页来源页面(即上一页)的方法
2015/04/03 Javascript
在Javascript中处理字符串之big()方法的使用
2015/06/08 Javascript
jQuery实现鼠标经过时高亮,同时其他同级元素变暗的效果
2016/09/18 Javascript
总结Javascript中数组各种去重的方法
2016/10/04 Javascript
AngularJS自定义服务与fliter的混合使用
2016/11/24 Javascript
JavaScript三种绑定事件方式及相互之间的区别分析
2017/01/10 Javascript
BootStrapTable 单选及取值的实现方法
2017/01/10 Javascript
JavaScript实现前端分页控件
2017/04/19 Javascript
详解Vue-Cli 异步加载数据的一些注意点
2017/08/12 Javascript
浅谈React中的元素、组件、实例和节点
2018/02/27 Javascript
nodejs遍历文件夹下并操作HTML/CSS/JS/PNG/JPG的方法
2018/11/01 NodeJs
使用weixin-java-miniapp配置进行单个小程序的配置详解
2019/03/29 Javascript
解决vant框架做H5时踩过的坑(下拉刷新、上拉加载等)
2020/11/11 Javascript
Python中SOAP项目的介绍及其在web开发中的应用
2015/04/14 Python
Django实战之用户认证(用户登录与注销)
2018/07/16 Python
Python编程深度学习计算库之numpy
2018/12/28 Python
opencv设置采集视频分辨率方式
2019/12/10 Python
python单例设计模式实现解析
2020/01/07 Python
python turtle工具绘制四叶草的实例分享
2020/02/14 Python
python代码如何注释
2020/06/01 Python
利用python控制Autocad:pyautocad方式
2020/06/01 Python
Python如何爬取51cto数据并存入MySQL
2020/08/25 Python
html5指南-6.如何创建离线web应用程序实现离线访问
2013/01/07 HTML / CSS
TIME时代杂志台湾总代理:台时亚洲
2018/10/22 全球购物
EJB与JAVA BEAN的区别
2016/08/29 面试题
AJAX都有哪些有点和缺点
2012/11/03 面试题
幼师岗位求职简历的自荐信格式
2013/09/21 职场文书
预备党员表决心书
2014/03/11 职场文书
2014最新版群众路线四风整改措施
2014/09/24 职场文书
会议欢迎词
2015/01/23 职场文书
MySQL 慢查询日志深入理解
2021/04/22 MySQL