网站首页 > 技术文章 正文
浏览器加载一个js脚本,会在devtools中留下各种痕迹,elements中的script元素,console中的日志,source中的代码,network中的网络请求等
elements
这个比较简单,插入js的时候设置好id,在js中删掉自身就好了
<script id="xxx">
// todo
document.getElementById("xxx").remove();
</script>
对于引用js
<script id="xxx" src="a.js"></script>
// a.js
document.getElementById("xxx").remove()
对于动态加载的js也是一样的
<script>
let e=document.createElement("script");
e.id="xxx";
e.src="a.js";
document.head.appendChild(e);
</script>
// a.js
document.getElementById("xxx").remove()
或者也可以这样
<script>
let e=document.createElement("script");
e.src="a.js";
document.head.appendChild(e);
e.remove();
</script>
虽然看起来很奇怪,但a.js确实能执行,似乎是加载a.js时阻塞了脚本执行,执行完a.js之后再remove
console
clear就好了
console.clear()
source
直接引用和动态加载都会在source中出现
<script src="a.js"></script>
<script>
let e=document.createElement("script");
e.src="a.js";
document.head.appendChild(e);
</script>
这样都是不行的,经过测试发现动态插入js代码时不会被记录在source中
<script>
fetch("a.js").then(resp => {
return resp.text()
}).then(text => {
let e = document.createElement("script");
e.innerHTML = text;
document.head.appendChild(e);
})
</script>
这样a.js就不会出现在source里了
network
常规HTTP/WebSocket都会被记录,无法绕过,但是WebRTC不会,WebRTC可以基于UDP/TCP传输,WebRTC提供createDataChannel API,可以用于传输文本,那么就可以实现network隐藏加载
考虑WebRTC需要传递offer和icecandidate,还是得通过HTTP/WebSocket传输,而且复杂网络环境下还需要使用或部署STUN/TURN服务器,稳定性有待考虑
WebRTC技术可以参考学习我最近看的几篇文章透明日报20200801期
其他的方法我还没有找到,技术不行就社会工程
一个思路是可以伪装成其他流量混过去,比如png
<script>
fetch("a.png").then(resp => {
return resp.text()
}).then(text => {
let e = document.createElement("script");
e.innerHTML = text;
document.head.appendChild(e);
})
</script>
然后在delvtools里也看不出来
另外一个思路是devtools目前只在打开的时候记录network数据,那么只要在devtools关闭的时候加载资源,打开就不加载,这样就不会出现在network里了
新的问题又出现了,如何检测devtools的状态,网上已经有不少公开技巧了
https://github.com/sindresorhus/devtools-detect
https://github.com/AEPKILL/devtools-detector
最后
还可以在哪里找到加载和执行痕迹呢
还有什么方法可以隐藏这些痕迹呢
如果你现在也想学习前端开发技术,在学习前端的过程当中有遇见任何关于学习方法,学习路线,学习效率等方面的问题,你都可以申请加入我的Q群:前114中6649后671还有大牛整理的一套高效率学习路线和教程与您免费分享,还有许多大厂面试真题。希望能够对你们有所帮助。
猜你喜欢
- 2024-10-02 一文看懂WebRTC建连过程 webrtc socket
- 2024-10-02 webrtc原理及相关api使用逻辑 webrtcvad
- 2024-10-02 网页端WebRTC推流转换为RTMP/GB28181等其他直播流协议
- 2024-10-02 FaceTime终直面WebRTC:deep dive实现(上)
- 2024-10-02 音视频流媒体开发WebRTC 基础知识 -- ICE 交互总结
- 2024-10-02 FaceTime终直面WebRTC:deep dive实现(下)
- 2024-10-02 webRTC 连接建立原理演示 webrtc怎么用
- 2024-10-02 资讯|WebRTC M98 更新 webrtc mediastream
- 2024-10-02 WebRTC客户端主要流程分析 webrtc internals
- 2024-10-02 WebRTC 入门教程:WebRTC信令控制与STUN/TURN服务器搭建
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)