python如何执行js代码

在js逆向的过程中,一般来说思路有两种:

  • 读懂js代码,使用python直接改写js代码(这一种方法对javascript具有很高的要求)

  • 不进行js改写,使用python直接调用js代码(一般来说是使用这种方法进行逆向分析)

看了很多文档,我总结出使用python如何调用js的三种方法,现在一一为大家讲解。

当然:必须先安装 execjs 这个模块,当然你本机还需要安装node.js,js代码的执行是依靠node来进行执行的。

 

pip install  execjs
 第一种方法:

 

#导入相应模块 
import execjs
# 对js代码进行编译 
ctx=execjs.compile(
    """function add(a,b){
    return a+b;}
    """
    #这里说的细一点 如果代码比较长 需要使用 """ """ 例如上面的语句,跨行了
)
# 调用call方法 call是js中的一个函数 
# 参数一:"需要执行的函数名字" 参数:如果有函数的输入值,需要写入 。 如果没有只需要传入函数的名字即可
result = ctx.call("add",1,2)
print(result)

 

这个方法适应与js代码比较简短,一般来说逆向分析,不使用这种方法,一般读入js代码,如下!!! 

第二种方法:

 

#导入模块
import execjs
# open("./js/01.js","r",encoding='utf-8').read() 读取js文件
ctx=execjs.compile(open("./js/01.js","r",encoding='utf-8').read())
result = ctx.call("add",1,2)
print(result)

                         python如何执行js代码_第1张图片

js代码;

function add(a,b){
    return a+b;}

 

我还是比较推荐使用这种方法的,因为在js文件我们可以进行debug和分析,尝试运行等等。

第三种方法:
#这三行代码尽量要写,之前我使用这个方法执行js代码,一直报编码的问题,大家加上这一行就好啦!
import subprocess
from functools import partial
subprocess.Popen = partial(subprocess.Popen, encoding="utf-8")
############################
import execjs
node = execjs.get() # 首先要实例化一个node对象
fp = open('./js/01.js','r',encoding='utf-8')
# 基于node对象进行编译
ctx = node.compile(fp.read())
a = int(input('请输入加数:'))
b=int(input('请输入被加数:'))
funcName1 = 'add({},{})'.format(a, b)
# funcName = 'add(%d,%d)' % (a,b)
# print(funcName1)
result = ctx.eval(funcName1)
print('结果为:',result)

 今天分享就到这里啦,大家再见!

 

你可能感兴趣的:(网络爬虫,javascript,python,爬虫)