基本使用:
import execjs
import js2py
un ='''
function sample(x)
{
return func2(x)
}
'''
print(js2py.eval_js(un)("Hi"))
import js2py
js = """
function escramble_758(){
var a,b,c
a='+1 '
b='84-'
a+='425-'
b+='7450'
c='9'
document.write(a+c+b)
}
escramble_758()
""".replace("document.write", "return ")
result = js2py.eval_js(js)
# 第二种:执行js库或代码多,函数多的时候
with open('./get_key.js') as fp:
js = fp.read()
# ctx2 = execjs.compile(js)
context = js2py.EvalJs()
context.execute(js)
vl5x=context.getKey(cookie)
js内部数据向Python代码中传递
gen_guid="""
function createGuid() {
return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
}
var guid1 = createGuid() + createGuid() + "-" + createGuid() + "-" + createGuid() + createGuid() + "-" + createGuid() + createGuid() + createGuid();
"""
context = js2py.EvalJs()
context.execute(gen_guid)
guid=context.guid1 # 将guid1传递到Python中
print guid
编码问题
在js2py执行base64.js的时候,遇到0xe4
‘utf8’ codec can’t decode byte 0xe4 in position 28: invalid continuation byte
使用decode(‘latin1’)解码js
get_docid = js2py.eval_js(DocID_js.decode('latin1'))