阿里巴巴 ua.js分析記錄


源地址 http://acjs.aliyun.com/actionlog/js/ua.js

最近阿里很多地方post表單都加了ua.js動態生成post值 造成部分需求無法實現了 至於為什么要破這個 就不說了 都懂的

 

首先是function um(is, x, hw) 這個通過傳入一些字符串以及兩個坐標值 的到一些函數名稱  比i如 um('veocnCdRUebImoCCpenoRnty', 4, 1) 計算后就是 'encodeURIComponent'

簡化后的代碼如下

 function um(is, x, hw) {
        var h2 = x + hw;
        var u = "";
        var k4 = "";
        is = is.substr(1, is.length - 2);
        is = is.split("").reverse().join(""); //把字符串倒序排列
        var v = is.length;
        for (var hv =0; hv < v; ++hv) {
            if (hv % h2 == h2 - 1) {
                u = is.substr(v - hv - 1, h2);
                u = u.charAt(h2 - 1) + u.substr(1, h2 - 2) + u.charAt(0);
                u = u.substr(0, x);
                k4 = k4 + u;
            }
        }
        var wr = v % h2;
        if (wr != 0) {
            u = is.substr(0, wr);
            if (u.length != 1) {
                u = u.charAt(wr - 1) + u.substr(1, wr - 2) + u.charAt(0);
            }
            u = u.substr(0, x);
            k4 = k4 + u;
        }

        return k4;

    };

 c# 解析

               public static string um(string str, int x, int hw)
        {
            var h2 = x + hw;
            var u = "";
            var k4 = "";
            str = str.Substring(1, str.Length - 2);
            char[] arr = str.ToCharArray();
            Array.Reverse(arr);
            str = new string(arr);
            var v = str.Length;
            for (var hv = 0; hv < v; ++hv)
            {
                if (hv % h2 == h2 - 1)
                {
                    u = str.Substring(v - hv - 1, h2);
                    u = u[h2 - 1] + u.Substring(1, h2 - 2) + u[0];
                    u = u.Substring(0, x);
                    k4 = k4 + u;
                }
            }

            var wr = v % h2;
            if (wr != 0) {
                u = str.Substring(0, wr);
                if (u.Length!= 1) {
                    u = u[wr - 1] + u.Substring(1, wr - 2) + u[0];
                }
                if (x < u.Length)
                {
                    u = u.Substring(0, x);
                }
                
                k4 = k4 + u;
            }
            return k4;
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM