爬虫中会常常碰到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 代码)加密