使用Node.js模拟执行JavaScript

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 使用Node.js模拟执行JavaScript

使用Node.js模拟执行JavaScript
模拟执行的是JavaScript,而且依赖的是Node.js,为什么不直接用Node.js来尝试JavaScript的执行呢?其实是完全可行的。

1.准备工作
确保已经正确安装好了Node.js。安装流程可以在小蜜蜂AI网站获取。

2.模拟执行
计算出每位球星所对应的加密字符串,思路是加载Crypto库并执行getToken方法,直接用Node.js实现。

把crypto-js.min.js文件中的内容复制下来,新建一个crypto.js文件并把内容粘贴进去。

获取crypto-js.min.js文件内容,进入示例网站:https://spa7.scrape.center/,打开开发者工具,在Sources选项卡下找到,crypto-js.min.js文件。如下图所示:

image.png

crypto.js文件的内容如下所示,代码太多,仅显示部分:

!function(t, e) {
   
    "object" == typeof exports ? module.exports = exports = e() : "function" == typeof define && define.amd ? define([], e) : t.CryptoJS = e()
}(this, function() {
   
    var h, t, e, r, i, n, f, o, s, c, a, l, d, m, x, b, H, z, A, u, p, _, v, y, g, B, w, k, S, C, D, E, R, M, F, P, W, O, I, U, K, X, L, j, N, T, q, Z, V, G, J, $, Q, Y, tt, et, rt, it, nt, ot, st, ct, at, ht, lt, ft, dt, ut, pt, _t, vt, yt, gt, Bt, wt, kt, St, bt = bt || function(l) {
   
        var t;
        if ("undefined" != typeof window && window.crypto && (t = window.crypto),
        !t && "undefined" != typeof window && window.msCrypto && (t = window.msCrypto),
        !t && "undefined" != typeof global && global.crypto && (t = global.crypto),
        !t && "function" == typeof require)
      .....
      .....
                      }
        }
    },
    bt
});

将上图文件中的内容全部粘贴到新建文件crypto.js文件中。然后新建一个main.js文件,其内容如下:

const CryptoJS = require("./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))

在crypto.js里面声明了导出(exports),导入就是用require实现,导入之后把它赋值给CryptoJS变量,其实它就代表整个CryptoJS加密算法库了,这样就完成了CryptoJS的初始化。因此,后面我们就能调用CryptoJS里面的DES、enc等各个对象的方法进行一些加密和编码操作了。接下来getToken方法其实就是调用CryptoJS里面的各个对象的方法,实现了整个加密流程。最后,传入player对象,然后输出对应的加密字符串即可。运行main.js,命令如下:

node main.js

结果如下:

bruce_liu@localhost node模拟 % node main.js 
DG1uMMq1M7OeHhds71HlSMHOoI2tFpWCB4ApP00cVFqptmlFKjFu9RluHo2w3mUw

这样就成功通过Node.js完成整个JavaScript的模拟过程。

相关文章
|
23天前
|
JavaScript 前端开发 中间件
JS服务端技术—Node.js知识点
本文介绍了Node.js中的几个重要模块,包括NPM、Buffer、fs模块、path模块、express模块、http模块以及mysql模块。每部分不仅提供了基础概念,还推荐了相关博文供深入学习。特别强调了express模块的使用,包括响应相关函数、中间件、Router和请求体数据解析等内容。文章还讨论了静态资源无法访问的问题及其解决方案,并总结了一些通用设置。适合Node.js初学者参考学习。
33 1
|
28天前
|
开发框架 JavaScript 前端开发
Node.js日记:客户端和服务端介绍、Node.js介绍
Node.js日记:客户端和服务端介绍、Node.js介绍
|
1月前
|
JavaScript 前端开发 开发工具
Node.js——初识Node.js
Node.js——初识Node.js
27 4
|
1月前
|
JavaScript 前端开发 持续交付
构建现代Web应用:Vue.js与Node.js的完美结合
【10月更文挑战第22天】随着互联网技术的快速发展,Web应用已经成为了人们日常生活和工作的重要组成部分。前端技术和后端技术的不断创新,为Web应用的构建提供了更多可能。在本篇文章中,我们将探讨Vue.js和Node.js这两大热门技术如何完美结合,构建现代Web应用。
31 4
|
11天前
|
JSON JavaScript 前端开发
使用JavaScript和Node.js构建简单的RESTful API
使用JavaScript和Node.js构建简单的RESTful API
|
2月前
|
消息中间件 JavaScript 前端开发
用于全栈数据流的 JavaScript、Node.js 和 Apache Kafka
用于全栈数据流的 JavaScript、Node.js 和 Apache Kafka
45 1
|
2月前
|
缓存 监控 JavaScript
Node.js中基于node-schedule实现定时任务之详解
Node.js中基于node-schedule实现定时任务之详解
90 0
|
2月前
|
Web App开发 JavaScript 前端开发
Node.js:JavaScript世界的全能工具
Node.js:JavaScript世界的全能工具
|
2月前
|
JSON JavaScript 前端开发
使用JavaScript和Node.js构建简单的RESTful API服务器
【10月更文挑战第12天】使用JavaScript和Node.js构建简单的RESTful API服务器
22 0