Security
企业 Telegram 聊天备份:如何导出聊天记录,以及导出遗漏了什么

这个月,你团队里有人问过“这事我们有书面记录吗?”,而答案就在某一个人的 Telegram 里。也许你翻聊天记录找到了。也许你去找导出聊天的方法,结果三篇教程都只讲到菜单路径就结束了。下面这个数字应该让企业主警觉起来:Telegram 的常见问题写明,一个账号如果 18 个月没有上线,默认会被删除,而删除账号会永久清除它的所有消息和联系人。
本文会把导出讲透:入口在哪里,每个选项有什么作用,HTML 和 JSON 怎么选,导出的文件夹里有什么。然后讲教程跳过的部分。由一个人在一台笔记本上做的 Telegram 聊天备份,能防住那些很少发生的故障,却防不住最常发生的那一种:一个有访问权限的人带着聊天记录离开,或者悄悄改动它。
Telegram 本来就会保存你的云端聊天,私密聊天除外
在导出任何东西之前,先弄清楚 Telegram 已经替你保存了什么。普通聊天都是云端聊天。Telegram 常见问题说,它们以加密形式存储在 Telegram 云端,你在任何设备上都能访问,即使丢了手机也一样。根据同一份常见问题,云端聊天数据分布在多个数据中心。
私密聊天(Secret Chats)是例外。常见问题明确指出,私密聊天与设备绑定,不属于 Telegram 云端。它们只存在于进行过这段对话的设备上。设备丢了,或者退出登录,这些消息就没了。
所以对于丢手机这种情况,Telegram 本身就是备份。但云端防不住那些能对聊天动手的人:
| 发生了什么 | Telegram 云端能保护你吗? | 原因 |
|---|---|---|
| 你丢了手机或换了手机 | 能 | 云端聊天会同步到你登录的任何设备 |
| 一条消息被双方同时删除 | 不能 | 常见问题说,在一对一聊天中,你可以为双方删除你发送或收到的任何消息 |
| 账号被删除(被所有者删除,或因长期不活跃被删除) | 不能 | 删除会清除所有消息和联系人 |
| 持有账号的人离开了公司 | 不能 | 聊天记录跟着控制账号的人一起离开 |
| 私密聊天所在的设备丢失或退出登录 | 不能 | 私密聊天从来就不在云端 |
这五行里有四行讲的是人和账号归属,而不是 Telegram 的服务器。读本文其余部分时请记住这一点。
如何从 Telegram Desktop 导出 Telegram 聊天记录
Telegram 在 2018 年 8 月于 Telegram Desktop 中推出了导出工具。入口有两个:一次导出一个对话,或者导出整个账号。
用 "Export chat history" 导出单个对话
需要单独一段对话时用这个,比如发生纠纷前的某个客户对话,或者续签合同前的某个供应商对话。
在 Telegram Desktop 中打开该对话
点击对话顶部的三点菜单
选择 "Export chat history"
选择媒体类型、大小上限、格式和日期范围
点击 Export
在这个对话框里,你可以选择要包含哪些媒体(照片、视频、语音消息、视频消息、贴纸、GIF 和文件)、文件大小上限、下载路径、格式,以及用 "From" 和 "to" 设定的日期范围。日期范围保持默认,就会导出从最早一条消息到现在的全部内容。这些标签直接来自 Telegram Desktop 的源代码,所以和你在屏幕上看到的一致。
用 "Export Telegram data" 导出整个账号
当有人要离职、某个账号有风险,或者你第一次为某个账号做基线备份时,用这个。
Telegram Desktop:Settings > Advanced > Export Telegram data
这种导出范围更广。除了聊天,它还可以包含账号信息(显示名称、用户名、手机号、头像)、联系人列表、动态存档和活跃会话。聊天类型需要逐项勾选:个人聊天、机器人聊天、私有群组、私有频道、公开群组和公开频道。还有一个 "Only my messages"(仅我的消息)选项,可以把群组导出精简到只包含该账号写过的内容。
完整导出时,Telegram 可能会让你等待。 Telegram Desktop 的源代码中有一条提示:出于安全原因,下载可能会延迟若干小时,你的所有设备都已收到这次请求的通知,你需要稍后在同一台设备上重新发起请求。如果你导出是因为某个账号快要保不住了,今天就开始,不要等到最后期限。
HTML 还是 JSON:看文件接下来要去哪里
导出提供 "Human-readable HTML"(人类可读的 HTML)、"Machine-readable JSON"(机器可读的 JSON),或者两者都要。
- HTML 在浏览器中打开,看起来就像聊天界面。如果读文件的是人,就选它:审阅对话的经理、律师、审计人员。
- JSON 是结构化数据。如果文件要交给别的东西处理,就选它:脚本、电子表格、数据库、搜索索引。
- 两者都要 只多占磁盘空间,没有别的代价。凡是可能在纠纷中用到的,都两种都导出。你事先无法知道下一个读者是人还是程序。
文件夹里有什么,没有什么
| 选中后会包含 | 不会包含 |
|---|---|
| 你勾选的类型的云端聊天 | 私密聊天:它们不在云端,也不在导出提供的聊天类型中 |
| 在你设定的大小上限内的媒体 | 超过大小上限的文件,会被跳过 |
| 你设定的日期范围内的消息 | 在你导出之前已被为所有人删除的消息 |
| 已编辑消息的当前文本 | 已编辑消息的原始措辞 |
| 账号信息、联系人、会话(仅完整导出) | 其他人能看到、但这个账号看不到的任何内容 |
最后一行比看上去更重要。导出只是一个账号眼中的 Telegram。它无法包含该账号已经退出的群组、从未加入过的对话,或者同事在另一个账号上进行的对话。
为什么 Telegram 导出不是企业备份
对于备份自己聊天的个人来说,导出就够了。对公司来说,它在四个具体方面不合格。
它是一张快照。 导出读取的是你点击按钮那一刻每个对话的样子。此前删除的内容不在里面,此前编辑过的内容只显示最终版本。导出之后被删除或编辑的内容仍然留在你的副本里,但没有任何东西告诉你它变了。你最终得到两个版本的事实,却没有记录它们之间差异的日志。
它只是一个人的视角。 每次导出都属于一个账号。一个运营 12 个账号的团队需要 12 次导出,每次都要由登录了该账号的人发起,如果 Telegram 要求等待,每次还都有各自的等待期。没有人会每天这样做,所以实际上,在出事之前根本没人做。
它存在一台笔记本上。 默认下载路径是运行导出的那台电脑上的一个文件夹。除非有人把它移到公司存储,否则这份备份和那台笔记本有同样的故障方式:被盗、硬盘被清空、密码被忘记。
它会跟着员工离开。 这是最费钱的一条。能导出对话的人,就是持有账号会话的人。如果那是一位用自己号码的销售人员,那么他辞职时,账号、账号的云端记录以及它的每一份导出都归他所有。你的公司从来没有持有过副本。
如果你实际面对的问题是一条已经被删除的消息,导出救不回来,其他办法也救不回来。我们的 Telegram 已删除消息与审计追踪指南详细讲了这种情况。
你的 Telegram 记录最大的风险来自你自己的团队
关于通讯应用的安全文章大多在讲外部人员:加密、服务器入侵、被盗的 SIM 卡。这些风险是真实的,每个企业账号都值得开启两步验证。但再看看本文开头那张表。Telegram 云端已经能处理丢手机的情况。它处理不了的,是一个拥有合法访问权限的人为了掩盖错误删掉一段对话,或者在最后一个周五导出联系人列表。
这不是在假设有坏人。Telegram 的导出工具是为账号所有者打造的隐私功能,它完全按设计工作:谁控制会话,谁就能拿走数据。替你备份聊天的同一个按钮,也会替一个要跳槽到竞争对手那里的人备份。企业的备份计划必须从谁控制账号开始,因为账号去哪里,导出就去哪里。
这个论点的边界是:如果你的团队是三位创始人,每人拥有自己的账号并且彼此信任,风险就很小,每月一次导出到共享存储可能就够了。你每增加一个账号、每接入一个外包人员、每有一位销售用自己的手机号入职,这个论点就更有分量。
Entergram 中的持久记录是什么样的,以及它的边界
Entergram 是构建在真实个人 Telegram 账号之上的 CRM 层,可以在一个界面中管理 100+ 个账号。它有几项功能和备份问题有关。但它们都不是消息备份,下面列出的限制和功能本身同样重要。
Slack 保存一份持续更新的副本:单向,每个席位一个频道
Entergram 的 Slack 集成定位为审计日志。每个席位连接自己的 Slack 工作区,并选择一个公开或私有频道。然后 Entergram 会把该席位能访问的每个 Telegram 对话转发到那个频道,这样记录会自动积累,不需要等某人去运行导出。
限制如下,直说:
- 它是单向的。 消息从 Telegram 流向 Slack。不能从 Slack 回复到 Telegram。
- 每个席位一个频道,而不是每个账号一个频道。 如果一个席位能访问八个账号,这八个账号都会流入该席位唯一的频道。需要分开的受限记录,就需要分开的席位。
- 删除行为尚未确认。 在 Telegram 上被删除的消息是否会保留在 Slack 频道中,由 Entergram 后端决定,目前尚未确认。在你自己的工作区测试之前,不要假设它会保留并以此搭建合规流程。
- 副本能保存多久,取决于 Slack 的保留策略。 在 Slack 免费版中,消息历史只能查看 90 天,超过一年的内容会被永久删除。在付费版中,Slack 的保留设置默认在工作区存续期间一直保留数据,工作区所有者可以修改。请有意识地设置它。
- 把它当作从连接当天开始记录。 没有文档说明它会回填更早的历史,所以请在同一天对每个账号的现有记录运行一次 Telegram 导出,这样就不会留下空档。
隐私控制在工作区内阻止编辑和删除
Entergram 有四项针对内部数据泄露的控制:隐藏用户名、隐藏群组成员信息、禁止用户编辑消息、禁止用户删除消息。后两项从源头上保持你这一方的对话完整,这比任何备份都好,因为根本没有需要恢复的东西。
限制:这些控制管的是工作区成员通过 Entergram 能做什么。它们无法阻止对话的另一方删除自己的消息。它们也管不到某人手机上登录同一账号的 Telegram 应用,所以账号的会话也是控制的一部分。在 Telegram 的设置里进入 Devices(设备,Telegram 常见问题中称为 Active Sessions,即活跃会话)检查它们,并结束那些不应存在的会话。
HubSpot 和 Notion 同步的是字段,不是消息
人们很容易以为 CRM 同步也是聊天存档。这两个都不是。HubSpot 集成把每个对话映射为一个 HubSpot 联系人,并把 Entergram 自定义字段与联系人属性同步,不同步任何消息或备注。Notion 集成把每个对话映射为某个 Notion 数据库中的一行,并双向同步自定义字段,同样不包含消息。两者都适合把交易数据保存在 Telegram 之外。但它们都不会保存任何一句对话内容。
原始分析数据可以下载,但它是活动数据,不是文本
Entergram 的 Telegram 分析涵盖发送和接收的消息、响应时间,以及最忙的时段和日子,原始分析数据可以下载。这给了你一份持久的消息活动记录(数量、时间和响应时间)。它不包含消息文本,所以它能证明某段对话发生过,却无法说明对话里说了什么。
Entergram 本身不是存档
Entergram 实时从 Telegram 获取消息,不在自己的数据库中保存你的消息历史,只有短期缓存。我们的安全页面解释了这种设计。它对隐私有好处,但对本文来说意味着一件事:如果某个 Telegram 账号被删除,Entergram 也无法给你看它的历史记录。
| 层级 | 保存什么 | 不保存什么 |
|---|---|---|
| Telegram 云端 | 云端聊天,可在任何已登录设备上查看 | 私密聊天、已删除的消息、账号删除后的一切 |
| Telegram 导出 | 一个账号聊天的快照,HTML 或 JSON 格式 | 之后的删除或编辑、其他账号、私密聊天 |
| Entergram Slack 转发 | 席位可访问对话的持续副本,存于一个 Slack 频道 | 从 Slack 回复、有文档说明的历史回填、已确认的删除后保留 |
| Entergram 编辑和删除锁定 | 你团队的消息,在 Telegram 中保持不变 | 对方的删除、登录同一账号的手机上的操作 |
| HubSpot 和 Notion 同步 | 每个对话的自定义字段值 | 消息文本 |
| Entergram 分析数据下载 | 消息数量、时间、响应时间 | 消息文本 |
适合运营多个账号的团队的 Telegram 备份流程
按这个顺序把各部分组合起来。每一步都弥补上一步留下的缺口。
- 掌握账号所有权。 业务对话应该放在公司控制的账号上,设置两步验证,恢复邮箱指向公司邮箱。之后的每一步都以此为前提。
- 为每个账号做一次基线导出。 运行 "Export Telegram data",同时选择 HTML 和 JSON,并在当天把文件夹移到公司存储。用账号和日期给它命名。
- 开始持续记录。 每个席位把 Slack 连接到一个受限频道,把 Slack 保留期设置为与你需要保存记录的时长一致,并在依赖它之前,测试一下你在 Telegram 上删除的消息会怎样。
- 锁定编辑和删除。 为每位处理客户对话的成员开启这两项消息控制,并告诉团队已经开启。大家知道的控制会改变行为。隐藏的控制一旦被人发现,就会变成信任问题。
- 在需要之前写好离职清单。 对此人的账号做最后一次导出,在设置的 Devices 中结束会话,把该成员从工作区移除。
- 不要把业务记录放在私密聊天里。 私密聊天按设计只存在于设备上。把它们用在该用的地方,任何以后可能需要证明的内容都放在云端聊天里。
最后提醒一句:一份装满客户对话的导出文件,就是文件形式的个人数据。如果你在欧盟运营或服务欧盟客户,请决定这些文件存放在哪里、保存多久。我们的 Telegram GDPR 指南讲了保留期限和数据主体访问请求。
常见问题
如何一次性备份我所有的 Telegram 聊天?
安装 Telegram Desktop 并登录,进入设置,然后 Advanced(高级),再点 Export Telegram data。勾选你需要的聊天类型,设置媒体选项和大小上限,选择 HTML、JSON 或两者,然后点击 Export。出于安全原因,Telegram 可能会延迟完整导出并通知你的其他设备,所以你可能需要稍后回来,在同一台设备上重新发起请求。
可以在手机上导出 Telegram 聊天吗?
Telegram 的文档把导出工具放在 Telegram Desktop 中,"Export chat history" 和 "Export Telegram data" 这两个选项都在那里。实际可行的方法是在电脑上安装 Telegram Desktop,用同一个账号登录,然后从那里导出。你的云端聊天本来就在服务器上,所以一登录就会出现在桌面端。
Telegram 导出包含私密聊天吗?
不包含。Telegram 常见问题说私密聊天与设备绑定,不属于 Telegram 云端,导出对话框也没有把它们列在聊天类型中。如果某个私密聊天很重要,它只存在于进行过这段对话的设备上。
Telegram 导出包含已删除的消息吗?
不包含。导出读取的是你运行时对话的样子,所以在那一刻之前被为所有人删除的内容都不在里面。一条消息一旦被双方删除,Telegram 就无法恢复。请参阅我们的 Telegram 已删除消息指南,了解团队如何在删除发生之前保留记录。
Entergram 会备份我的 Telegram 消息吗?
不会。Entergram 实时从 Telegram 显示消息,不在数据库中保存消息历史。它额外提供的是:通过单向审计转发在 Slack 中保留一份持续副本;阻止工作区成员编辑或删除消息的锁定功能;以及可下载的分析数据,它记录活动,但不记录消息文本。
如果有人删除了一条 Telegram 消息,Slack 中的副本还会保留吗?
这一点尚未确认。Slack 转发是从 Telegram 单向流入每个席位的一个频道,Telegram 端删除消息后 Slack 副本会怎样,由 Entergram 后端决定。在依赖它之前,请在你自己的工作区测试,并同时开启删除锁定,它能从一开始就阻止工作区内的删除。
Telegram 聊天导出应该选 HTML 还是 JSON?
如果读文件的是人,选 HTML;如果是程序,选 JSON。如果导出有可能用于纠纷,两个都选。多占的磁盘空间,比对话改变之后再重新导出的代价小得多。
你的下一个决定:先导出哪个账号
挑出本季度一旦丢失损失最大的那个 Telegram 账号。通常是某一位销售用自己的号码持有、里面有你最大客户的那个账号。今天就对它运行 "Export Telegram data",两种格式都要,并把文件夹放进公司存储。然后决定这个账号是否还应该由一个人控制。如果答案是否定的,下一步就是把它迁入一个工作区,在那里编辑和删除锁定会生效,Slack 转发也会开始记录。



