你不知道的javascript_这些你不知道的前端隐藏加载执行JavaScript

浏览器加载一个js脚本,会在devtools中留下各种痕迹,elements中的script元素,console中的日志,source中的代码,network中的网络请求等

前端30K面试准备,最完整面试真题分享!

elements

这个比较简单,插入js的时候设置好id,在js中删掉自身就好了

06f6c786318eb911704731d13b9dcd94.png

对于引用js

04f31f4eb5d1ef52fd9d2e4b8c693a84.png

对于动态加载的js也是一样的

e5a54fd00025cd4f9361fc61f67f1f20.png

ced5498bfec7b6b9a36d0881855c96e9.png

或者也可以这样

b086360db5bb4bfc764d5fc997ee13a6.png

虽然看起来很奇怪,但a.js确实能执行,似乎是加载a.js时阻塞了脚本执行,执行完a.js之后再remove

console

clear就好了

9a9f564b7b03d2f0294fd974a27a0de8.png

source

直接引用和动态加载都会在source中出现

7aa46047e464ca2591550f9ec827f3df.png

这样都是不行的,经过测试发现动态插入js代码时不会被记录在source中

e4f7dbe774634e13eeb84d04e59378b4.png

这样a.js就不会出现在source里了

network

常规HTTP/WebSocket都会被记录,无法绕过,但是WebRTC不会,WebRTC可以基于UDP/TCP传输,WebRTC提供createDataChannel API,可以用于传输文本,那么就可以实现network隐藏加载

考虑WebRTC需要传递offer和icecandidate,还是得通过HTTP/WebSocket传输,而且复杂网络环境下还需要使用或部署STUN/TURN服务器,稳定性有待考虑

WebRTC技术可以参考学习我最近看的几篇文章透明日报20200801期

其他的方法我还没有找到,技术不行就社会工程

一个思路是可以伪装成其他流量混过去,比如png

c4f0e22705eb39ac1ba0940109e6185c.png

然后在delvtools里也看不出来

4546d15771bf81ac2e39c6698cc0a22d.png

另外一个思路是devtools目前只在打开的时候记录network数据,那么只要在devtools关闭的时候加载资源,打开就不加载,这样就不会出现在network里了

新的问题又出现了,如何检测devtools的状态,网上已经有不少公开技巧了

https://github.com/sindresorhus/devtools-detect

https://github.com/AEPKILL/devtools-detector

最后

还可以在哪里找到加载和执行痕迹呢

还有什么方法可以隐藏这些痕迹呢

前端30K面试准备,最完整面试真题分享!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值