背景说明: 我们有些时候接到的单子,并不是都没有反爬,有些网站是有反爬取策略的,比如我们在请求接口的时候,发现返回结果是加密数据,该如何处理呢?今天介绍一种通过调试js进行数据逆向解析,就是常说的扣js。通过这篇文章会让你知道扣js的过程。
目标网址: https://www.qimingpian.cn/finosda/project/pinvestment
页面分析: 通过图文的介绍方式,一步一步的告诉你页面分析的过程。
代码实现: code_js.js function o (e, t, i, n, a, o ) { var s, c, r, l, d, u, h, p, f, m, v, g, y, b, C = new Array (16843776 ,0 ,65536 ,16843780 ,16842756 ,66564 ,4 ,65536 ,1024 ,16843776 ,16843780 ,1024 ,16778244 ,16842756 ,16777216 ,4 ,1028 ,16778240 ,16778240 ,66560 ,66560 ,16842752 ,16842752 ,16778244 ,65540 ,16777220 ,16777220 ,65540 ,0 ,1028 ,66564 ,16777216 ,65536 ,16843780 ,4 ,16842752 ,16843776 ,16777216 ,16777216 ,1024 ,16842756 ,65536 ,66560 ,16777220 ,1024 ,4 ,16778244 ,66564 ,16843780
,65540 ,16842752 ,16778244 ,16777220 ,1028 ,66564 ,16843776 ,1028 ,16778240 ,16778240 ,0 ,65540 ,66560 ,0 ,16842756 ), _ = new Array (-2146402272 ,-2147450880 ,32768 ,1081376 ,1048576 ,32 ,-2146435040 ,-2147450848 ,-2147483616 ,-2146402272 ,-2146402304 ,-2147483648 ,-2147450880 ,1048576 ,32 ,-2146435040 ,1081344 ,1048608 ,-2147450848 ,0 ,-2147483648 ,32768 ,1081376 ,-2146435072 ,1048608 ,-2147483616 ,0 ,1081344 ,32800 ,-2146402304 ,-2146435072 ,32800 ,0 ,1081376 ,-2146435040 ,1048576 ,-2147450848 ,-2146435072 ,-2146402304 ,32768 ,-2146435072 ,-2147450880 ,32 ,-2146402272 ,1081376 ,32 ,32768 ,-2147483648 ,32800 ,-2146402304 ,1048576 ,-2147483616 ,1048608 ,-2147450848 ,-2147483616 ,1048608 ,1081344 ,0 ,-2147450880 ,32800 ,-2147483648 ,-2146435040 ,-2146402272 ,1081344 ), w = new Array (520 ,134349312 ,0 ,134348808 ,134218240 ,0 ,131592 ,134218240 ,131080 ,134217736 ,134217736 ,131072 ,134349320 ,131080 ,134348800 ,520 ,134217728 ,8 ,134349312 ,512 ,131584 ,134348800 ,134348808 ,131592 ,134218248 ,131584 ,131072 ,134218248 ,8 ,134349320 ,512 ,134217728 ,134349312 ,134217728 ,131080 ,520 ,131072 ,134349312 ,134218240 ,0 ,512 ,131080 ,134349320 ,134218240 ,134217736 ,512 ,0 ,134348808 ,134218248 ,131072 ,134217728 ,134349320 ,8 ,131592 ,131584 ,134217736 ,134348800 ,134218248 ,520 ,134348800 ,131592 ,8 ,134348808 ,131584 ), k = new Array (8396801 ,8321 ,8321 ,128 ,8396928 ,8388737 ,8388609 ,8193 ,0 ,8396800
,8396800 ,8396929 ,129 ,0 ,8388736 ,8388609 ,1 ,8192 ,8388608 ,8396801 ,128 ,8388608 ,8193 ,8320 ,8388737 ,1 ,8320 ,8388736 ,8192 ,8396928 ,8396929 ,129 ,8388736 ,8388609 ,8396800 ,8396929 ,129 ,0 ,0 ,8396800 ,8320 ,8388736 ,8388737 ,1 ,8396801 ,8321 ,8321 ,128 ,8396929 ,129 ,1 ,8192 ,8388609 ,8193 ,8396928 ,8388737 ,8193 ,8320 ,8388608 ,8396801 ,128 ,8388608 ,8192 ,8396928 ), x = new Array (256 ,34078976 ,34078720 ,1107296512 ,524288 ,256 ,1073741824 ,34078720 ,1074266368 ,524288 ,33554688 ,1074266368 ,1107296512 ,1107820544 ,524544 ,1073741824 ,33554432 ,1074266112 ,1074266112 ,0 ,1073742080 ,1107820800 ,1107820800 ,33554688 ,1107820544 ,1073742080 ,0 ,1107296256 ,34078976 ,33554432 ,1107296256 ,524544 ,524288 ,1107296512 ,256 ,33554432 ,1073741824 ,34078720 ,1107296512 ,1074266368 ,33554688 ,1073741824 ,1107820544 ,34078976 ,1074266368 ,256 ,33554432 ,1107820544 ,1107820800 ,524544 ,1107296256 ,1107820800 ,34078720 ,0 ,1074266112 ,1107296256 ,524544 ,33554688 ,1073742080 ,524288 ,0 ,1074266112 ,34078976 ,1073742080 ), T = new Array (536870928 ,541065216 ,16384 ,541081616 ,541065216 ,16 ,541081616 ,4194304 ,536887296 ,4210704 ,4194304 ,536870928 ,4194320 ,536887296 ,536870912 ,16400 ,0 ,4194320 ,536887312 ,16384 ,4210688 ,536887312 ,16 ,541065232 ,541065232 ,0 ,4210704 ,541081600 ,16400 ,4210688 ,541081600 ,536870912 ,536887296 ,16 ,541065232 ,4210688 ,541081616
,4194304 ,16400 ,536870928 ,4194304 ,536887296 ,536870912 ,16400 ,536870928 ,541081616 ,4210688 ,541065216 ,4210704 ,541081600 ,0 ,541065232 ,16 ,16384 ,541065216 ,4210704 ,16384 ,4194320 ,536887312 ,0 ,541081600 ,536870912 ,4194320 ,536887312 ), $ = new Array (2097152 ,69206018 ,67110914 ,0 ,2048 ,67110914 ,2099202 ,69208064 ,69208066 ,2097152 ,0 ,67108866 ,2 ,67108864 ,69206018 ,2050 ,67110912 ,2099202 ,2097154 ,67110912 ,67108866 ,69206016 ,69208064 ,2097154 ,69206016 ,2048 ,2050 ,69208066 ,2099200 ,2 ,67108864 ,2099200 ,67108864 ,2099200 ,2097152 ,67110914 ,67110914 ,69206018 ,69206018 ,2 ,2097154 ,67108864 ,67110912 ,2097152 ,69208064 ,2050 ,2099202 ,69208064 ,2050 ,67108866 ,69208066 ,69206016 ,2099200 ,0 ,2 ,69208066 ,0 ,2099202 ,69206016 ,2048 ,67108866 ,67110912 ,2048 ,2097154 ), N = new Array (268439616 ,4096 ,262144 ,268701760 ,268435456 ,268439616 ,64 ,268435456 ,262208 ,268697600 ,268701760 ,266240 ,268701696 ,266304 ,4096 ,64 ,268697600 ,268435520 ,268439552 ,4160 ,266240 ,262208 ,268697664 ,268701696 ,4160 ,0 ,0 ,268697664 ,268435520 ,268439552 ,266304 ,262144 ,266304 ,262144 ,268701696 ,4096 ,64 ,268697664 ,4096 ,266304 ,268439552 ,64 ,268435520 ,268697600 ,268697664 ,268435456 ,262144 ,268439616 ,0 ,268701760 ,262208 ,268435520 ,268697600 ,268439552 ,268439616 ,0 ,268701760 ,266240 ,266240 ,4160 ,4160 ,262208 ,268435456 ,268701696 ), A =
function (e ) { for (var t, i, n, a = new Array (0 ,4 ,536870912 ,536870916 ,65536 ,65540 ,536936448 ,536936452 ,512 ,516 ,536871424 ,536871428 ,66048 ,66052 ,536936960 ,536936964 ), o = new Array (0 ,1 ,1048576 ,1048577 ,67108864 ,67108865 ,68157440 ,68157441 ,256 ,257 ,1048832 ,1048833 ,67109120 ,67109121 ,68157696 ,68157697 ), s = new Array (0 ,8 ,2048 ,2056 ,16777216 ,16777224 ,16779264 ,16779272 ,0 ,8 ,2048 ,2056 ,16777216 ,16777224 ,16779264 ,16779272 ), c = new Array (0 ,2097152 ,134217728 ,136314880 ,8192 ,2105344 ,134225920 ,136323072 ,131072 ,2228224 ,134348800 ,136445952 ,139264 ,2236416 ,134356992 ,136454144 ), r = new Array (0 ,262144 ,16 ,262160 ,0 ,262144 ,16 ,262160 ,4096 ,266240 ,4112 ,266256 ,4096 ,266240 ,4112 ,266256 ), l = new Array (0 ,1024 ,32 ,1056 ,0 ,1024 ,32 ,1056 ,33554432 ,33555456 ,33554464 ,33555488 ,33554432 ,33555456 ,33554464 ,33555488 ), d = new Array (0 ,268435456 ,524288 ,268959744 ,2 ,268435458 ,524290 ,268959746 ,0 ,268435456 ,524288 ,268959744 ,2 ,268435458 ,524290 ,268959746 ), u = new Array (0 ,65536 ,2048 ,67584 ,536870912 ,536936448 ,536872960 ,536938496 ,131072 ,196608 ,133120 ,198656 ,537001984 ,537067520 ,537004032 ,537069568 ), h = new Array (0 ,262144 ,0 ,262144 ,2 ,262146 ,2 ,262146 ,33554432 ,33816576 ,33554432
,33816576 ,33554434 ,33816578 ,33554434 ,33816578 ), p = new Array (0 ,268435456 ,8 ,268435464 ,0 ,268435456 ,8 ,268435464 ,1024 ,268436480 ,1032 ,268436488 ,1024 ,268436480 ,1032 ,268436488 ), f = new Array (0 ,32 ,0 ,32 ,1048576 ,1048608 ,1048576 ,1048608 ,8192 ,8224 ,8192 ,8224 ,1056768 ,1056800 ,1056768 ,1056800 ), m = new Array (0 ,16777216 ,512 ,16777728 ,2097152 ,18874368 ,2097664 ,18874880 ,67108864 ,83886080 ,67109376 ,83886592 ,69206016 ,85983232 ,69206528 ,85983744 ), v = new Array (0 ,4096 ,134217728 ,134221824 ,524288 ,528384 ,134742016 ,134746112 ,16 ,4112 ,134217744 ,134221840 ,524304 ,528400 ,134742032 ,134746128 ), g = new Array (0 ,4 ,256 ,260 ,0 ,4 ,256 ,260 ,1 ,5 ,257 ,261 ,1 ,5 ,257 ,261 ), y = e.length > 8 ? 3 : 1 , b = new Array (32 * y), C = new Array (0 ,0 ,1 ,1 ,1 ,1 ,1 ,1 ,0 ,1 ,1 ,1 ,1 ,1 ,1 ,0 ), _ = 0 , w = 0 , k = 0 ; k var x = e.charCodeAt(_++) <24 | e.charCodeAt(_++) <16 | e.charCodeAt(_++) <8 | e.charCodeAt(_++) , T = e.charCodeAt(_++) <24 | e.charCodeAt(_++) <16 | e.charCodeAt(_++) <8 | e.charCodeAt(_++); x ^= (n = 252645135 & (x >>> 4 ^ T)) <4, x ^= n = 65535 & ((T ^= n) >>> -16 ^ x), x ^= (n = 858993459 & (x >>> 2 ^ (T ^= n x ^= n = 65535 & ((T ^= n) >>> -16 ^ x), x ^= (n = 1431655765 & (x >>> 1 ^ (T ^= n x ^= n = 16711935 & ((T ^= n) >>> 8 ^ x), n = (x ^= (n = 1431655765 & (x >>> 1 ^ (T ^= n <8))) <1) <8 | (T ^= n) >>> 20 & 240 , x = T <24 | T <8 & 16711680 | T >>> 8 & 65280 | T >>> 24 & 240 , T = n; for (var $ = 0 ; $ C[$] ? (x = x <2 | x >>> 26 , T = T <2 | T >>> 26
) : (x = x <1 | x >>> 27 , T = T <1 | T >>> 27 ), T &= -15 , t = a[(x &= -15 ) >>> 28 ] | o[x >>> 24 & 15 ] | s[x >>> 20 & 15 ] | c[x >>> 16 & 15 ] | r[x >>> 12 & 15 ] | l[x >>> 8 & 15 ] | d[x >>> 4 & 15 ], i = u[T >>> 28 ] | h[T >>> 24 & 15 ] | p[T >>> 20 & 15 ] | f[T >>> 16 & 15 ] | m[T >>> 12 & 15 ] | v[T >>> 8 & 15 ] | g[T >>> 4 & 15 ], n = 65535 & (i >>> 16 ^ t), b[w++] = t ^ n, b[w++] = i ^ n <16 } return b }(e), L = 0 , S = t.length, z = 0 , B = 32 == A.length ? 3 : 9 ; p = 3 == B ? i ? new Array (0 ,32 ,2 ) : new Array (30 ,-2 ,-2 ) : i ? new Array (0 ,32 ,2 ,62 ,30 ,-2 ,64 ,96 ,2 ) : new Array (94 ,62 ,-2 ,32 ,64 ,2 ,30 ,-2 ,-2 ), 2 == o ? t += " " : 1 == o ? i && (r = 8 - S % 8 , t += String .fromCharCode(r, r, r, r, r, r, r, r), 8 === r && (S += 8 )) : o || (t += "\0\0\0\0\0\0\0\0" ); var F = "" , I = "" ; for (1 == n && (f = a.charCodeAt(L++) <24 | a.charCodeAt(L++) <16 | a.charCodeAt(L++) <8 | a.charCodeAt(L++), v = a.charCodeAt(L++) <24 | a.charCodeAt(L++) <16 | a.charCodeAt(L++) <8 | a.charCodeAt(L++), L = 0 ); L for (u = t.charCodeAt(L++) <24 | t.charCodeAt(L++) <16 | t.charCodeAt(L++) <8 | t.charCodeAt(L++), h = t.charCodeAt(L++) <24 | t.charCodeAt(L++) <16 | t.charCodeAt(L++) <8 | t.charCodeAt(L++), 1 == n && (i ? (u ^= f, h ^= v) : (m = f, g = v, f = u, v = h)), u ^= (r = 252645135 & (u >>> 4 ^ h)) <4, u ^= (r = 65535 & (u >>> 16 ^ (h ^= r))) <16, u ^= r = 858993459 & ((h ^= r) >>> 2 ^ u), u ^= r = 16711935 & ((h ^= r <2) >>> 8 ^ u), u = (u ^= (r = 1431655765 & (u >>> 1 ^ (h ^= r <8))) <1) <1 | u >>> 31 , h = (h ^= r) <1 | h >>> 31 , c = 0 ; c 3) { for (y = p[c + 1 ], b = p[c + 2 ], s = p[c]; s != y; s += b) l = h ^ A[s], d = (h >>> 4 | h <28) ^ A[s + 1 ], r = u, u = h, h = r ^ (_[l >>> 24 & 63 ] | k[l >>> 16 & 63 ] | T[l >>> 8 & 63 ] | N[63 & l] | C[d >>> 24 & 63 ] | w[d >>> 16 & 63 ] | x[d >>> 8 & 63 ] | $[63 & d]); r = u, u = h, h = r } h = h >>> 1 | h <31, h ^= r = 1431655765 & ((u = u >>> 1 | u <31) >>> 1 ^ h), h ^= (r = 16711935 & (h >>> 8
^ (u ^= r <1))) <8, h ^= (r = 858993459 & (h >>> 2 ^ (u ^= r))) <2, h ^= r = 65535 & ((u ^= r) >>> 16 ^ h), h ^= r = 252645135 & ((u ^= r <16) >>> 4 ^ h), u ^= r <4, 1 == n && (i ? (f = u, v = h) : (u ^= m, h ^= g)), I += String .fromCharCode(u >>> 24 , u >>> 16 & 255 , u >>> 8 & 255 , 255 & u, h >>> 24 , h >>> 16 & 255 , h >>> 8 & 255 , 255 & h), 512 == (z += 8 ) && (F += I, I = "" , z = 0 ) } if (F = (F += I).replace(/\0*$/g , "" ), !i) { if (1 === o) { var j = 0 ; (S = F.length) && (j = F.charCodeAt(S - 1 )), j <= 8 && (F = F.substring(0 , S - j)) } F = decodeURIComponent (escape (F)) } return F }function decode1 (t ) { var f = /[\t\n\f\r ]/g var c = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' var e = (t = String (t).replace(f, "" )).length; e % 4 == 0 && (e = (t = t.replace(/==?$/ , "" )).length), (e % 4 == 1 || /[^+a-zA-Z0-9/]/ .test(t)) && l("Invalid character: the string to be decoded is not correctly encoded." ); for (var n, r, i = 0 , o = "" , a = -1 ; ++a r = c.indexOf(t.charAt(a)), n = i % 4 ? 64 * n + r : r, i++ % 4 && (o += String .fromCharCode(255 & n >> (-2 * i & 6 ))); return o }function s (e ) { return o("5e5062e82f15fe4ca9d24bc5" , decode1(e), 0 , 0 , "012345677890123" , 1 ) }// // 加密的数据 也是就是e
// data = "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" // // 调用 s函数,尝试看下结果 // console.log(s(data))
代码.py # -- coding: utf-8 -- # @Time : 2022 /7 /8 20 :22 # @Author : 小牛刀 # @File : 代码.py # @Software: PyCharmimport requestsimport jsonimport execjs
from jsonpath import jsonpath header = { "User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36" } data = { "time_interval" : "" , "tag" : "" , "tag_type" : "" , "province" : "" , "lunci" : "" , "page" : 1 , "num" : 20 , "unionid" : "" , } url = 'https://vipapi.qimingpian.cn/DataList/productListVip' res = requests.post(url, headers=header, data=data).text # print(res) result = json.loads(res) data = result['encrypt_data' ] # print(data)with open('./code_js.js' , 'r' , encoding='utf-8' ) as f: js_code = f.read() # compile 调用文件,call 调用js的函数 s js_result = execjs.compile(js_code).call('s' , data) # print(js_result) json_data = json.loads(js_result) # print(json_data) # 数据提取 product_list = jsonpath(json_data, "$..product" ) icon_list = jsonpath(json_data, "$..icon" ) yewu_list = jsonpath(json_data, "$..yewu" ) print(product_list,icon_list,yewu_list)
总结: 通过这个小案例,可以了解数据在加密的情况下怎么确定数据接口,可以了解js调试的过程,从而也可以知道怎么处理类似这样的单子,其实数据取数据不难,关键是怎样解密数据。