飞书防撤回
飞书介绍
一个由字节跳动研发的工作使用的IM。
PC、MAC客户端开发使用的是electron js,也有网页版。
实现思路
鉴于使用的是electron js,客户端并没有什么好的调试方法。通过对源码结构的对比,我发现客户端版和网页版相比并没有太大区别,于是我决定从网页版入手。
关键字定位
打开网页版飞书,测试消息撤回功能。右键审查元素。
得到了我们要的关键字——“is-recalled”
然后在浏览器搜索定位。
调试
在上面搜索得到的路径中,寻找可疑的执行路径进行断点调试。
会发现每一个消息其实都是结构对象。
这里就有我们要的 isRecalled 字段。
所以我们要做的就是找到接收消息函数,对每次接收过来的消息对isRecalled字段进行判断。若值为true,则直接丢弃。
最后找到 onReceivePushAsyncMessages 函数,对函数进行修改。(可能已失效)
1 | onReceivePushAsyncMessages(e) { |
客户端实现
mac下访达,应用程序-飞书-显示包内容,Contents-Frameworks-Lark Framework-Resources-webcontent
都是js,自由发挥。
chrome下替换指定js文件的插件
ResRes插件
chrome下修改Ajax请求回包
使用ajax-interceptor插件:
https://chrome.google.com/webstore/detail/ajax-interceptor/nhpjggchkhnlbgdfcbgpdpkifemomkpg