阿里滑块验证码版本227破解(4)

亚洲最大电商阿里,为了防扒数据,做出了巨大的努力,越是遮遮掩掩,越要把他的衣服扒光了,与一众兄弟分享。阿里把这个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的字符串。

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
要在Android App中接入HTML5滑块验证,你需要进行以下步骤: 1. 在Android App中嵌入WebView组件用于加载HTML5页面。 2. 在HTML5页面中引入阿里滑块验证码的JS SDK,并初始化验证码。 3. 在Android App中实现WebView的相关回调方法,以便在WebView中与JS交互。 下面是一个简单的实现示例: 1. 在布局文件中添加WebView组件 ``` <WebView android:id="@+id/web_view" android:layout_width="match_parent" android:layout_height="match_parent" /> ``` 2. 在Activity中加载HTML5页面,并初始化验证码 ``` public class MainActivity extends AppCompatActivity { private WebView mWebView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mWebView = findViewById(R.id.web_view); mWebView.getSettings().setJavaScriptEnabled(true); mWebView.setWebViewClient(new WebViewClient() { @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); // 初始化阿里滑块验证SDK view.loadUrl("javascript:window.initSlideVerify()"); } }); mWebView.loadUrl("file:///android_asset/index.html"); } // 与JS交互的回调方法 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && mWebView.canGoBack()) { mWebView.goBack(); return true; } return super.onKeyDown(keyCode, event); } } ``` 3. 在HTML5页面中引入阿里滑块验证码的JS SDK,并初始化验证码 ``` <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>滑块验证Demo</title> <script src="https://g.alicdn.com/sd/slide/0.1.4/slide.min.js"></script> </head> <body> <div id="verify-wrap"></div> <script> window.initSlideVerify = function() { var slideVerify = new SlideVerify('#verify-wrap', { mode: 'pop', vOffset: 5, barSize: { width: '100%', height: '50px' }, ready: function() { console.log('滑块验证组件初始化成功!'); }, success: function() { console.log('滑块验证通过!'); // TODO: 在JS中向Android发送验证通过的消息 } }); }; </script> </body> </html> ``` 这样就可以在Android App中接入HTML5滑块验证了。需要注意的是,在JS中向Android发送消息需要通过WebView的`addJavascriptInterface()`方法实现,具体可参考Android官方文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

novacolas

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值