使用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
});
AI 代码解读

将上图文件中的内容全部粘贴到新建文件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))
AI 代码解读

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

node main.js
AI 代码解读

结果如下:

bruce_liu@localhost node模拟 % node main.js 
DG1uMMq1M7OeHhds71HlSMHOoI2tFpWCB4ApP00cVFqptmlFKjFu9RluHo2w3mUw
AI 代码解读

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

目录
打赏
0
2
2
0
220
分享
相关文章
Node.js 是一种基于 Chrome V8 引擎的后端开发技术,以其高效、灵活著称。本文将介绍 Node.js 的基础概念
Node.js 是一种基于 Chrome V8 引擎的后端开发技术,以其高效、灵活著称。本文将介绍 Node.js 的基础概念,包括事件驱动、单线程模型和模块系统;探讨其安装配置、核心模块使用、实战应用如搭建 Web 服务器、文件操作及实时通信;分析项目结构与开发流程,讨论其优势与挑战,并通过案例展示 Node.js 在实际项目中的应用,旨在帮助开发者更好地掌握这一强大工具。
101 1
JavaScript 中通过Array.sort() 实现多字段排序、排序稳定性、随机排序洗牌算法、优化排序性能,JS中排序算法的使用详解(附实际应用代码)
Array.sort() 是一个功能强大的方法,通过自定义的比较函数,可以处理各种复杂的排序逻辑。无论是简单的数字排序,还是多字段、嵌套对象、分组排序等高级应用,Array.sort() 都能胜任。同时,通过性能优化技巧(如映射排序)和结合其他数组方法(如 reduce),Array.sort() 可以用来实现高效的数据处理逻辑。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
JavaWeb JavaScript ③ JS的流程控制和函数
通过本文的详细介绍,您可以深入理解JavaScript的流程控制和函数的使用,进而编写出高效、可维护的代码。
76 32
JavaScript中通过array.filter()实现数组的数据筛选、数据清洗和链式调用,JS中数组过滤器的使用详解(附实际应用代码)
用array.filter()来实现数据筛选、数据清洗和链式调用,相对于for循环更加清晰,语义化强,能显著提升代码的可读性和可维护性。博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
【JavaScript】——JS基础入门常见操作(大量举例)
JS引入方式,JS基础语法,JS增删查改,JS函数,JS对象
springboot解决js前端跨域问题,javascript跨域问题解决
本文介绍了如何在Spring Boot项目中编写Filter过滤器以处理跨域问题,并通过一个示例展示了使用JavaScript进行跨域请求的方法。首先,在Spring Boot应用中添加一个实现了`Filter`接口的类,设置响应头允许所有来源的跨域请求。接着,通过一个简单的HTML页面和jQuery发送AJAX请求到指定URL,验证跨域请求是否成功。文中还提供了请求成功的响应数据样例及请求效果截图。
springboot解决js前端跨域问题,javascript跨域问题解决
Node.js新作《循序渐进Node.js企业级开发实践》简介
《循序渐进Node.js企业级开发实践》由清华大学出版社出版,基于Node.js 22.3.0编写,包含26个实战案例和43个上机练习,旨在帮助读者从基础到进阶全面掌握Node.js技术,适用于初学者、进阶开发者及全栈工程师。
91 9
Moment.js与其他处理时间戳格式差异的JavaScript库相比有什么优势?
Moment.js与其他处理时间戳格式差异的JavaScript库相比有什么优势?

热门文章

最新文章