源地址 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;
}