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
浙公网安备 33010602011771号