Как известно, Google хранит большое количество данных о своих пользователях, чем его непрерывно попрекают. Под давлением и критикой в Google создали механизм, который позволяет выкачать все свои данные. Этот сервис называется Takeout, и у него могут быть разные интересные применения, о которых мы и поговорим. А заодно детально изучим то, что он выдает на руки пользователю.
Как скачать сохраненные в Google данные
Причины взять и забрать всё могут быть разными. Например, вы хотите мигрировать на другой сервис и перенести туда свои данные: без конвертации вряд ли обойдется, но иногда это оправданная морока. Или, может быть, вы хотите сделать какую-то аналитическую систему в духе лайфлоггинга и quantified self и вам в этом помогут накопленные в Google данные. Или страна, в которой вы живете, вдруг решила отгородить свой интернет каким-нибудь великим файрволом, после чего Google окажется за бортом.
Итак, чтобы получить свои данные, нужно зайти по адресу takeout.google.com , выставить галочки напротив интересующих вас сервисов и подождать некоторое (ощутимое) время. В письме робот Google бодро сообщил, что данные собраны по 36 продуктам, занимают 63,6 Гбайт и разбиты по трем архивам. Причем основной объем пришелся на первые два, а третий оказался зазипованной страницей с каталогом всего выданного.
Если не хотите качать такие объемы, то заказывайте частичные архивы, которые будут включать не все сервисы. Например, если выключить Photos, YouTube и Gmail, а также Drive, если вы там храните что-то помимо тестовых документов, то может получиться всего несколько сот мегабайтов. Кстати, чем меньше архив, тем быстрее приходит ссылка на скачивание.
Какие данные собирает поиск Google
Начнем с одной из самых занимательных вещей — истории поисковых запросов. Она лежит в папке 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.
$ for F in *; do cat "${F}" | gron | grep "spysoftnet"; done
И увидите все свои запросы со словом spysoftnet за все время. Какие еще ключевики можно попробовать? Ну например, слово «скачать». 🙂 Или вот занятная идея: если поискать символ @, то вы найдете все почтовые адреса и аккаунты Twitter, которые вы пробивали через Google.
Обратите внимание, что здесь нет поиска по картинкам и видео, но мы их еще обнаружим в папке My Activity.
Какие данные собирает чат Google
Возможно, у вас уже где-то спрятана папка со старыми логами ICQ и вы бы хотели присовокупить к ней еще и все когда-либо написанное через Google Talk и Hangouts. Это вполне реально, но, к сожалению, читать переписку в том виде, в котором она приходит из Takeout, практически невозможно (в отличие, кстати, от логов ICQ).
Весь текст экспортируется как единственный файл JSON плюс горка приложенных картинок — все это лежит в папке Hangouts. С картинками никаких проблем, а вот в JSON на каждое написанное сообщение приходится порядка двух десятков строк метаданных. Но пожалуй, главная головная боль — в том, что вместо имени отправителя здесь ID пользователя.
Наверное, самое простое, что мы можем сделать, — это выкинуть всю мишуру и оставить только текст. По крайней мере можно увидеть какие-то, пусть и обезличенные, беседы.
$ gron Hangouts.json | grep '.text'
Так хотя бы есть шанс что-то выловить.
Какие данные собирает сервис Карты
Еще одна большая и важная категория личных данных. Начнем с простого — папки 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 (если вы совсем уж не опасаетесь делиться этими данными со случайными людьми).
Однако сам сервис Google здесь пока что вне конкуренции. К Google Maps прилагается утилита Timeline , где накопленные данные можно отсматривать по дням, и здесь, помимо голых данных, которые выдаются через Takeout, есть всякая аналитика. Google, например, определяет названия мест и заведений, которые вы посещали, и прекрасно различает транспортные средства (и может легко понять, например, на мотоцикле вы передвигались, на машине или на велосипеде).
Какие данные собирает 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: вы можете послушать собственный голос, который произносит фразы из серии «Окей, Гугл…».
Всю ту же информацию вы можете просматривать и фильтровать на сайте «Моя активность ». Там же можно удалить отдельные записи и отключить отслеживание отдельных активностей.
При этом формат, в котором все это выгружается, оставляет желать много лучшего. Это снова 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 или продолжить структурировать дальше. В общем, огромное поле для деятельности.
Другие сервисы 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.
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.
В выгрузке Takeout при желании можно найти и другие пробелы. Отсутствие данных из десктопного Chrome я уже упоминал, но есть и менее очевидные вещи. Например, страница для онлайнового просмотра активностей содержит не только поисковые запросы, но и привязку к месту, откуда вы их делали. В папке My Activity ничего похожего пока нет.
Однако, несмотря на все эти недочеты, сотрудникам Google стоит сказать спасибо: редко когда разработчики сервиса тратят столько усилий на улучшение портативности данных и повышение прозрачности их сбора. В результате Takeout полезен не только для того, чтобы забрать свои вещички и скрыться с ними, но и для самой разной аналитики.