Как привести экспорт чата WhatsApp в читаемый текст
WhatsApp отдаст вам переписку текстовым файлом — звучит так, будто дело уже сделано. Откройте его, и окажется иначе. На каждой строке метка времени в формате, который зависит от телефона. Первая строка — уведомление о шифровании. Дальше по тексту рассыпаны входы в группу, смены темы, пометки об удалённых сообщениях и — если в чате были картинки — очень много строк, где написано <Media omitted> и больше ничего.
Эта страница превращает всё это в читаемый разговор. Бросьте сюда .txt или .zip, в который WhatsApp его упаковал, — результат появится здесь же. Файл читается в этой вкладке браузера и никуда не загружается.
Как получить выгрузку из WhatsApp
И на iPhone, и на Android: откройте чат, нажмите на имя контакта или группы вверху, прокрутите до пункта Экспорт чата и выберите Без медиафайлов. Вариант с медиа приложит каждую фотографию и каждое голосовое, отчего архив вырастет в сотни раз, а текстовой расшифровке это ничего не добавит — сами сообщения в обоих случаях одинаковы.
На выходе — файл _chat.txt, обычно внутри .zip, отправленный через то меню «Поделиться», которое вы выберете. Здесь работают и отдельный текстовый файл, и архив.
Почему формат времени — самая трудная часть
Единого формата выгрузки у WhatsApp нет. Есть как минимум две формы строки сообщения и неограниченное число форматов даты, а что достанется вам, зависит от операционной системы и региональных настроек телефона.
iOS пишет метку времени в квадратных скобках: [12/03/2024, 14:23:01] Имя: сообщение. Android пишет её голой, отделяя от текста тире: 12/03/2024, 14:23 - Имя: сообщение. Секунды могут быть, а могут и нет. Часы бывают 24-часовые, а бывают 12-часовые с AM и PM. Дата бывает с днём впереди, с месяцем впереди и с годом впереди. Разделителями бывают косые черты, точки и дефисы.
Парсер принимает обе формы строки и сопоставляет дату нестрого, захватывая метку времени и не пытаясь трактовать её как календарную дату. Последнее — сознательное решение: 03/12/2024 для большей части мира это третье декабря, а в США — двенадцатое марта, и в файле нет ничего, что подсказало бы, какое из двух. Угадывание молча переврало бы даты в половине расшифровок. Исходная строка показывается ровно так, как её записал WhatsApp, — для того, кто при этом присутствовал, она однозначна.
Многострочные сообщения
Сообщение с переносами строк — список, адрес, длинный абзац, который кто-то разбил, — попадает в выгрузку как одна строка с меткой времени и следом строки-продолжения без метки и без каких-либо пометок. Разделителя нет. Единственный сигнал — отсутствие метки времени.
Поэтому любая строка, которая не начинается с распознаваемой метки времени, приклеивается к сообщению выше. Это и есть правильное прочтение, и оно объясняет поведение, которое вы могли видеть у простых скриптов: разбейте файл по переносам строк — и получите осиротевшие обрывки, не приписанные никому, с адресами и списками, разбросанными по расшифровке как отдельные сообщения.
Что убирают фильтры
По умолчанию уходят две категории, и переключатели возвращают любую из них:
- Системные уведомления. Сообщение о шифровании в начале, «X добавил(а) Y», «X вышел(вышла)», «Вы удалили это сообщение», смены темы и значка группы, уведомления о коде безопасности, записи о пропущенных звонках. В живой группе их бывает в разы больше, чем настоящих сообщений.
- Заглушки медиа.
<Media omitted>, локализованные варианты вроде «изображение отсутствует» и «аудио отсутствует», а также суффикс(file attached). В чате, где в основном шлют фотографии, это большинство строк, и содержания в них нет никакого.
Оставьте строки о медиа, если вам важен сам рисунок того, когда и что присылали. Оставьте системные уведомления, если нужна запись о том, кто и когда входил в группу. В остальных случаях и то и другое — шум, и его удаление обычно уменьшает файл вдвое.
Зачем это обычно нужно
Сохранить копию разговора перед выходом из группы или сменой телефона. Подготовить переписку как доказательство, где чистая читаемая расшифровка заметно полезнее сырого лога. Отдать длинную ветку модели, чтобы она пересказала решение, принятое где-то посреди трёхсот сообщений. Найти в переписке за годы деталь, которую больше нигде не записали. Превратить историю семейной группы в нечто пригодное для печати.
Про приватность здесь не для красоты
Сообщения WhatsApp защищены сквозным шифрованием при передаче. В момент, когда вы их выгрузили, эта защита закончилась: файл на телефоне — обычный текст, читаемый всем, кому вы его отдадите. Загрузка его в веб-конвертер обнуляет весь смысл шифрования, которое его донесло.
Здесь ничего никуда не загружается. Парсер — это JavaScript в этой вкладке: вашу выгрузку читает браузер, конвертирует в памяти и показывает. Ни один сервер её не видит, поэтому нет ни политики хранения, которую надо читать, ни заявки на удаление, которую надо подавать. Закройте вкладку — и всё исчезло.
Выгрузки из других мессенджеров работают на общей странице экспорта переписок, которая определяет формат автоматически.