hex2bin()先说这个函数吧,是对例如‘687474703a2f2f’的字符串进行16进制解码。
hex2bin('687474703a2f2f') 相当于 ‘http://’整段代码就是拼装一个url 放在变量var goto_url 里,然后判断 CONDITION ,如果满足条件 CONDITION 则在页面上打印一段提示文案“如果没有自动进入下一页, 请您点击下面的地址”并显示链接地址 goto_url 让用户手工去点。如果不满足上面的条件,自动跳转到 goto_url。
以下分析代码:var params = document.location.search.substr(1).split('&'); 是对当前url的尾巴 “?param1=a¶m2=b¶m3=c”进行第一次解析,“param1=a”“param2=b”“param3=c”以字符串形式存入params数组
for (var i = 0; i < params.length; i++) 这个循环是第二次解析,将params数组解析成 键值对 存入关联数组 url_params。 结果是 url_params.param1 = a; if (url_params.p) 判断关联数组 url_params 的p 键是否存在 作为 CONDITION ,很有可能当前页面的url是这样的形式“http://xxx.com/aaa.html?p=123”现在看 var goto_url = hex2bin('687474703a2f2f')+document.location.hostname+'/';
上面说了 hex2bin('687474703a2f2f') 相当于 ‘http://’ document.location.hostname 是网站域名如果满足条件 CONDITION
继续拼装goto_url
goto_url += 'show/'+hex2bin(url_params.p).replace(/\|/g, '/')+ '.html'
中间将url_params.p中的 ‘|’替换为 '/'如果不满足条件 CONDITION
直接跳转
document.location.href = goto_url;
hex2bin('687474703a2f2f') 相当于 ‘http://’整段代码就是拼装一个url 放在变量var goto_url 里,然后判断 CONDITION ,如果满足条件 CONDITION 则在页面上打印一段提示文案“如果没有自动进入下一页, 请您点击下面的地址”并显示链接地址 goto_url 让用户手工去点。如果不满足上面的条件,自动跳转到 goto_url。
以下分析代码:var params = document.location.search.substr(1).split('&'); 是对当前url的尾巴 “?param1=a¶m2=b¶m3=c”进行第一次解析,“param1=a”“param2=b”“param3=c”以字符串形式存入params数组
for (var i = 0; i < params.length; i++) 这个循环是第二次解析,将params数组解析成 键值对 存入关联数组 url_params。 结果是 url_params.param1 = a; if (url_params.p) 判断关联数组 url_params 的p 键是否存在 作为 CONDITION ,很有可能当前页面的url是这样的形式“http://xxx.com/aaa.html?p=123”现在看 var goto_url = hex2bin('687474703a2f2f')+document.location.hostname+'/';
上面说了 hex2bin('687474703a2f2f') 相当于 ‘http://’ document.location.hostname 是网站域名如果满足条件 CONDITION
继续拼装goto_url
goto_url += 'show/'+hex2bin(url_params.p).replace(/\|/g, '/')+ '.html'
中间将url_params.p中的 ‘|’替换为 '/'如果不满足条件 CONDITION
直接跳转
document.location.href = goto_url;
function hex2bin(str)
{
var ascii = '';
var str_length = str.length;
for (var x = 0; x < str_length; x += 2) //每次取两个字符
{
ascii += String.fromCharCode(parseInt(str.substr(x, 2), 16)); //将Unicode 字符进行转换!
}
return ascii;
}
主要是这个函数吧。先说:
fromCharCode 方法从一些 Unicode 字符值中返回一个字符串。其它的好好没有说的必要。
function hex2bin(str)
{
var ascii = '';
var str_length = str.length;
for (var x = 0; x < str_length; x += 2)
{
ascii += String.fromCharCode(parseInt(str.substr(x, 2), 16));
}
return ascii;
}
----------------------------------------------------------------------
定义功能函数:返回字符串中每个字符对应的Unicode码值;
----------------------------------------------------------------------var url_params = new Array();
var params = document.location.search.substr(1).split('&');
var goto_url = hex2bin('687474703a2f2f')+document.location.hostname+'/';
----------------------------------------------------------------------
功能:定义一个数组,保存用符号“&”分解的WEB页地址栏中问号(?)之后的字符串(这之后数组的内容是
"参数名称=参数值" 的形式),并使用前面定义的功能函数分解指定的字符串,加上本页域地址,构成转向的地址
----------------------------------------------------------------------for (var i = 0; i < params.length; i++)
{
var param = params[i].split('=');
url_params[param[0]] = param[1];
}
----------------------------------------------------------------------
功能:即对数组url_params中每个的内容(前面说的)再用字符等号(=)进行分解,并保存在数组param中,然后再对数组url_params进行改造:用参数名称做标(其实就相当于下标,只不过可能为字母吧),用参数值做内容;
----------------------------------------------------------------------if (url_params.p) //p是什么啊,前面都没有,这模糊了
{
goto_url += hex2bin('73686f772f')+hex2bin(url_params.p).replace(/\|/g, '/')+hex2bin('2e68746d6c');
document.write(' <div style="text-align:center;">如果没有自动进入下一页, 请您点击下面的地址 <br /> <a href="'+ goto_url +'">'+ goto_url +' </a> </div>');
}
document.location.href = goto_url;
----------------------------------------------------------------------
功能:用前面的功能函数hex2bin和正则过滤组建新的URL地址,输出相关提示,并进行转向工作
----------------------------------------------------------------------总的来说,其实就是转向另一个地址而已,只不过可能想隐蔽转向的那个地址(想下为什么 呵呵),所以故意用功能函数hex2bin进行字符的加密工作,反正计算机能识别能工作就是一般人不懂什么意思,给加分不?有点清苦费不呵呵