您的位置:首页 > 房产 > 家装 > 使用 Node.js 模拟执行 JavaScript

使用 Node.js 模拟执行 JavaScript

2024/10/6 14:25:50 来源:https://blog.csdn.net/qq_39217312/article/details/141067785  浏览:    关键词:使用 Node.js 模拟执行 JavaScript

准备工作

正确安装好 Node.js  ,安装好之后,能正常使用 node 和 npm 两个命令

模拟执行

关于案例分析

写文章-CSDN创作中心

这里就不做分析了,直接使用

我们的目的是: 使用 node.js 加载 Crypto 库, 并执行 getToken 方法

首先,把 crypto-js.min.js 内容复制下来, 新建一个 crypto.js 文件 并把内容粘贴进去,然后新建一个 main.js 文件

const CryptoJS = require('../Python 执行 JS/crypto')
function getToken(player) {let key = CryptoJS.enc.Utf8.parse("fipFfVsZsTda94hJNKJfLoaqyqMZFFimwLt");const {name, birthday, height, weight} = player;let base64Name = CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(name));let encrypted = CryptoJS.DES.encrypt(`${base64Name}${birthday}${height}${weight}`,key,{mode: CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7,});return encrypted.toString();
}const player = {'name': '凯文-杜兰特','image': 'durant.png','birthday': '1988-09-29','height': '208cm','weight': '108.9KG'
}console.log(getToken(player))

这里我们直接使用 Node.js 中的 require 方法导入 creypto.js 这个文件, 然后将其赋值为 CryptoJS 对象, 这样其实就完成了 CryptoJS 对象的初始化了, 后面我们就可以正常使用 CryptoJS 对象了

运行 main.js 

node main.js

DG1uMMq1M7OeHhds71HlSMHOoI2tFpWCB4ApP00cVFqptmlFKjFu9RluHo2w3mUw

搭建服务

我们现在已经能够使用 Node.js 完成整个加密字符串生成了,但是如果此时我们想用 Python 来编写整个爬虫, 我们可以直接使用 Node.js 把刚才的算法暴露成一个 HTTP 服务,就好了, 这样的话 Python 直接调用 Node.js 暴露的 HTTP 服务, 通过 Request Body 传入对应球员信息, 然后加密字符串通过 HTTP 的 Response 返回即可

Node.js 中最流行的 HTTP 服务框架单数 express 了

安装 : npm i express

然后改写 main.js 内容

const CryptoJS = require('../Python 执行 JS/crypto');
const express = require("express");
const app = express();
const port = 3000
app.use(express.json())
function getToken(player) {let key = CryptoJS.enc.Utf8.parse("fipFfVsZsTda94hJNKJfLoaqyqMZFFimwLt");const {name, birthday, height, weight} = player;let base64Name = CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(name));let encrypted = CryptoJS.DES.encrypt(`${base64Name}${birthday}${height}${weight}`,key,{mode: CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7,});return encrypted.toString();
}app.post("/", (req, res) => {const data = req.bodyres.send(getToken(data));
});
app.listen(port, () => {console.log(`Example app listening on port ${port}!`);
})

这里我们使用 express 编写了一个服务, 它可以接收一个 POST 请求, Request Body 就是球员的信息, 然后返回 getToken 的计算结果作为 Response 的内容

接下来重新运行 main.js 

可以看到,express 就在本地 3000 端口运行了

如果我们想用 Python 调用的话, 直接使用 requests 调用该 API ,然后传入对应的球员数据即可

import requestsdata = {'name': '凯文-杜兰特','image': 'durant.png','birthday': '1988-09-29','height': '208cm','weight': '108.9KG'
}
url = 'http://127.0.0.1:3000'
response = requests.post(url, json=data)
print(response.text)

DG1uMMq1M7OeHhds71HlSMHOoI2tFpWCB4ApP00cVFqptmlFKjFu9RluHo2w3mUw

结果是一样的

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com