电报采集工具免费分享超硬核价值2000的群组频道采集工具
电报telegram采集我相信是很多海外作者需要的。正好这两天我也有在测试,花了两千块买了一个破解版的电报采集工具。可以采集群组和群发,而且可以多开。

不收费 无后续费用 交个朋友
其实我们自己也开发过一些关于tg的采集工具,我也会分享出来,希望能帮到大家
在过去的开发过程中,我们曾基于 telethon 库进行 tg 采集,起初每日的采集量都相当理想。然而,不知何故,之后采集量突然急剧下降,每日仅能达到 8 万条消息的水平。
为了解决这个问题,我们对代码逻辑进行了修改,同时采用了并行采集的方式,但效果依旧不理想,并且还遭遇了一批账号被封的情况。
面对困境,我们想到了 tg 的客户端是开源的,于是决定基于此进行二次开发。这里就不再赘述环境配置相关内容。
在研究 tg 源码时,发现了 android 客户端的解析方式主要有两种。其一,是解析包名/files/cache4.db 文件,但这种方式需要完整看完源码以了解每种数据的解析方式,且对版本有要求,相关链接有多个可供参考。其二,是直接在消息接收并解码后进行 hook(这也是我们目前采用的方法) TMessagesProj/src/main/java/org/telegram/tgnet/TLRPC.java 中的 public static abstract class Update extends TLObject 这个类里的 TLdeserialize 函数。
接着,通过判断数据包的类型来确定是否为消息。若是消息且携带音视频 org.telegram.messenger.FileLoader#getPathToMessage 来获取。至于消息具体如何解析,就需要开发者们自己动手实践。此外,如果不想监听,还可以设置一个定时任务。比如以下代码示例:通过获取“cache4.db”的数据库对象,然后查看消息表(这里的代码是直接从 tg 里拷贝而来,不一定直接复制就能用,仅作参考)。
MessagesController instance = MessagesController.getInstance(UserConfig.selectedAccount); SQLiteDatabase database = instance.getMessagesStorage().getDatabase(); 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();
在 tg 采集的探索之路上,我们历经波折,但也不断寻找新的解决方案和突破点,希望未来能有更好的成果。
版权声明:
作者:小火箭shadowrocket
链接:https://www.shadowrocket888.org/494.html
来源:小火箭官网
文章版权归作者所有,未经允许请勿转载。


共有 0 条评论