前言
最近我在做js逆向的時候,遇到了我沒法用python實作的代碼,估計就是我太菜了,那我又想實作怎么辦,既然我寫了就說明肯定是有辦法的,今天我要給大家介紹一個第三方庫——pyexecjs,這個庫就能很好的解決我的問題,它可以用python運行JavaScript代碼,
配置環境
node.js
下載地址:
https://nodejs.org/en/download/
選好版本直接下就好了,它會自動加入系統環境的,檢查Node.js版本,出現版本號就說明配置好了,
Pyexecjs
pip install pyexecjs
基本使用
先檢查一下使用的引擎是否為node.js
import execjs
print(execjs.get().name)
運行結果:
Node.js (V8)
運行js代碼
pyexecjs運行js代碼有兩種方法
一、eval()
eval()可以直接執行js代碼
import execjs
print(execjs.eval("a = new Array(1, 2, 3)"))
運行結果:
[1, 2, 3]
二、compile()
代碼量多的話就推薦用這個方法,先將js代碼寫入一個檔案中,需要的時候讀取執行即可,
創建js_text.js檔案,寫入如下代碼:
function a(str) {
return str;
}
python代碼:
import execjs
with open('js_text.js', 'r', encoding='utf-8') as f:
jstext = f.read()
ctx = execjs.compile(jstext)
a = '123456'
result = ctx.call('a', a)
print(result)
運行結果:
123456
先呼叫compile編譯js代碼,再呼叫call方法進行執行,call的第一個引數的js代碼中的函式名,第二個引數是該函式需要的引數(如果有多個引數,直接逗號寫下一個引數即可),
常見的問題
js代碼回傳的字串如果有特殊字符的話可能會出錯,
解決方法就是先將字串進行base64編碼后再回傳,
function a(str) {
return new Buffer(str).toString("base64");
}
有了這個方法你就可以不用重寫代碼了,直接扣js代碼運行即可,扣代碼有時會有些變數未宣告,在js代碼中查找補全即可,幫助你節省腦力,
本文的文字及圖片來源于網路,僅供學習、交流使用,不具有任何商業用途,著作權歸原作者所有,如有問題請及時聯系我們以作處理,
作者:coder 謝公子
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/27467.html
標籤:Python
上一篇:Python全堆疊課程004
