使用Node.js模拟执行JavaScript

使用Node.js模拟执行JavaScript

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

  1. 准备工作

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

  1. 模拟执行

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

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

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

Screenshot 2024-04-08 at 10.00.26

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} = playerlet 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的模拟过程。

更多体验可以在[小蜜蜂AI网站][https://zglg.work]获取

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/801441.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Day17_学点JavaEE_转发、重定向、Get、POST、乱码问题总结

1 转发 转发:一般查询了数据之后,转发到一个jsp页面进行展示 req.setAttribute("list", list); req.getRequestDispatcher("student_list.jsp").forward(req, resp);2 重定向 重定向:一般添加、删除、修改之后重定向到…

Flutter如何集成到已有iOS工程上

大家好,我是咕噜铁蛋,今天我将和大家分享一个实用的技术教程——如何将Flutter集成到已有的iOS工程中。Flutter是Google推出的一款开源的移动UI框架,它允许开发者使用Dart语言来开发高性能、美观的原生应用,并支持iOS和Android两大…

Walmart.com DSV XML对接需求

此前的文章Walmart.com DSV EDI对接需求中,为大家介绍了如果选择传输EDI文件需要做的准备与需求。本文将为大家介绍Walmart.com 与DSV(Drop Ship Vender)之间传输XML文件的需求。与EDI相比,XML文件的处理难度相对低一些。无论企业…

stm32GPO的相关操作

GPIO的使用 1.GPIO八种工作模式1.1 上拉输入1.2 下拉输入1.3 浮空输入1.4 模拟输入1.5 推挽输出1.6 开漏输出1.7 复用推挽输出1.8 复用开漏输出 2.相关寄存器2.1 寄存器配置IO 3.相关库函数 1.GPIO八种工作模式 保护二极管的作用:用来保护IO,一般情况IO的…

【Linux】TCP编程{socket/listen/accept/telnet/connect/send}

文章目录 1.TCP接口1.1socket文档 1.2listen拓:端口号8080 1.3accept拓:今天全局函数 1.4读写接口1.5telnet1.一个客户端2.两个客户端 1.6ulimit -a1.7常识回顾1.8connect1.9拓:客户端的ip和地址什么时候被分配?1.10拓&#xff1a…

设计模式之命令模式讲解

概念:命令模式(Command Pattern)又称行动(Action)模式或交易(Transaction)模式。将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请…

数据结构:冒泡排序,快速排序,插入排序

冒泡排序,每次只排一个,像鱼吐泡泡一样,从数组最后开始两两交换,一次只找到一个当前最小的,放到第一个,第二个...位置. T(n)O(n的平方),有序O(n) S(n)O(1) #i…

使用 Spring Boot 和 Maven 引入本地 Jar 包

背景 在 Java 开发中,有时候我们需要引入本地的 Jar 包到项目中,以满足特定的功能需求。本文将以引入 id 生成器为例,介绍如何在 Spring Boot 项目中使用 Maven 管理本地 Jar 包。 准备工作 创建 libs 目录: 在项目根目录下创建…

spring eureka 服务实例实现快速下线快速感知快速刷新配置解析

背景 默认的Spring Eureka服务器,服务提供者和服务调用者配置不够灵敏,总是服务提供者在停掉很久之后,服务调用者很长时间并没有感知到变化。或者是服务已经注册上去了,但是服务调用方很长时间还是调用不到,发现不了这…

pandas,polars,pyspark的df对象常见用法对比

案例背景 最近上班需要处理的都是百万,千万级的数据,pandas的性能已经不够看了(虽然它在处理数据上是真的很好用),公司都是用的polar和pyspark,我最近也学习了一些,然后写篇文章对比一下他们的…

达梦使用disql登录数据库显示“未连接”

基础环境 操作系统:Red Hat Enterprise Linux Server release 7.9 (Maipo) 数据库版本:DM Database Server 64 V8 架构:单实例问题:达梦数据库在使用disql登录时,显示“未连接”。 指定了IP和端口号还是连接异常。 […

CentOS如何做端口映射?

在今天的技术发展中,越来越多的应用需要跨越网络进行远程管理和控制。为了实现这一目标,端口映射技术被广泛应用于各个领域。其中,【天联】作为一种性能稳定、安全可靠的端口映射工具,在各种应用场景中得到了广泛的应用和认可。 结…

python+django+flask+vue贫困地区儿童资助网站22pk7

Python 中存在众多的 Web 开发框架:Flask、Django、Tornado、Webpy、Web2py、Bottle、Pyramid、Zope2 等。近几年较为流行的,大概也就是 Flask 和 Django 了 一开始,本文就对系统内谈到的基本知识,从整体上进行了描述&#xff0c…

SEO优化艺术:精细化技巧揭示与搜索引擎推广全面战略解读

SEO(搜索引擎优化,Search Engine Optimization)是一种网络营销策略,旨在通过改进网站内外的各项元素,提升网站在搜索引擎自然搜索结果中的排名,从而吸引更多目标用户访问网站,增加流量&#xff…

面试算法-154-搜索二维矩阵 II

题目 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性: 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 示例 1: 输入:matrix [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,…

鸿蒙ArkUI声明式学习:【UI资源管理】

OpenHarmony 应用的资源分类和资源的访问以及应用开发使用的像素单位以及各单位之间相互转换的方法。 资源分类 移动端应用开发常用到的资源比如图片,音视频,字符串等都有固定的存放目录,OpenHarmony 把这些应用的资源文件统一放在 resourc…

python+django教师业绩考评考核评分系统flask

在设计过程中,将参照一下国内外的一些同类网站,借鉴下他们的一些布局框架,将课题要求的基本功能合理地组织起来,形成友好、高效的交互过程。开发的具体步骤为:   第一步,进行系统的可行性分析&#xff0c…

java实现TCP交互

服务器端 import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.PriorityQueue; import java.util.Scanner;public class TCP_Serv…

【Leetcode每日一题】 递归 - 二叉树剪枝(难度⭐⭐)(50)

1. 题目解析 题目链接:814. 二叉树剪枝 这个问题的理解其实相当简单,只需看一下示例,基本就能明白其含义了。 2.算法原理 想象一下,你有一堆层层叠叠的积木,你想从底部开始,把那些标记为0的积木拿走。如…

C++奇迹之旅:我与类和对象相遇

文章目录 📝面向过程和面向对象初步认识🌠 类🌉类的引入🌉类的定义 🌠类的访问限定符🌠访问限定符 🌠类的两种定义方式🌉封装 🚩总结 📝面向过程和面向对象初…