js 奇葩技巧之隐藏代码

发布时间 - 2026-01-11 02:44:53    点击率:

昨天在群看到有人发了个文章叫《“短”化你的代码》,思路非常不错,采用unicode的零宽字符来实现字符隐藏,虽然有字符,可是你却看不见它。
这篇文章详细的介绍了这种方法的实现原理,最后还给出了一个生成工具。

当然,作者算了留了一个小小的练习给我们,因为他只用了两个字符,导致转换后的数据是原始数据的 8倍。
他给我们提供了4个零宽字符,我们就可以缩小至4倍。

好了,我们来看下代码吧。

(function(window) {
 var rep = { // 替换用的数据,使用了4个零宽字符,数据量减少了一半。
  '00': '\u200b',
  '01': '\u200c',
  '10': '\u200d',
  '11': '\uFEFF'
 };
 function hide(str) {
  str = str.replace(/[^\x00-\xff]/g, function(a) { // 转码 Latin-1 编码以外的字符。
   return escape(a).replace('%', '\\');
  });
  str = str.replace(/[\s\S]/g, function(a) { // 处理二进制数据并且进行数据替换
   a = a.charCodeAt().toString(2);
   a = a.length < 8 ? Array(9 - a.length).join('0') + a : a;
   return a.replace(/../g, function(a) {
    return rep[a];
   });
  });
  return str;
 }
 var tpl = '("@code".replace(/.{4}/g,function(a){var rep={"\u200b":"00","\u200c":"01","\u200d":"10","\uFEFF":"11"};return String.fromCharCode(parseInt(a.replace(/./g, function(a) {return rep[a]}),2))}))';
 window.hider = function(code, type) {
  var str = hide(code); // 生成零宽字符串
  str = tpl.replace('@code', str); // 生成模版
  if (type === 'eval') {
   str = 'eval' + str;
  } else {
   str = 'Function' + str + '()';
  }
  return str;
 }
})(window);

大家可以通过最简单的代码例子进行测试一下,看看效果如何,也可以进一步优化,或者写成插件什么的,就当练习吧。。
虽然这个东西没什么实际用处,不过有时候玩玩还是不错的,可出面试题吓唬新人哦。。

以上就是小编为大家整理的js 奇葩技巧之隐藏代码,希望对大家有所帮助!


# js  # 技巧  # 隐藏代码  # javascript中一些奇葩的日期换算方法总结  # JavaScript数组的一些奇葩行为  # 一个奇葩的最短的 IE 版本判断JS脚本  # JavaScript中一个奇葩的IE浏览器判断方法  # JavaScript中奇葩的假值示例应用  # Javascript中的奇葩知识  # 你知道吗?  # 好了  # 出了  # 给我们  # 可以通过  # 发了  # 这篇文章  # 最简单  # 来实现  # 就当  # 你却  # 他给  # 留了  # 一个小小  # 小编  # 非常不错  # 就可以  # 测试一下  # 没什么  # 昨天  # 原始数据 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: jQuery中的100个技巧汇总  uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址  消息称 OpenAI 正研发的神秘硬件设备或为智能笔,富士康代工  如何用VPS主机快速搭建个人网站?  javascript事件捕获机制【深入分析IE和DOM中的事件模型】  Laravel怎么实现微信登录_Laravel Socialite第三方登录集成  如何在宝塔面板创建新站点?  Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)  如何实现建站之星域名转发设置?  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  LinuxCD持续部署教程_自动发布与回滚机制  在线教育网站制作平台,山西立德教育官网?  详解阿里云nginx服务器多站点的配置  如何快速建站并高效导出源代码?  Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置  如何快速查询网址的建站时间与历史轨迹?  javascript中的数组方法有哪些_如何利用数组方法简化数据处理  Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能  详解Android中Activity的四大启动模式实验简述  什么是JavaScript解构赋值_解构赋值有哪些实用技巧  Laravel的.env文件有什么用_Laravel环境变量配置与管理详解  Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制  大学网站设计制作软件有哪些,如何将网站制作成自己app?  深圳网站制作平台,深圳市做网站好的公司有哪些?  php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】  Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全  Bootstrap CSS布局之列表  ChatGPT 4.0官网入口地址 ChatGPT在线体验官网  独立制作一个网站多少钱,建立网站需要花多少钱?  Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率  Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)  Laravel如何配置Horizon来管理队列?(安装和使用)  INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】  黑客如何利用漏洞与弱口令入侵网站服务器?  laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法  Laravel如何优化应用性能?(缓存和优化命令)  详解jQuery停止动画——stop()方法的使用  jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】  Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析  Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】  在centOS 7安装mysql 5.7的详细教程  Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优  EditPlus中的正则表达式 实战(4)  如何在腾讯云服务器快速搭建个人网站?  Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门  PythonWeb开发入门教程_Flask快速构建Web应用  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  javascript中闭包概念与用法深入理解  Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程  潮流网站制作头像软件下载,适合母子的网名有哪些?