背景表述:工作需要在一个网站上填报数据,数据已经本地 excel 收集好,但是填报只能单项填写,故想用 python 编写小脚本程序批量提交。因工作原因无法放出网址。
1 、每次提交数据前,需要点开一个填表框架,会加载 2 个 JS 代码 NwVqIEYG3ebdApP.js ; crypto-js.min.js
2 、每次提交数据会产生一个值
seKey:e85cacbf856bec1835290aa45b56a8e20fe231a6b056b89df30b858ca83225d4774aa8a4ac069bb7dc003c561f069662
该值由上述两个 js 代码生成,但是 NwVqIEYG3ebdApP.js 是被混淆的无法正常读取,seKey 数据加密方式为 AES ,将代码扒下来后因为混淆无法在本地正常运行,求大佬支招。
但是在部分在线 JS 网站上是可以正常运行
https://jsrun.net/new?mode=black
代码放在这里 https://txtpad.cn/0716demo
1.本地使用 pycharm 专业版,已经安装 nodejs 插件,配置好环境变量,运行别的不加密的 JS 代码可以正常使用。
2.本地运行出现的问题如下
const _0x3d940d = CryptoJS[_0xfdc6('\x30\x78\x65', '\x7a\x65\x6a\x4d')][_0xfdc6('\x30\x78\x31\x35', '\x38\x4e\x6a\x5 d')]'\x70\x61\x72\x73\x65'; TypeError: Cannot read properties of undefined (reading 'Utf8')
本地使用 nodeJS 无法运行上述 js 代码,但是在线的部分网站可以运行,在线 JS 运行时要是标注解释器时 nodeJS 的也无法使用,是不是解释器和该代码冲突,如果是应该换用什么解释器,同时可以用 pycharm 编写后续 post 发包表单数据构造。
1.这种就可以正常运行出结果
2.这种是 nodeJS 的就不能
1 、求助大佬帮忙解答下,小白摸石头过河找不到方向,本地是否应该换另外一种 JS 编译器,是的话应该是什么; 2 、或者其他的解决办法,能在每次提交数据表单时获取到这个 seKey 值,seKey 是实时改变的,应该和时间戳有很大关系,但是源代码混淆了无法阅读。
1
wunonglin 2022-07-17 09:43:35 +08:00
他不是提示找不到 CryptoJS 了吗,引入一个不就好了
|
2
eote 2022-07-17 09:45:50 +08:00
感觉跟 node 没关系,可能漏了一些文件。不想死磕的话可以找个 PhantomJS 类似的包模拟浏览器点击 ( https://github.com/detro/ghostdriver )
|
3
luboyan OP @wunonglin 引入了原代码调用的就是 crypto-js.min.js 这个,现在的问题是我把他们拼接在一起,通过在线的 JS 运行 https://www.dute.org/js-run ;
https://jsrun.net/new?mode=black ;是可以运行得到结果的(不知道这两个运行是用什么解释器), 但是要是在线运行的 js 显示解释器是 nodejs 的就运行出错,弄到本地运行也是一样的出错(本地也是 nodejs ) |
5
404neko 2022-07-17 10:07:46 +08:00
Node 里少了很多东西
比如 document |
7
iqoo 2022-07-17 10:47:18 +08:00
居然敢把网页里的 js 放 node 里跑。换成某些风控脚本直接给你种个马。
|
9
mxT52CRuqR6o5 2022-07-17 11:52:49 +08:00 via Android
直接 headless browser ,不是省心的多
|
10
ysc3839 2022-07-17 22:32:43 +08:00 via Android
环境不一样,JS 语言本身是个沙盒语言,没有什么功能的,浏览器里的 window, document 都是额外扩展的,Node.js 也是额外扩展了。某个脚本依赖浏览器的扩展,你放到没有这个扩展的环境中(比如 Node.js)当然会出问题。另外 Node.js 加的扩展包含许多高权限的操作,可以干很多坏事,并不像浏览器那样是个安全受限的环境,不可信的代码绝对不能在 Node.js 中运行。
|