JS逆向加密——Python执行JS代码的常用2种方式

JS逆向加密:Python执行JS代码的常用2种方式

个人觉得 node的方式最后用,写到第一种了,可以解决很多依赖问题和环境问题,使用以下同一份JS文件

// js 文件代码
//计算两个数的和
function add(num1, num2) {
    // 只要打印出来 才能获取到 
    console.log(num1 + num2)
    return num1 + num2;
}

add(1,2)

1.   Node.js 

  • 实际上是使用 Python 的os.popen执行 node 命令,执行 JS 脚本时,只能打印出来,读取打印的结果
  • 首先,确保本地已经安装了 Node.js 环境 
  • 修改 JS 脚本,新增一个导出函数 init ,方便内部函数被调用 
# Python 代码
import os

# 打开 命令行 执行 node 
pipeline = os.popen('node ./11.js')

# 必须打印,然后读取打印的结果,不然是没有输出的
print(pipeline.read())

2.  PyExecJS

  • PyExecJS 是使用最多的一种方式,底层 实现方式是: 在本地 JS 环境下运行 JS 代码,使用这种方法必须执行的方法有返回值
    result = js.call('get_token')
  • 支持的 JS 环境包含:Node.js、PyV8、PhantomJS、Nashorn 等
  • 首先,我们需要安装依赖包 PyExecJS (pip intall PyExecJS)
# Python代码,读取同一份JS文件
import execjs
import os

# 读取 js 文件
with open('./11.js') as f:
    Str_code = f.read()
# 加载 JS 代码
js = execjs.compile(Str_code)

# 第一种 执行 JS 方式 
# 直接 JS 的方法 ,使用这种方法必须执行的方法 有返回值
result = js.call('add')
print(result )

# 第二种 执行 JS的方式
# 调用上下文对象的 call()  方法执行 JS 方法
# js.eval('add("{0}", "{1}")').format("1","2")) 参数的方式
result1 = js.eval('add("{0}", "{1}")').format("1","2"))

print(result1)

 

欧力给  !!!

 

你可能感兴趣的:(JS逆向,python,爬虫,JS,python,python执行js,环境配置)