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

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

之前基于 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();


相关文章

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

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

Telegram频道监控微博 自动转发微博消息

Telegram频道监控微博 自动转发微博消息

一、IFTTT和Telegram的注册自行百度,首先获取微博的RSS链接,最后面的是用户的id,微博的id寻找方式也很简单,先进入到博主的主页,之后f12,在Network一栏先清空再刷新。第一个请求...

使用PHP创建telegram聊天机器人

使用PHP创建telegram聊天机器人

前言我使用的是ThinkPHP 框架,找了一个组件直接使用的。不过,如果自己写原生的对接,其实也很简单,本文我假设我的机器人名字是 abc_bot推荐阅读 https://core.telegram....

快速搭建telegram自动回复机器人 python-telegram-bot

快速搭建telegram自动回复机器人 python-telegram-bot

要搭建一个Telegram自动回复机器人,您可以按照以下步骤进行操作:1.创建Telegram Bot:首先,您需要在Telegram上创建一个Bot。打开Telegram应用或使用网页版,搜索并与B...

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

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

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

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

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

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

发表评论    

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