Python调用 nodejs 执行 javaScript 的 js 代码

前言全局说明


一、环境

1.1 nodejs环境:

https://www.cnblogs.com/wutou/p/18051375

1.2 python 安装运行 nodejs

pip install pyexecjs

二、js代码

文件名:v2.js

function func(arg) {
    return arg + '666';
}

三、使用python自带的方式,命令执行js代码

import os
import subprocess

# 根据自己的操作系统去修改(相当于python的sys.path,加载安装的模块)
# 这不是你的node安装路径,是第三方包安装路径,输入:npm root -g
os.environ["NODE_PATH"] = "/usr/local/lib/node_modules/"

signature = subprocess.getoutput('node v1.js')

四、使用python 第三方模块,执行js代码

方式一:

import execjs
import os

os.environ["NODE_PATH"] = "/usr/local/lib/node_modules/"
with open('v2.js', mode='r', encoding='utf-8') as f:
    js = f.read()

JS = execjs.compile(js)

sign = JS.call("func", "微信")
print(sign) # 微信666

执行js 代码,要先使用 open 命令把代码读入,再交给 nodejs 解释器去运行
JS.call 就可以调用 v2.js 里指定函数func了,后面跟的参数是 "微信"
os.environ["NODE_PATH"] 命令是加载nodejs模块(如果系统环境加了路径,这句话可以不加)。NODE_PATH 指定的第三方模块路径,不是nodejs安装路径。


方式二:

比方式一写的方法简单

import execjs
import os

os.environ["NODE_PATH"] = "/usr/local/lib/node_modules/"
JS = execjs.compile(open('v2.js', mode='r', encoding='utf-8').read())

sign = JS.call("func", "微信")
print(sign) # 微信666


免责声明:本号所涉及内容仅供安全研究与教学使用,如出现其他风险,后果自负。




参考、来源:
课件\006期\沛齐app\day04 头条
"2024-02-28_路飞_大型网站反爬策略揭秘&逆向实战-Day03\苑昊_bandicam 2024-02-29 12-18-21-409.mp4" 01:25:30



posted @ 2024-03-04 11:41  悟透  阅读(499)  评论(0)    收藏  举报