import PyV8
ctxt = PyV8.JSContext()
ctxt.enter()
func = ctxt.eval("""
(function(){
function hello(){
return "Hello world.";
}
return hello();
})
""")
print func()
则在python环境中打印出js执行的结果:Hello world.
这里面关于 pyv8的安装是一个问题, 因为py2是支持的, python3就要看版本了, 我是py3.7,我用不了, 那个大神看见了教教我这个小菜鸡也可以啊!!! 上面的就是一个模式,大概就是这么个样式。
来一个实际的例子:
# -*- coding:utf-8 -*-
import PyV8
# 创建一个jsContext对象并进入:
ctxt = PyV8.JSContext()
# ctxt.__enter__()
ctxt.enter()
js_info = """
aesEncrypt = function () {
var hh = 'http://ggzy.gzlps.gov.cn:80/xxgkdt/20497.jhtml';
if (typeof(hh) == 'undefined' || hh == '#') {
return
}
var aa = hh.split("/");
var aaa = aa.length;
var bbb = aa[aaa - 1].split('.');
var ccc = bbb[0];
var cccc = bbb[1];
var r = /^\+?[1-9][0-9]*$/;
var ee = '_blank';
if (r.test(ccc) && cccc.indexOf('jhtml') != -1) {
var srcs = CryptoJS.enc.Utf8.parse(ccc);
var k = CryptoJS.enc.Utf8.parse('qnbyzzwmdgghmcnm');
var en = CryptoJS.AES.encrypt(srcs, k, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
var ddd = en.toString();
ddd = ddd.replace(/\//g, "^");
ddd = ddd.substring(0, ddd.length - 2);
var bbbb = ddd + '.' + bbb[1];
aa[aaa - 1] = bbbb;
var uuu = '';
for (i = 0; i < aaa; i++) {
uuu += aa[i] + '/'
}
uuu = uuu.substring(0, uuu.length - 1);
return uuu
}
}
"""
if __name__ == "__main__":
with open('ase_encryption.js')as f:
a = f.read()
# 然后eval一下想要执行的js的代码,或者包含你需要的js代码的源文件 加载你的js脚本
func = ctxt.eval(a + js_info)
print (func())
ase_encryption.js 是一个js文件, 直接用我们的包加载过来。