當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
Python之调用JS的方式
生活随笔
收集整理的這篇文章主要介紹了
Python之调用JS的方式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、前言
- 日常 Web 端爬蟲過程中,經常會遇到參數被加密的場景,因此,我們需要分析網頁源代碼。通過調式,然后一層一層剝離出關鍵的 JS 代碼,使用 Python 去執行這段代碼,得出參數加密前后的 Python 實現。那么,Python 如何調用 JS 呢?有哪些方式呢?
- 以一段簡單的 JS 腳本為例,其中定義了一個方法計算兩個數的和,將代碼寫入到文件中:
二、PyExecJS
- PyExecJS 是使用最多的一種方式,底層實現方式是本地 JS 環境下運行 JS 代碼,支持的 JS 環境包含:Node.js、PyV8、PhantomJS、Nashorn 等。
- 首先需要安裝依賴包 PyExecJS:
- 然后,從 JS 文件中讀取源碼:
- 最后,使用 execjs 類的compile()方法編譯加載上面的 JS 字符串,返回一個上下文對象:
- 最后,調用上下文對象的 call() 方法執行 JS 方法,其中參數包含:JS 代碼被調的方法名、對應方法的傳入參數:
- 需要注意的,由于 PyExecJS 運行在本地 JS 環境下,使用之前會啟動 JS 環境,最終導致運行速度會偏慢。
- 更多功能,請參考:PyExecJS。
三、Js2Py
- Js2Py 作為一個純 Python 實現的 JS 解釋器,可以完全脫離 JS 環境,直接將 JS 代碼轉換為 Python 代碼。
- 首先安裝依賴庫:
- 然后使用 js2py 中的 EvalJs() 方法生成一個上下文對象:
- 接著利用上下文對象執行 JS 腳本,轉換為 Python 代碼:
- 最后,利用上下文調用 JS 中的方法,并制定輸入參數即可:
- 需要注意是,如果 JS 是很長的混淆代碼,轉換為 Python 的過程可能會報錯。
- 更多功能可以參考:Js2Py。
四、Node.js
- 實際上是使用 Python 的os.popen執行 node 命令,執行 JS 腳本。
- 首先,確保本地已經安裝了 Node.js 環境,修改 JS 腳本,新增一個導出函數 init ,方便內部函數被調用:
- 然后,將調用 JS 方法的命令組成一個字符串:
- 最后,通過 os.popen 執行命令即可:
五、PyV8
- PyV8 是 Google 將 Chrome V8 引擎用 Python 封裝的依賴庫,它不依賴本地 JS 環境,運行速度很快。
- 經過反復測試發現,MAC 和 PC 在 Python3 環境下,使用 PyV8 會報各種奇怪的問題,所以不推薦使用。
- 更多功能可以參考:pyv8-binaries。
總結
以上是生活随笔為你收集整理的Python之调用JS的方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iOS逆向之深入解析如何计算+load方
- 下一篇: gradle idea java ssm