李恒道 发表于 2022-3-12 00:02:40

时间网站setinterval无法劫持分析

# 前文

很多人都好奇时间网站为什么setinterval失效无法劫持了

http://time.tianqi.com/

这里我们实战一下如何分析这个网站

![图片.png](data/attachment/forum/202203/12/000103ypn3bsnnsnsnwssd.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "图片.png")

我们知道秒一直在改变

找到对应节点

右键,设置发生中断条件,子树修改

![图片.png](data/attachment/forum/202203/12/000129p9m1r1r79m8amfq3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "图片.png")

会在这里断下,这里推荐用chrome浏览器,其他浏览器因为自身问题可能无法查看源代码,如ff

观察堆栈发现

![图片.png](data/attachment/forum/202203/12/000153vkvsnhs20sodziyi.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "图片.png")

这里现在变成了setTimeout来进行反复调用

再观察代码

```js
      NewTick();

      // s=nyear+'年'+nmonth+'月'+nday+'日 '+'星期'+cweekday(nwday)+' ';
      document.getElementsByClassName("hour_box").innerHTML=shapetime(nhrs);
      document.getElementsByClassName("minute_box").innerHTML=shapetime(nmin);
      document.getElementsByClassName("seconds_box").innerHTML=shapetime(nsec);
      setTimeout("Draw()",500);

```

每次赋值之后设置Settimeout在500ms后进行下一次Draw的自身回调

# 结语

破案~

涛之雨 发表于 2023-8-14 10:19:56

还可能直接是requestAnimationFrame帧动画
页: [1]
查看完整版本: 时间网站setinterval无法劫持分析