使用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,一经查实,立即删除!

相关文章

CV2不同图像插值方式的区别

最近邻插值(Nearest-neighbor interpolation,cv2.INTER_NEAREST): 基于最近的像素值进行插值。简单快速,但可能会产生锯齿状的边缘。通常用于图像放大时速度要求较高的情况。 双线性插值(Bilinear interpol…

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文件的处理难度相对低一些。无论企业…

Linux文件和目录管理及文本搜索命令find grep

在Linux操作系统中,“find” 和 “grep” 是两个非常常用的命令,它们在文件和目录管理以及文本搜索方面提供了强大的功能。 首先,让我们来看一下"find"命令。“find"命令用于在文件系统中搜索文件和目录。它可以根据指定的条…

Kafka生产者在Java中的应用

加油&#xff0c;新时代打工人&#xff01; 1、导入Maven Kafka POM依赖 <repositories><repository><id>central</id><url>http://maven.aliyun.com/nexus/content/groups/public//</url><releases><enabled>true</enabl…

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八种工作模式 保护二极管的作用&#xff1a;用来保护IO&#xff0c;一般情况IO的…

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

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

【python读取含有url图片链接的txt文档-3】

如果你需要一个更复杂的解决方案来进行图像数据增强&#xff0c;那么你可以考虑使用imgaug&#xff08;Image Augmentation&#xff09;库。imgaug是一个强大且灵活的图像增强库&#xff0c;它提供了大量的预定义增强方法&#xff0c;并且允许你自定义自己的增强策略。 以下是…

设计模式之命令模式讲解

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

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

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

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

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

Flink KafkaSource 启用动态分区检查

Flink KafkaSource 启用动态分区检查 在不同版本的Flink中&#xff0c;动态分区检查&#xff08;Dynamic Partitions Check&#xff09;启用方式可能会有一些变化。以下是不同版本变化的情况总结&#xff1a; 1. Flink版本< 1.11 分区发现 Flink Kafka Consumer 支持发现动…

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

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

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

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

java中word转为pdf

背景&#xff1a;由于前端vue无法实现复杂的word可视化插件&#xff0c;希望后端做个能将复杂word转为pdf的方案。&#xff08;这里我最终使用的是documents4j&#xff09; java中word转为pdf 经过gpt、网上搜索、以及多方面的考量有以下几种方案。 1.poi原生的转换&#xff…

2024年150道高频Java面试题(二十一)

41. ArrayList 和 LinkedList 的区别是什么&#xff1f; ArrayList 和 LinkedList 都是 Java 中常用的 List 接口的实现&#xff0c;用于存储一系列动态的元素集合。它们之间的主要区别在于数据结构、性能特性、和适用场景。 数据结构&#xff1a; ArrayList 使用动态数组来实…

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

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

CentOS如何做端口映射?

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