JS URL加密方法原理解析及自定义域名替换指引
两段URL加密代码的原理与自定义替换方法
一、加密/解密工作原理
这两段代码逻辑完全一致,只是变量名不同,本质是简单的字符编码偏移转换,算不上严格的加密,工作流程如下:
- 变量
uu/uu2是一串连续的4位数字组合,每4位对应真实URL中一个字符的ASCII码值加1000后的结果 - 循环里每次截取4位数字,转成整数后减去1000,还原出原字符的ASCII码
- 通过
String.fromCharCode()把ASCII码转回对应字符,最后将所有字符拼接得到真实URL - 注意:代码开头定义的
_/_2变量(比如https://google.com)完全没用,最后会被解密后的URL覆盖掉
举个直观例子:uu的前4位是1104,计算1104-1000=104,ASCII码104对应的字符是h,正好是真实URLhttps://google.com的第一个字符。
二、替换为自定义域名的方法
要把代码里的URL换成自己的域名(比如google.com),需要先生成对应域名的加密数字串,步骤如下:
- 用这段JavaScript代码生成加密串:
// 传入目标URL,返回对应的uu格式字符串 function generateUU(targetUrl) { let encryptedStr = ''; for (let char of targetUrl) { // 获取字符ASCII码,加1000后转成4位字符串(不足补前导0) let code = char.charCodeAt(0) + 1000; encryptedStr += code.toString().padStart(4, '0'); } return encryptedStr; } // 示例:生成google.com的加密串 console.log(generateUU('https://google.com'));
- 运行上面的代码,把控制台输出的字符串替换原代码里的
uu或uu2的值 - 可以直接删掉原代码里开头的
var _ = 'https://google.com';这类无用变量
替换后的示例代码(以第一段为例):
<script> var u = []; uu = '生成的加密串'; for (var j = 4; j <= uu.length; j += 4) { u.push(String.fromCharCode(parseInt(uu.toString().substr(j - 4, 4)) - 1000)); } var _ = u.join(''); function openUrl1(){ window.open(_); } </script>
内容的提问来源于stack exchange,提问作者Miles Clinton
相关产品推荐
相关产品推荐

