亚洲最大电商阿里,为了防扒数据,做出了巨大的努力,越是遮遮掩掩,越要把他的衣服扒光了,与一众兄弟分享。阿里把这个fireyejs.js混淆到变态级别了,这种混淆具有两面性,混淆到这种程度,矛盾的另外方面开始起作用了。这样的混淆造成了整个函数运行的规律化,可以在这个js文件的i函数开始和 switch (31 & li)之间做很多工作,例如把每一步运行的变量保存下来存储到文件中慢慢研究。
item = {};
item["code"] = "";
if (typeof (o) != 'undefined') item['o'] = o;
if (typeof (li) != 'undefined') item['li'] = li;
if (typeof (p) != 'undefined') item['p'] = p;
if (typeof (C) != 'undefined') item['C'] = C;
if (typeof (f) != 'undefined') item['f'] = f;
if (typeof (m) != 'undefined') item['m'] = m;
if (typeof (b) != 'undefined') item['b'] = b;
if (typeof (S) != 'undefined') item['S'] = S;
if (typeof (A) != 'undefined') item['A'] = A;
if (typeof (j) != 'undefined') item['j'] = j;
if (typeof (k) != 'undefined') item['k'] = k;
if (typeof (x) != 'undefined') item['x'] = x;
if (typeof (O) != 'undefined') item['O'] = O;
if (typeof (w) != 'undefined') item['w'] = w;
if (typeof (y) != 'undefined') item['y'] = y;
if (typeof (E) != 'undefined') item['E'] = E;
if (typeof ($) != 'undefined') item['$'] = $;
if (typeof (R) != 'undefined') item['R'] = R;
if (typeof (T) != 'undefined') item['T'] = T;
if (typeof (M) != 'undefined') item['M'] = M;
if (typeof (L) != 'undefined') item['L'] = L;
if (typeof (B) != 'undefined') item['B'] = B;
if (typeof (P) != 'undefined') item['P'] = P;
if (typeof (_) != 'undefined') item['_'] = _;
if (typeof (I) != 'undefined') item['I'] = I;
if (typeof (N) != 'undefined') item['N'] = N;
if (typeof (D) != 'undefined') item['D'] = D;
if (typeof (U) != 'undefined') item['U'] = U;
if (typeof (z) != 'undefined') item['z'] = z;
if (typeof (W) != 'undefined') item['W'] = W;
if (typeof (H) != 'undefined') item['H'] = H;
if (typeof (F) != 'undefined') item['F'] = F;
if (typeof (G) != 'undefined') item['G'] = G;
if (typeof (V) != 'undefined') item['V'] = V;
if (typeof (X) != 'undefined') item['X'] = X;
if (typeof (q) != 'undefined') item['q'] = q;
if (typeof (K) != 'undefined') item['K'] = K;
if (typeof (J) != 'undefined') item['J'] = J;
if (typeof (Y) != 'undefined') item['Y'] = Y;
if (typeof (Z) != 'undefined') item['Z'] = Z;
if (typeof (Q) != 'undefined') item['Q'] = Q;
if (typeof (ee) != 'undefined') item['ee'] = ee;
if (typeof (oe) != 'undefined') item['oe'] = oe;
if (typeof (ie) != 'undefined') item['ie'] = ie;
if (typeof (te) != 'undefined') item['te'] = te;
if (typeof (re) != 'undefined') item['re'] = re;
if (typeof (ne) != 'undefined') item['ne'] = ne;
if (typeof (se) != 'undefined') item['se'] = se;
if (typeof (ae) != 'undefined') item['ae'] = ae;
if (typeof (he) != 'undefined') item['he'] = he;
if (typeof (de) != 'undefined') item['de'] = de;
if (typeof (ce) != 'undefined') item['ce'] = ce;
if (typeof (pe) != 'undefined') item['pe'] = pe;
if (typeof (ve) != 'undefined') item['ve'] = ve;
if (typeof (le) != 'undefined') item['le'] = le;
if (typeof (ue) != 'undefined') item['ue'] = ue;
if (typeof (ge) != 'undefined') item['ge'] = ge;
if (typeof (Ce) != 'undefined') item['Ce'] = Ce;
if (typeof (fe) != 'undefined') item['fe'] = fe;
if (typeof (me) != 'undefined') item['me'] = me;
if (typeof (be) != 'undefined') item['be'] = be;
if (typeof (Se) != 'undefined') item['Se'] = Se;
if (typeof (Ae) != 'undefined') item['Ae'] = Ae;
if (typeof (je) != 'undefined') item['je'] = je;
if (typeof (ke) != 'undefined') item['ke'] = ke;
if (typeof (xe) != 'undefined') item['xe'] = xe;
if (typeof (Oe) != 'undefined') item['Oe'] = Oe;
if (typeof (we) != 'undefined') item['we'] = we;
if (typeof (ye) != 'undefined') item['ye'] = ye;
if (typeof (Ee) != 'undefined') item['Ee'] = Ee;
if (typeof ($e) != 'undefined') item['$e'] = $e;
if (typeof (Re) != 'undefined') item['Re'] = Re;
if (typeof (Te) != 'undefined') item['Te'] = Te;
if (typeof (Me) != 'undefined') item['Me'] = Me;
if (typeof (Le) != 'undefined') item['Le'] = Le;
if (typeof (Be) != 'undefined') item['Be'] = Be;
if (typeof (Pe) != 'undefined') item['Pe'] = Pe;
if (typeof (_e) != 'undefined') item['_e'] = _e;
if (typeof (Ie) != 'undefined') item['Ie'] = Ie;
if (typeof (Ne) != 'undefined') item['Ne'] = Ne;
if (typeof (De) != 'undefined') item['De'] = De;
if (typeof (Ue) != 'undefined') item['Ue'] = Ue;
if (typeof (ze) != 'undefined') item['ze'] = ze;
if (typeof (We) != 'undefined') item['We'] = We;
if (typeof (He) != 'undefined') item['He'] = He;
if (typeof (Fe) != 'undefined') item['Fe'] = Fe;
if (typeof (Ge) != 'undefined') item['Ge'] = Ge;
if (typeof (Ve) != 'undefined') item['Ve'] = Ve;
if (typeof (Xe) != 'undefined') item['Xe'] = Xe;
if (typeof (qe) != 'undefined') item['qe'] = qe;
if (typeof (Ke) != 'undefined') item['Ke'] = Ke;
if (typeof (Je) != 'undefined') item['Je'] = Je;
if (typeof (Ye) != 'undefined') item['Ye'] = Ye;
if (typeof (Ze) != 'undefined') item['Ze'] = Ze;
o2.push(item);
pro();
再写一个保存文件的函数
function save(data,filename) {
if (data.length <= 0) return;
var dataString = JSON.stringify(data);
var blob = new Blob([dataString], { type: 'text/plain' });
var url = URL.createObjectURL(blob);
var a = document.createElement('a');
a.href = url;
a.download = filename;
this.document.head.appendChild(a);
a.click();
}
一次验证需要li运行5万次以上,所以直接存储会导致文件过大,可以考虑把字符串放进一个集合中,每个字符串只出现一次,相同的字符串指向相同的指针,可以大大减轻保存变量时的资源消耗。
下面是变量“p>”后面的数字就是指向字符串集合的指针,40就是字符串集合顺序号为40的字符串。