Найти тему
Свидетели Сноудена

Какие данные о нас хранит Google и как их вернуть через Takeout

Оглавление

Причины взять и забрать всё могут быть разными. Например, ты хочешь мигрировать на другой сервис и перенести туда свои данные: без конвертации вряд ли обойдется, но иногда это оправданная морока. Или, может быть, ты хочешь сделать какую-то аналитическую систему в духе лайфлоггинга и quantified self и тебе в этом помогут накопленные в Google данные. Или страна, в которой ты живешь, вдруг решила отгородить свой интернет каким-нибудь великим файрволом, после чего Google окажется за бортом. Увы, бывает и такое.

Я за последние двенадцать лет немало пользовался продуктами Google, тестируя многие из них в рамках обзоров, и никогда не выключал следящие механизмы. Возможно, ты скажешь, что это безумие, но, во-первых, Google относится к моим данным бережно и причин для паники пока не давал, а во-вторых, я ни в коем случае не пропагандирую такой подход. Так что считай, что я терплю этот кошмар, чтобы тебе не пришлось!

Итак, чтобы получить свои архивы, нужно зайти в окошко по адресу takeout.google.com, выставить галочки напротив интересующих тебя сервисов и подождать некоторое (ощутимое) время. Когда я запросил полный архив, ссылка пришла через день, то есть больше чем через 24 часа. В письме робот Google бодро сообщил, что данные собраны по 36 продуктам, занимают 63,6 Гбайт и разбиты по трем архивам. Причем основной объем пришелся на первые два, а третий оказался зазипованной страницей с каталогом всего выданного.

-2

Если не хочешь качать такие объемы, то заказывай частичные архивы, которые будут включать не все сервисы. Например, если выключить Photos, YouTube и Gmail, а также Drive, если ты там хранишь что-то помимо тестовых документов, то может получиться всего несколько сот мегабайтов. Кстати, чем меньше архив, тем быстрее приходит ссылка на скачивание.

Поиск

Начнем с одной из самых занимательных вещей — истории поисковых запросов. Она лежит в папке Searches и разбита на файлы по три месяца, к примеру 2006-01-01 January 2006 to March 2006.json. Если откроешь один из них, то увидишь, что информация о каждом запросе состоит всего из двух вещей: времени в формате Unix и искомой строки.

Для перевода времени можно использовать какой-нибудь онлайновый конвертер, а если нужно будет сконвертировать массово, то это делается одной строкой на Python (замени слово «время» на свое значение):

datetime.datetime.fromtimestamp(int("время")).strftime('%d-%m%-%Y %H:%M:%S')

Но подробным анализом я предлагаю тебе заняться самостоятельно. Мы же забавы ради попробуем поискать вхождения тех или иных строк при помощи grep. Поскольку данные сохранены в JSON, их сначала нужно будет сконвертировать в строки — я для этого использовал утилиту gron, о которой недавно писал в рубрике WWW.

Если у тебя установлен gron, можешь написать что-то в таком духе:

$ for F in *; do cat "${F}" | gron | grep "xakep"; done

И увидишь все свои запросы со словом xakep за все время. Какие еще ключевики можно попробовать? Ну например, слово «скачать».

Или вот занятная идея: если поискать символ @, то ты найдешь все почтовые адреса и аккаунты Twitter, которые ты пробивал через Google.

Обрати внимание, что здесь нет поиска по картинкам и видео, но мы их еще обнаружим в папке My Activity.

Чаты

Возможно, у тебя уже где-то спрятана папка со старыми логами ICQ и ты бы хотел присовокупить к ней еще и все когда-либо написанное через Google Talk и Hangouts. Это вполне реально, но, к сожалению, читать переписку в том виде, в котором она приходит из Takeout, практически невозможно (в отличие, кстати, от логов ICQ).

Весь текст экспортируется как единственный файл JSON плюс горка приложенных картинок — все это лежит в папке Hangouts. С картинками никаких проблем, а вот в JSON на каждое написанное сообщение приходится порядка двух десятков строк метаданных. Но пожалуй, главная головная боль — в том, что вместо имени отправителя здесь ID пользователя.

Наверное, самое простое, что мы можем сделать, — это выкинуть всю мишуру и оставить только текст. По крайней мере можно увидеть какие-то, пусть и обезличенные, беседы.

$ gron Hangouts.json | grep '.text'

Так хотя бы есть шанс что-то выловить.

Google+

Что действительно есть смысл бэкапить — это посты из социальной сети Google+, которая стремительно становится артефактом прошлого. Если ты, конечно, вообще когда-либо ей пользовался.

Данные поделены на три папки: Google+ Stream, Circles и Pages. Давай заглянем в них по порядку.

Circles — это контакты людей, организованные по «кругам» из Google Plus. Формат — vCard (VCF) с той информацией, которую люди сами о себе заполнили. Можно при желании одним махом импортировать в любую адресную книгу.

Папка Pages будет присутствовать в том случае, если у тебя имелись публичные страницы. Но ничего интересного там нет, разве что юзерпик и обложка страницы.

Также к данным Google+ стоит отнести папку Profile. В ней содержится JSON с копией всех тех данных, что ты заполнил о себе в этой соцсети. Основные интересные вещи лежат в структурах urls (ссылки на другие профили в соцсетях) и organizations (места работы с датами). Забавная деталь: при том, что у меня в профиле не указан возраст, здесь присутствует поле "ageRange": {"min": 21}, значение которого Google, кажется, определил самостоятельно.

Самое главное ты найдешь в папке Google+ Stream. Здесь в качестве отдельных HTML свалены все твои посты с комментариями и даже отдельные комментарии. Можно полистать и поностальгировать, а можно парой строк на Python с BeautifulSoup выдрать, к примеру, только тексты постов. Выбирать нужно будет элементы с классами entry-title и entry-content.

К сожалению, картинки из постов не бэкапятся автоматически — они так и остаются ссылками на сервер Google, который еще и не отдаст их без авторизации. Недоработочка!

Карты

Еще одна большая и важная категория личных данных. Начнем с простого — папки MyMaps. Это маршруты, созданные тобой в Google Maps, — по одному файлу KMZ на маршрут.

KMZ — это формат Google Earth, который поддерживается и в других картографических приложениях. Ну а по сути это ZIP, в котором лежит файл KML, являющийся валидным XML. Если для твоих целей это по каким-то причинам не подходит, можешь воспользоваться сервисом GeoConverter и сконвертировать его, например, в GeoJSON, работать с которым слегка попроще.

Папка Maps (your places) содержит один файл — Saved Places.json. В нем собраны все твои закладки из Google Maps в виде очередной заковыристой структуры. Каждая из закладок — это элемент массива features, у которого есть заголовок, дата добавления, дата изменения и ссылка на Google Maps. А вот геокоординаты могут быть записаны по-разному: как поле geometry с массивом coordinates или как Location с полями Latitude и Longitude, но оно же (чтобы жизнь медом не казалась) может называться, например, Geo Coordinates. В общем, при желании учесть все эти особенности не слишком тяжело, но могло бы быть и попроще.

Наконец, самая занимательная папка — это Location History — файл со всей историей твоих перемещений с мобильным телефоном в кармане за все время. У меня эти данные занимают 7,5 Мбайт.

Файл устроен очень просто, особенно в сравнении с другими архивами. Это огромный массив из структур, включающих в себя: время в формате Unix, широту, долготу и точность определения. Иногда к ним добавляются (вероятно, когда их удавалось определить) направление движения в градусах, высота в метрах и точность определения высоты.

Что делать с этим файлом, кроме как сохранить на память? Например, можешь поупражняться в его анализе на Python или на R. Есть и специализированный софт для ковыряния таких данных — Location History Visualizer Pro (стоит 70 долларов), а также любительские сервисы вроде They Know Where You’ve Been (если ты совсем уж не опасаешься делиться этими данными со случайными людьми).

-3

Однако сам сервис Google здесь пока что вне конкуренции. К Google Maps прилагается утилита Timeline, где накопленные данные можно отсматривать по дням, и здесь, помимо голых данных, которые выдаются через Takeout, есть всякая аналитика. Google, например, определяет названия мест и заведений, которые ты посещал, и прекрасно различает транспортные средства (и может легко понять, например, на мотоцикле ты передвигался, на машине или на велосипеде).

Chrome

Это крайне интересная папка, которая содержит всю облачную часть Google Chrome (а может быть, и не всю — никогда нельзя быть уверенным!). Вот что в ней лежит.

  • Bookmarks.html — содержимое закладок в виде списка HTML. Распарсить его не составит труда — знай хватай данные из a href и дели на секции по содержимому h3. Для многих закладок указано время добавления в формате Unix.
  • Dictionary.csv — по всей видимости, здесь должны быть исключения для проверки орфографии, которых у меня нет.
  • Extensions.json — данные об установленных расширениях.
  • SearchEngines.json — данные о дополнительных поисковиках. Если тебе когда-нибудь понадобятся правила составления поисковых запросов к разным поисковикам, этот файл как раз пригодится. В остальных случаях — вряд ли.
  • SyncSettings.json — настройки Chrome.
  • Autofill.json — в теории здесь должны быть данные для автоматического заполнения форм, но у меня только пустой массив. Похоже, если понадобится, эти данные проще вытащить из самого Chrome.
  • BrowserHistory.json — честно говоря, я ожидал увидеть в этой папке огромный кладезь личной информации: шутка ли — полный список всех сайтов, которые я когда-либо открывал в Chrome! Однако меня ждало разочарование: в этом файле перечислены лишь четырнадцать ссылок, которые я успел открыть в мобильном Chrome, когда скачал его посмотреть. На десктопе при этом внушительный список сайтов и включена галочка Sync Everything. Глюк Takeout?

Если с последним пунктом тебе повезет больше, то ты с легкостью сможешь проанализировать историю своих перемещений по интернету. Google сохраняет: тип перехода (по ссылке — LINK или напрямую — TYPED), заголовок страницы, URL, ID клиента (полезно, чтобы отличить свой десктоп от телефона и планшета) и время в формате Unix.

My Activity

Это, пожалуй, одна из самых интересных папок, возможно даже более интересная, чем история поиска. Ее содержимое дает ответ на вопрос о том, как именно Google следит за пользователями. Пройдясь по папкам, ты можешь своими глазами увидеть, что он записывает каждые:

  • переход на сайт, аффилированный с Google Adwords;
  • книгу, открытую в Books;
  • сайт, на который ты ходил через Chrome;
  • использованный API (папка Developers);
  • котировку, открытую в Finance;
  • запрос к Goggles (поиск объектов на снимке);
  • просмотр страницы в Google Play Store;
  • обращение к справке (папка Help);
  • запрос к Image Search и переход по ссылке;
  • просмотр объекта на карте (Maps);
  • поиск в Google News и чтение статьи на сайте-источнике;
  • поисковый запрос и переход по ссылке из результатов (папка Search);
  • поиск товара или покупку в магазине (папка Shopping);
  • просмотр поездок в Google Trips;
  • поиск видео и переход из результатов (Video Search);
  • голосовой поиск (папка Voice and Audio);
  • поисковый запрос и просмотр роликов на YouTube.

Отмечу, что история сайтов Chrome у меня была такая же полупустая, как и в папке самого Chrome, а раздел Shopping вообще никуда не годится: за двенадцать лет Google едва отследил пару настоящих покупок. Тем не менее массив информации очень внушительный. Особенно радуют файлы MP3 в папке Voice and Audio: ты можешь послушать собственный голос, который произносит фразы из серии «Окей, Гугл…».

Всю ту же информацию ты можешь просматривать и фильтровать на сайте myactivity.google.com. Там же можно удалить отдельные записи и отключить отслеживание отдельных активностей.

При этом формат, в котором все это выгружается, оставляет желать много лучшего. Это снова HTML с не самой удобоваримой разметкой и 150-килобайтным куском Material Design в каждом файле. Я на скорую руку сочинил вот такой скриптик на Python, который можно закинуть в любую из папок и запустить.

import re

text = open('MyActivity.html', 'r').read()

result = re.findall(r'body-1">(.+?)</div>', text)

for r in result:
for s in r.split('>'):
print s.split('<')[0]

На выходе получишь очищенный текст, который можно, например, отправлять на вход grep или продолжить структурировать дальше. В общем, огромное поле для деятельности.

Остальные продукты

Подробно разбирать данные четырех десятков продуктов мы не будем, но вкратце все же пройдемся по оставшимся сервисам.

  • +1 — HTML со списком страниц, которые ты когда-либо лайкал через Google+. В моем случае — четыре рандомные страницы.
  • Bookmarks — то же самое, но для закладок. У меня по невыясненным причинам здесь оказались исключительно закладки из Google Maps — то есть звездочки, которыми можно отметить место на карте. Формат — HTML со ссылками на Google Maps. Открыв его в редакторе, можно дополнительно вытащить время добавления и в некоторых случаях — геокоординаты. Все эти данные, впрочем, полностью продублированы в папке Maps (your places), и в более удобном виде.
  • Calendar — пользовательские календари из Google Calendar в формате iCalendar (.ics), который поддерживается многими программами-календарями (в том числе Outlook, Thunderbird и эппловский Calendar). Так что их можно импортировать напрямую.
  • Photos. Если ты активно пользуешься Photos, то в этой папке будет огромный список подкаталогов — по одному на каждый день, на который приходится хоть один снимок. Хорошая новость заключается в том, что все фотографии хранятся и выгружаются в их исходном формате, даже если это огромные RAW. И (что немаловажно) даже если ты используешь бесплатную версию Photos, где вроде бы присутствует ограничение на качество снимков. К каждому снимку прилагается JSON с метаданными.
  • YouTube. В первую очередь ты здесь найдешь все ролики, которые когда-либо загружал на YouTube. Так же, как и фотографии, — в их исходных форматах. И конечно, к каждому прилагается JSON с метаданными. Также есть плей-листы, подписки в формате OPML, история просмотров и поисков в HTML (аналог того, что мы видели в My Activity) и даже комментарии — тоже в HTML.
  • Classic Sites — сайты, созданные при помощи не особенно популярного сервиса Google Sites (что-то среднее между narod.ru и Wikia). Я когда-то давно сделал пару тестовых сайтов, после чего не трогал сервис годами. Тем не менее они до сих пор существуют и экспортируются через Takeout. Перекрестные ссылки работают локально, а вот картинки остаются на сервере Google. И внутрь страниц лучше не заглядывать — вместо исходников ты увидишь горы оптимизированного JS в худших традициях Google.
  • Drive — все документы из Google Drive. Текст экспортируется как DOCX, таблицы — XLSX, комментарии — как HTML с теми же названиями, что и документ. Удобно, что названия файлов соответствуют заголовкам и структура папок тоже сохраняется.
  • Google Pay. Информация из этого сервиса разделена на две папки. Google Pay Send — список транзакций, произведенных через Google Pay (у меня — пустой файл CSV), и Google Pay rewards, gift cards, offers (у меня — пустой PDF).
  • Mail — полный архив писем Gmail. В папке лежит всего один файл — All mail Including Spam and Trash.mbox. Его заголовок говорит сам за себя: это вся-вся почта, включая спам и мусор. Формат — Mbox, то есть, по сути, огромный текстовый файл, где подряд идут все письма с заголовками. Его несложно импортировать в большинство почтовиков, но гораздо проще будет подключить их непосредственно к Gmail и по IMAP выкачать только нужные папки. Takeout тут пригодится разве что в том случае, если ты захочешь забрать вообще все одним махом и так в виде архива и сохранить на будущее.
  • Google My Business — здесь в моем случае вообще ничего интересного, только JSON буквально из трех строчек: номер аккаунта, имя и фамилия и пометка personal.
  • Contacts — адресная книга из Gmail. Контакты разбиты на папки по группам, плюс есть папка All Contacts, которая объединяет (и дублирует) содержимое остальных. Внутри каждой папки — файл vCard и картинки с юзерпиков. Забавный эффект — тут картинки отображаются целиком, в том виде, в котором их загружали в Google. То есть если кто-то поместил свое лицо в кружок и решил, что остальное никто никогда не увидит, то он ошибается.
  • G Suite Marketplace — плагины для приложений Google, которые ты выставлял в фирменный магазин. Я не выставлял, поэтому у меня лишь один файл — readme.
  • Tasks — вот уже десять лет в глубинах Google существует сервис, предназначенный для ведения списков дел. Встретить его можно, например, в Gmail и Calendar. Здесь же ты можешь найти его «отгрузку» в виде довольно мудреной структуры в JSON.
  • Google Play Books — увидев, что в этой папке лежат подкаталоги с названиями книг, я уже было обрадовался: неужели найден способ получать копии книг, купленных в Play Books? Ха-ха. Нет, конечно. Вместо этого в каждом из подкаталогов — HTML с названием книги, именем автора, временем, когда книга была открыта последний раз, внутренним ID Play Books и ссылкой. Польза, конечно, сомнительная, но если книг много, то при желании можно вытащить их список, взяв названия и имена авторов из элементов с классами header и author.

Остается еще несколько продуктов, по которым в моем архиве ничего не было из-за того, что я ими никогда не пользовался. Это Blogger, Classroom, Fit, Play Music, Groups, Handsfree, Hangouts on Air, Keep, Search Contributions и Voice. Пожалуй, наибольшее упущение — это Keep, но вот в этом репозитории ты можешь найти готовый парсер для его данных.

Выводы

Получается, что самые важные архивы, помимо почты, фотографий и документов, — это Searches, Location History, BrowserHistory.json из папки Chrome и My Activity.

Можно ли в итоге сказать, что через Takeout выдают все личные данные? Вряд ли. Отсутствуют как минимум старые сервисы, поддержка которых прекращена: нет ни данных Google Reader, ни волн из Wave. Зная Google, я с трудом верю, что все эти данные уничтожены. Скорее их убрали в холодное хранилище.

В выгрузке Takeout при желании можно найти и другие пробелы. Отсутствие данных из десктопного Chrome я уже упоминал, но есть и менее очевидные вещи. Например, страница для онлайнового просмотра активностей содержит не только поисковые запросы, но и привязку к месту, откуда ты их делал. В папке My Activity ничего похожего пока нет.

Однако, несмотря на все эти недочеты, сотрудникам Google стоит сказать спасибо: редко когда разработчики сервиса тратят столько усилий на улучшение портативности данных и повышение прозрачности их сбора. В результате Takeout полезен не только для того, чтобы забрать свои вещички и скрыться с ними, но и для самой разной аналитики.