参考链接:Telegram API 注意:我不使用Bot API,而是尝试使用常规API。
server_salt = substr(new_nonce, 0, 8) XOR substr(server_nonce, 0, 8)
5) 现在您已经拥有了您的server_salt,一个新的随机64位session_id,并且您想要发送以下内容:
msg = TL.invokewithlayer(@layer, TL.initconnection(@app_id, @device_model, @system_version, @app_version, @lang_code, TL.help_getnearestdc))
MTProto格式为:auth_id + msg_key + enc_payload
enc_payload = AES_IGE_enc(payload)
payload = salt + session_id + msg_id + seq_no + len(msg) + msg + padding
您可以从此处获取以上内容
6) 现在您期望得到一个结果,告诉您最近的dc_id,如果这与dc_id = 2不同(通常dc_id = 2是您开始使用的默认值),则需要断开连接并启动到新的dc_id的新连接,并重新生成连接到此新dc的auth_key。 您的dc_ids指向Telegram数据中心IP地址列表['149.154.175.50', '149.154.167.51', '149.154.175.100', '149.154.167.91', '149.154.171.5']
7) 连接到正确的“最近的dc”后,您现在可以执行用户授权,以授权(您的)手机号码使用您的新Telegram客户端访问telegram
8) 您发送到Telegram的所有后续消息都将使用相同的session_id和salt发送,并按照之前的MTProto加密步骤进行
9) 请注意,salt通常只有24小时的有效期。服务器将向您发送一个新的salt,您可以使用它来替换过期的salt。 session_id通常具有较长的生命周期。
10) 一旦您掌握了这几个步骤,您就可以尝试发送消息或获取联系人列表和消息历史记录
干杯。