V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Bananana
V2EX  ›  程序员

有大佬知道如何屏蔽飞书已读嘛?

  •  
  •   Bananana · 2023-04-24 22:12:37 +08:00 via iPhone · 2356 次点击
    这是一个创建于 610 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我想到的可能是屏蔽飞书长链接?
    kasusa
        1
    kasusa  
       2023-04-25 09:53:43 +08:00
    在网络请求层搞吧?
    找一下发回已读的包,分析一下特征然后全都拦截掉。就不会已读了。
    zwzwzwzwzxt
        2
    zwzwzwzwzxt  
       2023-04-25 10:40:16 +08:00   ❤️ 2
    我搞过电脑端的。它的判断逻辑是在 js 代码里的,特别好改。飞书安装目录的 `app/webcontent/messenger` 下面有一堆 js 文件,用文本搜索工具搜一下 `info("updateMessagesMeRead",` 代码片段,应该会在若干 js 文件中找到它。查看文件内容应该可以看到类似这样(我格式化了)的函数:

    ```js
    function se(e) {
    const t = function(e) {
    const {channel: t, messageIds: n=[], foldIds: s} = e
    , {maxPosition: r=-1, maxPositionBadgeCount: i=0} = e
    , {threadId: a, threadMaxPosition: o, threadMaxPositionBadgeCount: c} = e;
    return {
    channel: t,
    messageIds: n,
    maxPosition: r,
    maxPositionBadgeCount: i,
    threadId: a,
    threadMaxPosition: o,
    threadMaxPositionBadgeCount: c,
    foldIds: s
    }
    }(e);
    return d.Z.info("updateMessagesMeRead", (0,
    N.$h)({
    ...t
    }, ["channel", "maxPosition", "maxPositionBadgeCount", "messageIds", "threadId", "threadMaxPosition", "threadMaxPositionBadgeCount"])),
    (0,
    y.callApi)(I.b0f, t)
    }
    ```

    最后那个 `y.callApi` 就会把 t 传过去调 native 层的函数来向服务器发包。`messageIds` 就是要执行已读的消息 id 数组。我的做法是在 `return d.Z.info` 之前加一条语句:`t.messageIds = [];`。把之前搜到的 js 文件都改一下(虽然好像只有一个真正会生效),重启下飞书就行了。

    不过这个目前还不够完美,如果对其他人的消息贴表情或者回复他那一条消息,还是会把那个消息变成已读。估计它们应该走的不同的逻辑。确实还是在 native 层集中拦截网络包更好一些,js 里东一块西一块还是挺烦的。
    zwzwzwzwzxt
        3
    zwzwzwzwzxt  
       2023-04-25 10:45:13 +08:00   ❤️ 1
    我的定位这个函数的方法就是给飞书加一个启动参数:`--remote-debugging-port=9222`。这样用 chrome 访问 `chrome://inspect` 就能远程调试飞书的 js 代码了。打开飞书聊天页面,用元素审查器定位到聊天框。监听节点属性变化,然后一路单步调试找到的。希望能抛砖引玉一下。顺便一提,v 站不支持 markdown 的嘛。。
    Bananana
        4
    Bananana  
    OP
       2023-04-25 23:30:56 +08:00
    @zwzwzwzwzxt 牛逼。真的可以,感谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5310 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 05:50 · PVG 13:50 · LAX 21:50 · JFK 00:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.