在此运行 完全在你的浏览器里运行,不上传、不登录
JS 混淆
浏览器内的 JS 基础混淆:局部变量短名、去注释与多余空白、字符串可选十六进制转义。
这是词法级的基础混淆,不是加密。它会让随手阅读变慢,但 不能 保护不了密钥。不要把 API key、令牌或授权校验放进前端 JavaScript。
换行会被保留。合并行会改变自动分号插入的读法,因此本工具不做这件事。
怎么用
- 把 JavaScript 粘贴进左侧输入框。
- 保留局部变量名替换为短名,会把分词器能判定为局部的声明重命名。
- 保留去除注释与多余空白,删掉注释并压掉缩进;换行保持不变。
- 想让字符串内容变成
\x41这种转义形式,就打开字符串转十六进制转义。 - 点混淆,再复制或下载。状态行会报告重命名了多少个名字,以及体积变化。
重命名这一步刻意做得很保守:如果某个名字出现过 obj.count 这样的属性访问、count: 这样的对象键,或者在它自己的声明之前就被引用,那么这个名字会整名跳过,而不是改一半留一半。
常见用法
- 发布不想被一眼读懂的片段 —— 发 demo 之前先去掉注释和有描述性的变量名。
- 给小脚本减重 —— 去掉注释与缩进能在不改行为的前提下省下字节。
- 让字面文本不那么好扫 —— 十六进制转义让人读不出字符串,运行时取值完全一样。
- 对比前后体积 —— 状态行同时给出前后字节数,这一轮到底省了多少一目了然。
常见问题
问:这能保护 API key 或授权校验吗? 答:不能。这是词法级的基础混淆,不是加密。送到浏览器的东西总有办法被读回来,密钥与授权校验应该放在服务端。
问:为什么不把所有行合并成一行? 答:合并行会改变自动分号插入的读法,可能悄悄改变行为。保留行边界对词法工具来说是安全的做法。
问:什么情况下某个变量会被跳过?
答:出现属性访问、对象键或标签,在声明之前就被引用,或者文件里有 eval / with,这个名字都会整名跳过。整名跳过能保证输出一致,而不是有的改了有的没改。
你的数据留在这台设备上
JS 混淆 完全在本地运行。你粘贴或拖入的一切都由你自己的浏览器处理,不会被传走。我们的服务器不保存任何东西——关掉标签页就没了。
你输入的内容不会发往服务器、不被记录,也不用于分析统计。首次加载之后即使断网,这个页面照样能用。