主頁(yè) > 知識(shí)庫(kù) > python執(zhí)行js代碼的方法

python執(zhí)行js代碼的方法

熱門標(biāo)簽:廣告地圖標(biāo)注app 激戰(zhàn)2地圖標(biāo)注 騰訊外呼線路 唐山智能外呼系統(tǒng)一般多少錢 白銀外呼系統(tǒng) 陜西金融外呼系統(tǒng) 海南400電話如何申請(qǐng) 公司電話機(jī)器人 哈爾濱ai外呼系統(tǒng)定制

什么是js代碼混淆?

正常代碼

我們現(xiàn)在看一段js代碼,代碼邏輯很簡(jiǎn)單,就是拼接時(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)行一下這段代碼,如下圖所示。

混淆代碼

我隨便找了個(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è)真的不是我瞎寫的,混淆之后就是這樣子的,不信看圖片。

可能我們會(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

執(zhí)行js

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

正常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é)果如下圖所示:

混淆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é)果如下圖所示:

可以看到,即使再混淆,只要執(zhí)行的是js代碼,都是沒啥問題的。

上述拼接時(shí)間返回的js混淆代碼也是可以執(zhí)行的,但是它多了一個(gè)window對(duì)象,需要node安裝jsdom才行,由于網(wǎng)絡(luò)設(shè)置有問題,實(shí)在是下載不了舉例子,實(shí)在是抱歉。

或者使用selenium打開游覽器執(zhí)行再返回也行,當(dāng)然,速度更慢。

以上就是python執(zhí)行js代碼的方法的詳細(xì)內(nèi)容,更多關(guān)于python執(zhí)行js代碼的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • Python中json.dumps()函數(shù)的使用解析
  • Python如何把不同類型數(shù)據(jù)的json序列化
  • Python 如何保存json文件并格式化
  • python 調(diào)用js的四種方式
  • Python實(shí)現(xiàn)學(xué)生管理系統(tǒng)的代碼(JSON模塊)
  • Python解析JSON對(duì)象的全過程記錄
  • 使用python把json文件轉(zhuǎn)換為csv文件
  • Python3中對(duì)json格式數(shù)據(jù)的分析處理
  • python實(shí)現(xiàn)xml轉(zhuǎn)json文件的示例代碼
  • 基于telepath庫(kù)實(shí)現(xiàn)Python和JavaScript之間交換數(shù)據(jù)

標(biāo)簽:上海 益陽(yáng) 黑龍江 鷹潭 四川 黔西 常德 惠州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《python執(zhí)行js代碼的方法》,本文關(guān)鍵詞  python,執(zhí)行,代碼,的,方法,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《python執(zhí)行js代碼的方法》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于python執(zhí)行js代碼的方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章