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 django集成cas验证系统
Jul 14 Python
python通过定义一个类实例作为ftp回调方法
May 04 Python
Python2.x版本中基本的中文编码问题解决
Oct 12 Python
Python标准模块--ContextManager上下文管理器的具体用法
Nov 27 Python
python使用TensorFlow进行图像处理的方法
Feb 28 Python
Python学习笔记之函数的定义和作用域实例详解
Aug 13 Python
python基础 range的用法解析
Aug 23 Python
python中利用numpy.array()实现俩个数值列表的对应相加方法
Aug 26 Python
pycharm的python_stubs问题
Apr 08 Python
Python 如何查找特定类型文件
Aug 17 Python
anaconda安装pytorch1.7.1和torchvision0.8.2的方法(亲测可用)
Feb 01 Python
python如何读取.mtx文件
Apr 22 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数据库密码的找回的步骤
2011/01/12 PHP
php MessagePack介绍
2013/10/06 PHP
使用GDB调试PHP代码,解决PHP代码死循环问题
2015/03/02 PHP
THINKPHP支持YAML配置文件的设置方法
2015/03/17 PHP
php生成短域名函数
2015/03/23 PHP
php官方微信接口大全(微信支付、微信红包、微信摇一摇、微信小店)
2015/12/21 PHP
JavaScript窗口功能指南之在窗口中书写内容
2006/07/21 Javascript
判断客户端浏览器是否安装了Flash插件的多种方法
2010/08/11 Javascript
js 通用javascript函数库整理
2011/08/14 Javascript
dtree 网页树状菜单及传递对象集合到js内,动态生成节点
2012/04/14 Javascript
js实现运动logo图片效果及运动元素对象sportBox使用方法
2012/12/25 Javascript
javascript标签在页面中的位置探讨
2013/04/11 Javascript
基于jquery实现发送文章到手机的代码
2014/12/26 Javascript
浅谈javascript中基本包装类型
2015/06/03 Javascript
JavaScript闭包_动力节点Java学院整理
2017/06/27 Javascript
Node.js简单入门前传
2017/08/21 Javascript
Vue+iview+webpack ie浏览器兼容简单处理
2019/09/20 Javascript
JavaScript十大取整方法实例教程
2020/12/03 Javascript
wxpython学习笔记(推荐查看)
2014/06/09 Python
python 读入多行数据的实例
2018/04/19 Python
把django中admin后台界面的英文修改为中文显示的方法
2019/07/26 Python
Django 实现xadmin后台菜单改为中文
2019/11/15 Python
python 6.7 编写printTable()函数表格打印(完整代码)
2020/03/25 Python
CSS3让登陆面板3D旋转起来
2016/05/03 HTML / CSS
HTML5实现的震撼3D焦点图动画的示例代码
2019/09/26 HTML / CSS
移动端HTML5开发神器之vconsole详解
2020/12/15 HTML / CSS
Oroton中国官网:澳洲知名奢侈配饰品牌
2017/03/26 全球购物
乔丹诺(Giordano)酒庄德国官网:找到最好的意大利葡萄酒
2017/12/28 全球购物
Crocs欧洲官网:Crocs Europe
2020/01/14 全球购物
Linux Interview Questions For software testers
2013/05/17 面试题
护士思想汇报
2014/01/12 职场文书
大学毕业生推荐信
2014/07/09 职场文书
2015年幼儿园学前班工作总结
2015/05/18 职场文书
高中生军训感言
2015/08/01 职场文书
礼仪培训心得体会
2016/01/22 职场文书
送给火锅店的创意营销方案!
2019/07/08 职场文书