telegram 数据采集-android 数据解析 getPathToMessage

TG机器人7个月前开发教程184

之前基于 telethon 库开发的tg采集,原本每天采集量都很理想,后面不知道为什么突然采集量就急剧下降,达到每天8万条消息。

后面修改了一下代码逻辑,以及并行采集,后面还是一样的效果,而且,还被封了一批账号。

后面就想到,tg的客户端是开源的,就打算基于客户端进行二次开发

说一下android客户端解析的方式:

1:解析 包名/files/cache4.db 文件

这个方式解析就需要看完整个源码,了解每种数据的解析方式,而且对版本有要求

相关连接:

https://dflab.blogspot.com/2019/01/cache4db-file-of-telegram-for-android_3.html

https://patents.google.com/patent/CN106549948B/zh

https://dflab.blogspot.com/2019/01/cache4db-file-of-telegram-for-android_3.html

https://github.com/RealityNet/teleparser

2:直接在消息接收并解码后 hook (目前我使用的是这种),然后判断数据包的类型,判断数据包是不是消息

微信截图_20240517101422.jpg

源码位置在:TMessagesProj/src/main/java/org/telegram/tgnet/TLRPC.java

public static abstract class Update extends TLObject 这个类里面的TLdeserialize函数

(org.telegram.tgnet.TLRPC.Update#TLdeserialize)

然后消息携带的音视频文件的话,可以通过

org.telegram.messenger.FileLoader#getPathToMessage获取

消息怎么解析,就需要你们自己来动手了。

还有不想监听的话,可以设置一个定时任务

        //获取cache4.db的数据库对象
        MessagesController instance = MessagesController.getInstance(UserConfig.selectedAccount);
        SQLiteDatabase database = instance.getMessagesStorage().getDatabase();
        // 查看消息表(这段代码是直接在tg里面拷贝过来,不一定复制就能用,这里只是给一个参考)SQLiteCursor replyCursor = database.queryFinalized(String.format(Locale.US, "SELECT data, mid, date, uid FROM messages "));
            while (replyCursor.next()) {
                NativeByteBuffer data = replyCursor.byteBufferValue(0);
                if (data != null) {
                    TLRPC.Message message = TLRPC.Message.TLdeserialize(data, data.readInt32(false), false);
                    message.readAttachPath(data, getUserConfig().clientUserId);
                    data.reuse();
                    message.id = replyCursor.intValue(1);
                    message.date = replyCursor.intValue(2);
                    message.dialog_id = replyCursor.longValue(3);

                    addUsersAndChatsFromMessage(message, usersToLoad, chatsToLoad);

                    TLRPC.Message owner = replyMessageOwners.get(message.dialog_id);
                    if (owner != null) {
                        owner.replyMessage = message;
                        message.dialog_id = owner.dialog_id;
                    }
                }
            }
            replyCursor.dispose();


相关文章

 telegram bot 案例---实现对话(复读机)

telegram bot 案例---实现对话(复读机)

尝试用 Go 语言做了一个 telegram 的 bot . 用来简单实现对话(复读机效果)。获得 telegram bot token和 BotFather 交谈即可中途需要设置一下名字和查找路径。...

PHP telegram电报机器人 消息回声机器人

PHP telegram电报机器人 消息回声机器人

1、申请bot,获取token,设置webhook:https://api.telegram.org/bot<token>/setwebhook?url=https://www.youdo...

python如何快速创建一个telegram 机器人bot

1.打开telegram,搜索关注BotFather2.1️⃣/start2️⃣/newbot3️⃣命名bot的名字4️⃣命名自己的名字5️⃣Use this token to access the...

TelegramTG电报自动发卡机器人搭建教程

TelegramTG电报自动发卡机器人搭建教程

Telegram TG电报自动发卡机器人是一种神奇的自动化工具,它可以帮助你在Telegram平台上实现各种自动化的任务。如果你也对这种有趣的机器人技术感兴趣,那么就跟随我一起,从零开始开发一个Tel...

TG电报24小时自动发卡机器人定制开发教程

TG电报24小时自动发卡机器人定制开发教程

  随着互联网的快速发展,数字产品的需求也在不断增加。许多用户希望通过购买数字产品来满足各种需求。然而,手动管理和分发这些数字产品变得越来越困难。为了解决这个问题,一些开发者开始研究如何利用Teleg...

全功能TG BOT/Telegram机器人功能介绍 功能清单

全功能TG BOT/Telegram机器人功能介绍 功能清单

在即时通讯领域,Telegram作为一款功能强大的通讯工具备受欢迎。而全功能tgbot源码则为Telegram用户提供了更多有趣、便捷的功能和体验。本文将为您介绍这款源码的特点和优势,以及如何获取和使...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。