js混淆成为这样的蝌蚪纹,在浏览器里面复制会位移,这是怎么生成的。
我们可以通过一些处理在让他加载默认图片,或者别的图片
<img src="https://img0.baidu.com/it/u=297780656,1813209409&fm=11&fmt=auto&gp=0.jpg" alt="" onerror="imgerrorfun()">
function imgerrorfun(){
let img=document.querySelector('img');
img.src="https://img0.baidu.com/it/u=3870964477,3746012709&fm=26&fmt=auto&gp=0.jpg";
img.onerror=null; //控制不要一直跳动
}
蝌蚪文是通过在字符之间添加特殊的unicode字符实现的。具体步骤如下:
准备一个包含蝌蚪文字符的数组(例如:['\u0303', '\u0310', '\u0315', '\u032F', '\u0333', '\u0335']),这些字符会在混淆后的代码中产生位移效果。
将要混淆的代码转换为字符串形式。
遍历每个字符,如果该字符是一个可显示的字符,则在该字符前后插入一个随机选择的蝌蚪文字符。
将混淆后的字符串输出。
下面是一个示例的JavaScript代码实现:
function generateZalgoText(text) {
const zalgoChars = ['\u0303', '\u0310', '\u0315', '\u032F', '\u0333', '\u0335'];
let zalgoText = '';
for (let i = 0; i < text.length; i++) {
zalgoText += text[i];
// 如果字符是可显示的字符,则添加蝌蚪文字符
if (text[i].match(/[\u0020-\u007E]/)) {
const randomIndex = Math.floor(Math.random() * zalgoChars.length);
zalgoText += zalgoChars[randomIndex];
}
}
return zalgoText;
}
const originalText = "Hello World!";
const zalgoText = generateZalgoText(originalText);
console.log(zalgoText);
运行以上代码,将会生成类似下面的蝌蚪文字符:"H̵̳̆͊̚e̶̯̐̆̐l̷͈̽̏l̵̠͛̈́o̴̰̎͆͘ ̸̢̍̈W̵̡̅͐ö̸͈r̶̭̾̅͠l̵͍̐̎d̷͕̈́̃!̸̝̐"
至于为什么复制时会出现位移效果,这是因为浏览器会尝试将蝌蚪文字符解析成Unicode字符,而Unicode字符包含多个代码点,每个代码点都占据一个位置。所以在复制时,浏览器会根据代码点的个数调整字符的位移,从而产生位移效果。
以上是一种生成蝌蚪文的方法,但可能还有其他的方法可以实现类似的效果。