前言
Telegram作为一款强大的端到端加密即时通讯应用,以其安全性和速度而著称。支持包括Android、iOS、Windows、macOS在内的多个平台,功能丰富、运行流畅,且开源免费,对于学习和研究具有重要价值。
一、下载地址
获取Telegram源码的地址为:android telegram源码下载地址
二、编译环境配置
为了确保顺利编译,以下环境配置建议:
Windows版本:10 64位
Android studio版本:2022.3.1,最新版本
Android SDK版本:由Android studio自带
Android Gradle Plugin版本:7.03,源码版本对应
Gradle Version版本:7.02,源码版本对应
Android ndk版本:21.4.7075529,与源码保持一致
Gradle JDK版本:11.0.2,使用此版本以避免与Android Gradle Plugin Version不兼容的问题
注意:遵循上述配置,初始编译可能会耗费较长时间,笔者经验为第一次未修改编译时耗时约8个半小时,修改后再编译耗时约17小时。编译成功后,源码体积由最初的100M扩展至17G,这是后续修改的基础。
三、编译指南
获取api_id:访问my.telegram.org申请
复制release.keystore至TMessagesProj/config,确保在gradle.properties中正确填写RELEASE_KEY_PASSWORD、RELEASE_KEY_ALIAS、RELEASE_STORE_PASSWORD,以便访问release.keystore
google-services.json:在console.firebase.google.com创建项目,使用应用程序ID org.telegram.messenger和org.telegram.messenger.beta,下载google-services.json并放置在与TMessagesProj相同的文件夹中
BuildVars.java:在Studio中打开项目,修改TMessagesProj/src/main/java/org/telegram/messenger/BuildVars.java中的变量值,确保与控制台创建的APP_ID和APP_HASH一致
API、协议文档:获取Telegram API手册和MTproto协议手册
四、修改指南
为了修改源码并进行数据抓取,可以遵循以下步骤:
添加依赖库:implementation 'org.apache.commons:commons-lang3:3.6'
创建RecursiveToStringStyle.java,实现将Telegram数据转换为字符串并格式化
创建LauchInfo.java,用于拦截并保存Telegram消息
拦截接收的消息:在Telegram\TMessagesProj\src\main\java\org\telegram\messenger\MessagesController.java中进行修改
拦截发送的请求与应答:在Telegram\TMessagesProj\src\main\java\org\telegram\tgnet\ConnectionsManager.java中进行修改
至此,你可以开始愉快地抓取Telegram数据了。
详情