您好,登錄后才能下訂單哦!
本篇內容主要講解“python如何執行js代碼”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“python如何執行js代碼”吧!
我們現在看一段js代碼,代碼邏輯很簡單,就是拼接時間返回。
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;
}
我隨便找了個在線的js代碼混淆網站。
js代碼
function formatDate(mz1){var KkkGDiH2=new window["x44x61x74x65"](1230999938);var tsk3=KkkGDiH2['x67x65x74x46x75x6cx6cx59x65x61x72']();var YMreyP4=KkkGDiH2['x67x65x74x4dx6fx6ex74x68']()+1;var Ozo5=KkkGDiH2['x67x65x74x44x61x74x65']();var QMYEc$eD6=KkkGDiH2['x67x65x74x48x6fx75x72x73']();var JfXVV_Akq7=KkkGDiH2['x67x65x74x4dx69x6ex75x74x65x73']();var $mP8=KkkGDiH2['x67x65x74x53x65x63x6fx6ex64x73']();return tsk3+"x2d"+YMreyP4+"x2d"+Ozo5+" "+QMYEc$eD6+"x3a"+JfXVV_Akq7+"x3a"+$mP8
上面這個真的不是我瞎寫的,混淆之后就是這樣子的,不信看圖片。
可能我們會有個疑問,js代碼都成這玩意了,還能執行嗎? 答案是肯定的。即使js代碼非常亂,但還是可以執行的,結果跟上面的是一樣的。
這就造成了一個問題,我們在做爬蟲時,如果需要,多多少少可能都要研究一下js代碼,然后進行js解密一下,但是,但是,要是代碼都混淆成了這了,還怎么解?
一點邏輯都看不通了,基本上不可用Python按照js邏輯重寫出來了...
很巧,小編也是卡在這里...后來我就想,要是Python能執行js代碼就好了,不用管函數里面的邏輯了,只拿函數返回值就好了。
可能是吧,不止我一個人遇到了這種情況,所以大佬們就開發出來這種工具包,用于執行js代碼。
在安裝之前,需要有node環境,這里就不舉栗子了,下一步下一步就好了。
pip3 install PyExecJS
注:由于上述js代碼會生成window對象,并不能直接執行成功,需要額外的其他輔助,這里簡單的舉一下其他例子。
正常js代碼
function add(x, y) {
return x + y;
}
Python執行js代碼
import execjs
ctx = execjs.compile("""
function add(x, y) {
return x + y;
}
""")
print(ctx.call("add", 1, 2))
執行結果如下圖所示:
混淆js代碼
function add(bi1,Pl$2){return bi1+Pl$2}
Python執行混淆js代碼
import execjs
ctx = execjs.compile("""
function add(bi1,Pl$2){return bi1+Pl$2}
""")
print(ctx.call("add", 1, 2))
可以看到,即使再混淆,只要執行的是js代碼,都是沒啥問題的。
上述拼接時間返回的js混淆代碼也是可以執行的,但是它多了一個window對象,需要node安裝jsdom才行,由于網絡設置有問題,實在是下載不了舉例子,實在是抱歉。
或者使用selenium打開游覽器執行再返回也行,當然,速度更慢。
到此,相信大家對“python如何執行js代碼”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。