之前写了一个倒计时HTML,很简单,只有30行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1.0"><title>高考倒计时</title>
<style>
*{margin:0;padding:0;box-sizing:border-box}
body{background:#000;color:#fff;font-family:system-ui,sans-serif;height:100vh;display:flex;flex-direction:column;justify-content:center;align-items:center;overflow:hidden}
body::before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.06) 1px,transparent 1px);background-size:40px 40px;pointer-events:none}
h1{font-size:clamp(1.2rem,4vw,2rem);font-weight:200;letter-spacing:.5em;margin-bottom:clamp(30px,8vh,80px);z-index:1;text-indent:.5em}
.c{display:flex;gap:clamp(8px,2.5vw,30px);align-items:center;z-index:1}
.b{display:flex;flex-direction:column;align-items:center}
.b span{font-family:'Courier New',monospace;font-size:clamp(2.2rem,11vw,8rem);font-weight:700;line-height:1;font-variant-numeric:tabular-nums}
.b p{margin-top:clamp(6px,1.5vh,16px);font-size:clamp(.5rem,1.5vw,.8rem);letter-spacing:.2em;color:#666;text-transform:uppercase}
i{font-style:normal;font-size:clamp(1.5rem,7vw,5rem);font-weight:100;color:#333;line-height:1}
</style></head><body>
<h1>高考倒计时</h1>
<div class="c">
<div class="b"><span id="d">000</span><p>Days</p></div><i>:</i>
<div class="b"><span id="h">00</span><p>Hours</p></div><i>:</i>
<div class="b"><span id="m">00</span><p>Minutes</p></div><i>:</i>
<div class="b"><span id="s">00</span><p>Seconds</p></div>
</div>
<script>
const T=new Date('2029-06-07T09:00:00+08:00').getTime(),d=document.getElementById('d'),h=document.getElementById('h'),m=document.getElementById('m'),s=document.getElementById('s');
function u(){let n=Date.now(),x=T-n;if(x<=0){d.textContent='000';h.textContent='00';m.textContent='00';s.textContent='00';return}d.textContent=String(Math.floor(x/864e5)).padStart(3,'0');h.textContent=String(Math.floor(x%864e5/36e5)).padStart(2,'0');m.textContent=String(Math.floor(x%36e5/6e4)).padStart(2,'0');s.textContent=String(Math.floor(x%6e4/1e3)).padStart(2,'0')}
setInterval(u,1000);u();
</script></body></html>

现在把html中间内联的JavaScript抽离出来

1
2
3
4
5
<script>
const T=new Date('2029-06-07T09:00:00+08:00').getTime(),d=document.getElementById('d'),h=document.getElementById('h'),m=document.getElementById('m'),s=document.getElementById('s');
function u(){let n=Date.now(),x=T-n;if(x<=0){d.textContent='000';h.textContent='00';m.textContent='00';s.textContent='00';return}d.textContent=String(Math.floor(x/864e5)).padStart(3,'0');h.textContent=String(Math.floor(x%864e5/36e5)).padStart(2,'0');m.textContent=String(Math.floor(x%36e5/6e4)).padStart(2,'0');s.textContent=String(Math.floor(x%6e4/1e3)).padStart(2,'0')}
setInterval(u,1000);u();
</script>

随便找一个JavaScript混淆工具
就得到了下面这一段

1
const _0x2a56c6=_0x5888;(function(_0x4c30d9,_0x1e8d78){const _0x3e728d=_0x5888,_0x2d0b75=_0x4c30d9();while(!![]){try{const _0x3498a8=-parseInt(_0x3e728d(0x111))/0x1*(-parseInt(_0x3e728d(0x102))/0x2)+-parseInt(_0x3e728d(0x10b))/0x3*(-parseInt(_0x3e728d(0x10a))/0x4)+parseInt(_0x3e728d(0x105))/0x5+-parseInt(_0x3e728d(0x10d))/0x6*(parseInt(_0x3e728d(0x104))/0x7)+parseInt(_0x3e728d(0x109))/0x8*(-parseInt(_0x3e728d(0x10c))/0x9)+-parseInt(_0x3e728d(0x10f))/0xa+-parseInt(_0x3e728d(0x108))/0xb;if(_0x3498a8===_0x1e8d78)break;else _0x2d0b75['push'](_0x2d0b75['shift']());}catch(_0x1e4525){_0x2d0b75['push'](_0x2d0b75['shift']());}}}(_0x591e,0xaa8f0));const T=new Date(_0x2a56c6(0x103))[_0x2a56c6(0x106)](),d=document[_0x2a56c6(0x110)]('d'),h=document[_0x2a56c6(0x110)]('h'),m=document[_0x2a56c6(0x110)]('m'),s=document[_0x2a56c6(0x110)]('s');function _0x5888(_0x47a547,_0x538b67){const _0x591e0e=_0x591e();return _0x5888=function(_0x588844,_0x3b02de){_0x588844=_0x588844-0x101;let _0x269a09=_0x591e0e[_0x588844];return _0x269a09;},_0x5888(_0x47a547,_0x538b67);}function _0x591e(){const _0x54f174=['000','148siPsMJ','2029-06-07T09:00:00+08:00','273JEWkEv','4548785uoONsM','getTime','textContent','11117018Yiwmrn','136UlZBcu','143540sJdogC','90nouaqW','341307ECMzPL','80604kcCLtk','floor','45100VIKZYM','getElementById','12109bvXMSM','padStart'];_0x591e=function(){return _0x54f174;};return _0x591e();}function u(){const _0x2642d1=_0x2a56c6;let _0xb6362c=Date['now'](),_0x28374a=T-_0xb6362c;if(_0x28374a<=0x0){d[_0x2642d1(0x107)]=_0x2642d1(0x101),h['textContent']='00',m[_0x2642d1(0x107)]='00',s[_0x2642d1(0x107)]='00';return;}d[_0x2642d1(0x107)]=String(Math[_0x2642d1(0x10e)](_0x28374a/0x5265c00))['padStart'](0x3,'0'),h[_0x2642d1(0x107)]=String(Math[_0x2642d1(0x10e)](_0x28374a%0x5265c00/0x36ee80))[_0x2642d1(0x112)](0x2,'0'),m[_0x2642d1(0x107)]=String(Math[_0x2642d1(0x10e)](_0x28374a%0x36ee80/0xea60))['padStart'](0x2,'0'),s[_0x2642d1(0x107)]=String(Math['floor'](_0x28374a%0xea60/0x3e8))['padStart'](0x2,'0');}setInterval(u,0x3e8),u();

看起来效果还不错