python3执行js之pyexecjs
执行js的三种方法:
1、阅读js代码,将之转成python
2、找到js代码,用python第三方库执行相关代码 python2-pyv8 python3-pyexecjs
3、用selenium驱动浏览器
pyexecjs
pip install pyexecjs
使用:
import execjs e = execjs.eval('a = new Array(1,2,3)')#获取js环境,直接执行js代码,适用于较简单的运算 c = execjs.compile(''' function add(x,y){ return x+y; }; ''') #加载js代码,使之应用到当前环境 print(e) #[1,2,3] print(c)# <execjs._external_runtime.ExternalRuntime.Context object at 0x000001B84A8AD780> 加载这个函数到环境 print(c.call('add','1','2')) #调用 add函数,参数为'1'和'2'
如果使用python执行js代码,注意不能出现和页面有交互的代码
执行js文件
with open ('1.js',encoding='utf-8') as f: js_data = f.read() c = execjs.compile(js_data) code = "add('{}','{}')".format(x,y) #add是文件中的某个函数,x y是传入的参数 c.eval(code)
案例:爬取落网单曲
分析:
落网单曲中的歌曲是个MP3文件,每次打开在<audio>标签中播放,但是在源代码中,找不到mp3文件的链接。
每次切换歌曲,<audio>标签中的src会变化,指向不同的地址。所以我们猜测歌曲的src是由JS生成,而且每次切歌,都会触发JS事件得到新的src。我们在audio标签打上一个断点
每当src变化时就会暂停,我们可以进而查看JS。
我们知道切歌时执行的是什么代码了,现在要得到所有的歌曲链接,我们可以在右边的调用栈里逐条分析。一般jq文件不需要关心。
经过分析,我们大概知道:每次切歌,代码会把当前需要播放的歌曲的编号传给一个函数。函数接收到编号之后,就在播放列表里播放相应歌曲。所以我们的目的是得到播放列表。
像上面这样,里面由所有歌曲信息,但是调用它的是this对象,this在js里面相当于python中的self,一般用于函数里面当作对象本身。也就是说,谁触发这个函数就是谁,并没有直接定义,所以这种也不能算找到生成列表的JS代码。
像这样luooPlayer.playlist里面有所有歌曲信息,我们就知道,歌曲信息是存在luooPlayer对象中的playlist属性里,我们就在这个JS文件中搜索luooPlayer对象
我们发现playlist定义在luooPlayer对象之前,并且作为一个参数传进来而生成luooPlayer对象,所以我们接着搜索playlist的定义,发现就在前几行。
var playlist = GibberishAES.dec(pl, $.luoo.cfg.aes))
pl和$.luoo.cfg.aes的值在源文件中可以搜到是一串固定的字符串,我们直接调用这个函数,然后把这两个参数传进去即可。现在我们的难题是得到这个函数,这个时候,我们可以在这个定义playlist的地方打上一个断点,然后用单步进入的方式,得到函数代码!
复制出JS代码,然后逐步分析,若有调用其他函数和变量,就单步进入或搜索,直至这个N函数能正常执行。
代码:
import execjs import json pl = "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" aes = 'b6ce159334e155d8' with open ('luowang.js',encoding='utf-8') as f: code = f.read() ctx = execjs.compile(code) c = "N('{}','{}')".format(pl,aes) data = json.loads(ctx.eval(c)) for i in data: print(i['mp3'])
luowang.js文件:
var N = function(a, b, c) { var d = decode(a) , e = d.slice(8, 16) , f = m(j(b, c), e) , g = f.key , h = f.iv; d = d.slice(16, d.length), a = o(d, g, h, c) return d,a }; decode = function(b) { var a ="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; var c, d = [], e = [], f = []; for (c = 0; b.length > c; c += 4) e[0] = a.indexOf(b.charAt(c)), e[1] = a.indexOf(b.charAt(c + 1)), e[2] = a.indexOf(b.charAt(c + 2)), e[3] = a.indexOf(b.charAt(c + 3)), f[0] = e[0] << 2 | e[1] >> 4, f[1] = (15 & e[1]) << 4 | e[2] >> 2, f[2] = (3 & e[2]) << 6 | e[3], d.push(f[0], f[1], f[2]); d = d.slice(0, d.length - d.length % 16) return d }; var j = function(a, b) { var c, e = []; for (b || (a = d(a)), c = 0; a.length > c; c++) e[c] = a.charCodeAt(c); return e }; var d = function(a) { try { return unescape(encodeURIComponent(a)) } catch (b) { throw "Error on UTF-8 encode" } }; var e = function(a) { try { return decodeURIComponent(escape(a)) } catch (b) { throw "Bad Key" } }; var m = function(c, d) { var a = 14, b = 8; var e, f = a >= 12 ? 3 : 2, g = [], h = [], i = [], j = [], k = c.concat(d); for (i[0] = O(k), j = i[0], e = 1; f > e; e++) i[e] = O(i[e - 1].concat(k)), j = j.concat(i[e]); return g = j.slice(0, 4 * b), h = j.slice(4 * b, 4 * b + 16), { key: g, iv: h } }; var O = function(a) { function b(a, b) { return a << b | a >>> 32 - b } function c(a, b) { var c, d, e, f, g; return e = 2147483648 & a, f = 2147483648 & b, c = 1073741824 & a, d = 1073741824 & b, g = (1073741823 & a) + (1073741823 & b), c & d ? 2147483648 ^ g ^ e ^ f : c | d ? 1073741824 & g ? 3221225472 ^ g ^ e ^ f : 1073741824 ^ g ^ e ^ f : g ^ e ^ f } function d(a, b, c) { return a & b | ~a & c } function e(a, b, c) { return a & c | b & ~c } function f(a, b, c) { return a ^ b ^ c } function g(a, b, c) { return b ^ (a | ~c) } function h(a, e, f, g, h, i, j) { return a = c(a, c(c(d(e, f, g), h), j)), c(b(a, i), e) } function i(a, d, f, g, h, i, j) { return a = c(a, c(c(e(d, f, g), h), j)), c(b(a, i), d) } function j(a, d, e, g, h, i, j) { return a = c(a, c(c(f(d, e, g), h), j)), c(b(a, i), d) } function k(a, d, e, f, h, i, j) { return a = c(a, c(c(g(d, e, f), h), j)), c(b(a, i), d) } function l(a) { for (var b, c = a.length, d = c + 8, e = (d - d % 64) / 64, f = 16 * (e + 1), g = [], h = 0, i = 0; c > i; ) b = (i - i % 4) / 4, h = 8 * (i % 4), g[b] = g[b] | a[i] << h, i++; return b = (i - i % 4) / 4, h = 8 * (i % 4), g[b] = g[b] | 128 << h, g[f - 2] = c << 3, g[f - 1] = c >>> 29, g } function m(a) { var b, c, d = []; for (c = 0; 3 >= c; c++) b = 255 & a >>> 8 * c, d = d.concat(b); return d } var n, o, p, q, r, s, t, u, v, w = [], x = z("67452301efcdab8998badcfe10325476d76aa478e8c7b756242070dbc1bdceeef57c0faf4787c62aa8304613fd469501698098d88b44f7afffff5bb1895cd7be6b901122fd987193a679438e49b40821f61e2562c040b340265e5a51e9b6c7aad62f105d02441453d8a1e681e7d3fbc821e1cde6c33707d6f4d50d87455a14eda9e3e905fcefa3f8676f02d98d2a4c8afffa39428771f6816d9d6122fde5380ca4beea444bdecfa9f6bb4b60bebfbc70289b7ec6eaa127fad4ef308504881d05d9d4d039e6db99e51fa27cf8c4ac5665f4292244432aff97ab9423a7fc93a039655b59c38f0ccc92ffeff47d85845dd16fa87e4ffe2ce6e0a30143144e0811a1f7537e82bd3af2352ad7d2bbeb86d391", 8); for (w = l(a), s = x[0], t = x[1], u = x[2], v = x[3], n = 0; w.length > n; n += 16) o = s, p = t, q = u, r = v, s = h(s, t, u, v, w[n + 0], 7, x[4]), v = h(v, s, t, u, w[n + 1], 12, x[5]), u = h(u, v, s, t, w[n + 2], 17, x[6]), t = h(t, u, v, s, w[n + 3], 22, x[7]), s = h(s, t, u, v, w[n + 4], 7, x[8]), v = h(v, s, t, u, w[n + 5], 12, x[9]), u = h(u, v, s, t, w[n + 6], 17, x[10]), t = h(t, u, v, s, w[n + 7], 22, x[11]), s = h(s, t, u, v, w[n + 8], 7, x[12]), v = h(v, s, t, u, w[n + 9], 12, x[13]), u = h(u, v, s, t, w[n + 10], 17, x[14]), t = h(t, u, v, s, w[n + 11], 22, x[15]), s = h(s, t, u, v, w[n + 12], 7, x[16]), v = h(v, s, t, u, w[n + 13], 12, x[17]), u = h(u, v, s, t, w[n + 14], 17, x[18]), t = h(t, u, v, s, w[n + 15], 22, x[19]), s = i(s, t, u, v, w[n + 1], 5, x[20]), v = i(v, s, t, u, w[n + 6], 9, x[21]), u = i(u, v, s, t, w[n + 11], 14, x[22]), t = i(t, u, v, s, w[n + 0], 20, x[23]), s = i(s, t, u, v, w[n + 5], 5, x[24]), v = i(v, s, t, u, w[n + 10], 9, x[25]), u = i(u, v, s, t, w[n + 15], 14, x[26]), t = i(t, u, v, s, w[n + 4], 20, x[27]), s = i(s, t, u, v, w[n + 9], 5, x[28]), v = i(v, s, t, u, w[n + 14], 9, x[29]), u = i(u, v, s, t, w[n + 3], 14, x[30]), t = i(t, u, v, s, w[n + 8], 20, x[31]), s = i(s, t, u, v, w[n + 13], 5, x[32]), v = i(v, s, t, u, w[n + 2], 9, x[33]), u = i(u, v, s, t, w[n + 7], 14, x[34]), t = i(t, u, v, s, w[n + 12], 20, x[35]), s = j(s, t, u, v, w[n + 5], 4, x[36]), v = j(v, s, t, u, w[n + 8], 11, x[37]), u = j(u, v, s, t, w[n + 11], 16, x[38]), t = j(t, u, v, s, w[n + 14], 23, x[39]), s = j(s, t, u, v, w[n + 1], 4, x[40]), v = j(v, s, t, u, w[n + 4], 11, x[41]), u = j(u, v, s, t, w[n + 7], 16, x[42]), t = j(t, u, v, s, w[n + 10], 23, x[43]), s = j(s, t, u, v, w[n + 13], 4, x[44]), v = j(v, s, t, u, w[n + 0], 11, x[45]), u = j(u, v, s, t, w[n + 3], 16, x[46]), t = j(t, u, v, s, w[n + 6], 23, x[47]), s = j(s, t, u, v, w[n + 9], 4, x[48]), v = j(v, s, t, u, w[n + 12], 11, x[49]), u = j(u, v, s, t, w[n + 15], 16, x[50]), t = j(t, u, v, s, w[n + 2], 23, x[51]), s = k(s, t, u, v, w[n + 0], 6, x[52]), v = k(v, s, t, u, w[n + 7], 10, x[53]), u = k(u, v, s, t, w[n + 14], 15, x[54]), t = k(t, u, v, s, w[n + 5], 21, x[55]), s = k(s, t, u, v, w[n + 12], 6, x[56]), v = k(v, s, t, u, w[n + 3], 10, x[57]), u = k(u, v, s, t, w[n + 10], 15, x[58]), t = k(t, u, v, s, w[n + 1], 21, x[59]), s = k(s, t, u, v, w[n + 8], 6, x[60]), v = k(v, s, t, u, w[n + 15], 10, x[61]), u = k(u, v, s, t, w[n + 6], 15, x[62]), t = k(t, u, v, s, w[n + 13], 21, x[63]), s = k(s, t, u, v, w[n + 4], 6, x[64]), v = k(v, s, t, u, w[n + 11], 10, x[65]), u = k(u, v, s, t, w[n + 2], 15, x[66]), t = k(t, u, v, s, w[n + 9], 21, x[67]), s = c(s, o), t = c(t, p), u = c(u, q), v = c(v, r); return m(s).concat(m(t), m(u), m(v)) }; var x = function(a) { for (var b = 0; 4 > b; b++) a[b] = D[a[b]]; return a }; var y = function(a) { var b, c = a[0]; for (b = 0; 4 > b; b++) a[b] = a[b + 1]; return a[3] = c, a }; var z = function(a, b) { var c, d = []; for (c = 0; a.length > c; c += b) d[c / b] = parseInt(a.substr(c, b), 16); return d }; var F = z("01020408102040801b366cd8ab4d9a2f5ebc63c697356ad4b37dfaefc591", 2); var D = z("637c777bf26b6fc53001672bfed7ab76ca82c97dfa5947f0add4a2af9ca472c0b7fd9326363ff7cc34a5e5f171d8311504c723c31896059a071280e2eb27b27509832c1a1b6e5aa0523bd6b329e32f8453d100ed20fcb15b6acbbe394a4c58cfd0efaafb434d338545f9027f503c9fa851a3408f929d38f5bcb6da2110fff3d2cd0c13ec5f974417c4a77e3d645d197360814fdc222a908846eeb814de5e0bdbe0323a0a4906245cc2d3ac629195e479e7c8376d8dd54ea96c56f4ea657aae08ba78252e1ca6b4c6e8dd741f4bbd8b8a703eb5664803f60e613557b986c11d9ee1f8981169d98e949b1e87e9ce5528df8ca1890dbfe6426841992d0fb054bb16", 2); var o = function(a, b, c, d) { b = w(b); var f, h = a.length / 16, i = [], j = [], k = ""; for (f = 0; h > f; f++) i.push(a.slice(16 * f, 16 * (f + 1))); for (f = i.length - 1; f >= 0; f--) j[f] = q(i[f], b), j[f] = 0 === f ? v(j[f], c) : v(j[f], i[f - 1]); for (f = 0; h - 1 > f; f++) k += g(j[f]); return k += g(j[f], !0), d ? k : e(k) }; var v = function(a, b) { var c, d = []; for (c = 0; 16 > c; c++) d[c] = a[c] ^ b[c]; return d }; var w = function(c) { var a = 14, b = 8; var d, e, f, g, h = [], i = [], j = []; for (d = 0; b > d; d++) e = [c[4 * d], c[4 * d + 1], c[4 * d + 2], c[4 * d + 3]], h[d] = e; for (d = b; 4 * (a + 1) > d; d++) { for (h[d] = [], f = 0; 4 > f; f++) i[f] = h[d - 1][f]; for (0 === d % b ? (i = x(y(i)), i[0] ^= F[d / b - 1]) : b > 6 && 4 === d % b && (i = x(i)), f = 0; 4 > f; f++) h[d][f] = h[d - b][f] ^ i[f] } for (d = 0; a + 1 > d; d++) for (j[d] = [], g = 0; 4 > g; g++) j[d].push(h[4 * d + g][0], h[4 * d + g][1], h[4 * d + g][2], h[4 * d + g][3]); return j }; var c = !1; var q = function(b, d) { var a = 14; c = !0; var e, f = u(b, d, a); for (e = a - 1; e > -1; e--) f = s(f), f = r(f), f = u(f, d, e), e > 0 && (f = t(f)); return f }, u = function(a, b, c) { var d, e = []; for (d = 0; 16 > d; d++) e[d] = a[d] ^ b[c][d]; return e }, s = function(a) { var b, d = [], e = c ? [0, 13, 10, 7, 4, 1, 14, 11, 8, 5, 2, 15, 12, 9, 6, 3] : [0, 5, 10, 15, 4, 9, 14, 3, 8, 13, 2, 7, 12, 1, 6, 11]; for (b = 0; 16 > b; b++) d[b] = a[e[b]]; return d },r = function(a) { var b, d = c ? E : D, e = []; for (b = 0; 16 > b; b++) e[b] = d[a[b]]; return e }, t = function(a) { var b, d = []; if (c) for (b = 0; 4 > b; b++) d[4 * b] = L[a[4 * b]] ^ J[a[1 + 4 * b]] ^ K[a[2 + 4 * b]] ^ I[a[3 + 4 * b]], d[1 + 4 * b] = I[a[4 * b]] ^ L[a[1 + 4 * b]] ^ J[a[2 + 4 * b]] ^ K[a[3 + 4 * b]], d[2 + 4 * b] = K[a[4 * b]] ^ I[a[1 + 4 * b]] ^ L[a[2 + 4 * b]] ^ J[a[3 + 4 * b]], d[3 + 4 * b] = J[a[4 * b]] ^ K[a[1 + 4 * b]] ^ I[a[2 + 4 * b]] ^ L[a[3 + 4 * b]]; else for (b = 0; 4 > b; b++) d[4 * b] = G[a[4 * b]] ^ H[a[1 + 4 * b]] ^ a[2 + 4 * b] ^ a[3 + 4 * b], d[1 + 4 * b] = a[4 * b] ^ G[a[1 + 4 * b]] ^ H[a[2 + 4 * b]] ^ a[3 + 4 * b], d[2 + 4 * b] = a[4 * b] ^ a[1 + 4 * b] ^ G[a[2 + 4 * b]] ^ H[a[3 + 4 * b]], d[3 + 4 * b] = H[a[4 * b]] ^ a[1 + 4 * b] ^ a[2 + 4 * b] ^ G[a[3 + 4 * b]]; return d },g = function(a, b) { var c, d, e = ""; if (b) { if (c = a[15], c > 16) throw "Decryption error: Maybe bad key"; if (16 === c) return ""; for (d = 0; 16 - c > d; d++) e += String.fromCharCode(a[d]) } else for (d = 0; 16 > d; d++) e += String.fromCharCode(a[d]); return e }; var A = function(a) { var b, c = []; for (b = 0; a.length > b; b++) c[a[b]] = b; return c }; var B = function(a, b) { var c, d; for (d = 0, c = 0; 8 > c; c++) d = 1 === (1 & b) ? d ^ a : d, a = a > 127 ? 283 ^ a << 1 : a << 1, b >>>= 1; return d }; var C = function(a) { var b, c = []; for (b = 0; 256 > b; b++) c[b] = B(a, b); return c }; var E = A(D); var G = C(2) , H = C(3) , I = C(9) , J = C(11) , K = C(13) , L = C(14);
执行结果:
http://mp3-cdn2.luoo.net/low/chinese/20171129.mp3
http://mp3-cdn2.luoo.net/low/chinese/20171127.mp3
http://mp3-cdn2.luoo.net/low/chinese/20171124.mp3
http://mp3-cdn2.luoo.net/low/chinese/20171123.mp3
http://mp3-cdn2.luoo.net/low/chinese/20171122.mp3
http://mp3-cdn2.luoo.net/low/chinese/20171121.mp3
http://mp3-cdn2.luoo.net/low/chinese/20171119.mp3