溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python中怎么執(zhí)行js代碼

發(fā)布時(shí)間:2021-07-24 14:22:28 來源:億速云 閱讀:163 作者:Leah 欄目:編程語言

這篇文章將為大家詳細(xì)講解有關(guān)Python中怎么執(zhí)行js代碼,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

正常代碼

我們現(xiàn)在看一段js代碼,代碼邏輯很簡單,就是拼接時(shí)間返回。

function formatDate(now) {     var now = new Date(1230999938);     var year=now.getFullYear();     var month=now.getMonth()+1;     var date=now.getDate();     var hour=now.getHours();     var minute=now.getMinutes();     var second=now.getSeconds();     return year+"-"+month+"-"+date+" "+hour+":"+minute+":"+second; }

運(yùn)行一下這段代碼,如下圖所示。

Python中怎么執(zhí)行js代碼

混淆代碼

我隨便找了個(gè)在線的js代碼混淆網(wǎng)站。

js代碼

function formatDate(mz1){var KkkGDiH2=new window["\x44\x61\x74\x65"](1230999938);var tsk3=KkkGDiH2['\x67\x65\x74\x46\x75\x6c\x6c\x59\x65\x61\x72']();var YMreyP4=KkkGDiH2['\x67\x65\x74\x4d\x6f\x6e\x74\x68']()+1;var Ozo5=KkkGDiH2['\x67\x65\x74\x44\x61\x74\x65']();var QMYEc$eD6=KkkGDiH2['\x67\x65\x74\x48\x6f\x75\x72\x73']();var JfXVV_Akq7=KkkGDiH2['\x67\x65\x74\x4d\x69\x6e\x75\x74\x65\x73']();var $mP8=KkkGDiH2['\x67\x65\x74\x53\x65\x63\x6f\x6e\x64\x73']();return tsk3+"\x2d"+YMreyP4+"\x2d"+Ozo5+" "+QMYEc$eD6+"\x3a"+JfXVV_Akq7+"\x3a"+$mP8

上面這個(gè)真的不是我瞎寫的,混淆之后就是這樣子的,不信看圖片。

Python中怎么執(zhí)行js代碼

可能我們會(huì)有個(gè)疑問,js代碼都成這玩意了,還能執(zhí)行嗎? 答案是肯定的。即使js代碼非常亂,但還是可以執(zhí)行的,結(jié)果跟上面的是一樣的。

這就造成了一個(gè)問題,我們?cè)谧雠老x時(shí),如果需要,多多少少可能都要研究一下js代碼,然后進(jìn)行js解密一下,但是,但是,要是代碼都混淆成了這了,還怎么解?

一點(diǎn)邏輯都看不通了,基本上不可用Python按照js邏輯重寫出來了...

很巧,小編也是卡在這里...后來我就想,要是Python能執(zhí)行js代碼就好了,不用管函數(shù)里面的邏輯了,只拿函數(shù)返回值就好了。

Python第三方包Execjs

可能是吧,不止我一個(gè)人遇到了這種情況,所以大佬們就開發(fā)出來這種工具包,用于執(zhí)行js代碼。

安裝

在安裝之前,需要有node環(huán)境,這里就不舉栗子了,下一步下一步就好了。

pip3 install PyExecJS

Execjs用法超級(jí)簡單的,幾行代碼。

執(zhí)行js

注:由于上述js代碼會(huì)生成window對(duì)象,并不能直接執(zhí)行成功,需要額外的其他輔助,這里簡單的舉一下其他例子。

正常js代碼

function add(x, y) {    return x + y; }

Python執(zhí)行js代碼

import execjs  ctx = execjs.compile(""" function add(x, y) {   return x + y; } """) print(ctx.call("add", 1, 2))

執(zhí)行結(jié)果如下圖所示:

Python中怎么執(zhí)行js代碼

混淆js代碼

function add(bi1,Pl$2){return bi1+Pl$2}

Python執(zhí)行混淆js代碼

import execjs  ctx = execjs.compile(""" function add(bi1,Pl$2){return bi1+Pl$2} """) print(ctx.call("add", 1, 2))

執(zhí)行結(jié)果如下圖所示:

Python中怎么執(zhí)行js代碼

關(guān)于Python中怎么執(zhí)行js代碼就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI