爬蟲中會常常碰到JS加密,當咱們找到他加密的JS代碼以後咱們須要獲取它的返回值,python雖然能夠模仿js寫一個python版本的加密,可是這樣有點費時間,也有點費頭髮~node
注意:這塊須要一個執行js的環境,我本地裝的是NodeJSpython
pip install pyexecjsdom
舉一個例子以下:函數
import execjs js = execjs.compile(''' function genpvid() { var a = (new Date).getTime(); var b = "xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx".replace(/[xy]/g, function(b) { var c = (a + 16 * Math.random()) % 16 | 0; return a = Math.floor(a / 16), ("x" == b ? c : 3 & c | 8).toString(16) }); return b }''') result = js.call('genpvid') #call裏面的參數第一個是js函數名稱,若是要執行的js有參數,後面跟上參數就能夠,如js.call('getpvid',2,3)這樣 print(result)
這個的缺點是須要執行JS的環境,若是不想安裝nodejs,能夠試試另外一個庫PyV8/js2py(js2py將 JS 代碼直接轉譯成 Python 代碼)加密