python调用Javascript实践
一、背景知识
1、Node.js
javacript的运行环境有两个:浏览器、node.js
Node.js 是一个开源与跨平台的 JavaScript 运行时环境。 它是一个可用于几乎任何项目的流行工具!
Node.js 在浏览器外运行 V8 JavaScript 引擎(Google Chrome 的内核)。 这使 Node.js 表现得非常出色。
运行js的命令: node app.js
2、npm
npm
是 Node.js 标准的软件包管理器。
在 2017 年 1 月时,npm 仓库中就已有超过 350000 个软件包,这使其成为世界上最大的单一语言代码仓库,并且可以确定几乎有可用于一切的软件包。
安装包的命令:npm install package
3、PyExecJS
一个python库,作用:Run JavaScript code from Python
官方文档 https://pypi.org/project/PyExecJS/
二、实践环节
1、环境准备
(1)pip install PyExecJS
(2)如果运行的js需要外部包,则需要在机器上先安装Node.js和npm(自行百度)
然后命令行npm install 所需的包,注意此步操作默认会在当前目录生成node_modules文件夹,用于存放npm下载的包
2、代码
(1)目录结构
(2)代码
import os
import execjs
os.environ["NODE_PATH"] = os.getcwd()
parser = execjs.compile("""
function parse() {
var cryptico = require("cryptico");
let PassPhrase = new Date + "";
let RSAKey = cryptico.generateRSAKey(PassPhrase, 1024);
let PublicKeyString = cryptico.publicKeyString(RSAKey);
let public_key = new Buffer.from(PublicKeyString, ).toString('base64');
return public_key;
}
function parse1(pwd, challenge) {
var cryptico = require("cryptico");
var GibberishAES = require("./node_modules/gibberish-aes/dist/gibberish-aes-1.0.0.js");
var password = 'admin';
var challenge = challenge;
let PassPhrase = new Date + "";
let RSAKey = cryptico.generateRSAKey(PassPhrase, 1024);
let CipherText = new Buffer.from(challenge, 'base64').toString();
let DecryptionResult = cryptico.decrypt(CipherText, RSAKey);
if (null !== DecryptionResult.plaintext) {
let out = GibberishAES.enc(password, DecryptionResult.plaintext);
let encString = new Buffer.from(out, 'utf-8').toString('base64');
return encString;
}
}
""")
if __name__ == "__main__":
obj = parser.call("parse")
print ("public_key:" + obj)
obj1 = parser.call("parse1", 'admin', 'NjV366/AgZ7tzdpeeR8jBX/jx4+MJJO+yzRZBEKKQBuYVO8eUyIOTUc1eZW9QnCNubTs1/bkUpEAK7Lqy06NWL7GrUfObO8YChZJ6/zMn5fQU3dumtSX6biGt1QP+rcDlzne/9BzYiwiMQ0XCLSCWR7/KgsRrHcecoeWNMGfPAo=')
print ("encString:" + obj1)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具