Что такое отпечаток браузера и что сайт на самом деле может прочитать?

Каждый раз, когда вы открываете страницу, браузер передаёт сайту длинный список фактов о себе. Ни один из них не секрет, ни один не требует разрешения, и большинство нужно, чтобы страница правильно отображалась. Фингерпринтинг начинается тогда, когда сайт перестаёт использовать эти факты для отображения и начинает использовать их, чтобы узнавать вас.
Что страница может прочитать, не спрашивая
Скрипт в обычной вкладке может прочитать, среди прочего: строку user agent, список предпочитаемых языков, часовой пояс, размер экрана и плотность пикселей, число потоков процессора, округлённое значение памяти устройства, глубину цвета, поддержку касаний, название графического рендерера за WebGL, а также результат отрисовки небольшого изображения на canvas или рендеринга короткого аудиобуфера. Он также может наблюдать, сколько времени занимают некоторые операции, какие шрифты меняют ширину строки текста и какие медиаустройства существуют (количество, но не названия, пока вы не дадите доступ).
По отдельности всё это скучно. Часовой пояс сужает круг до нескольких сотен миллионов человек. Вместе они сужают его гораздо сильнее, потому что редка именно комбинация. Компьютер с Windows, конкретной строкой рендерера NVIDIA, 12 потоками, экраном 2560×1440, французским и английским языками в таком порядке и определённым хешем canvas — это не толпа.
Что делает сигнал пригодным для идентификации
Важны три свойства. Сигнал должен быть стабильным: тот же браузер должен давать то же значение завтра. Он должен быть разнообразным: разные браузеры должны давать разные значения. И он должен быть дешёвым: читаться за миллисекунды без запроса разрешения. Хеш canvas получает высокие оценки по всем трём, поэтому он есть в каждой библиотеке фингерпринтинга. Размер экрана хорош по первым двум и безупречен по третьему. User agent раньше был хорош по разнообразию и был намеренно выровнен производителями браузеров именно по этой причине.
Что страница прочитать не может
Эту часть склонны преувеличивать. Скрипт страницы не может увидеть ваш настоящий адрес, если вы за прокси: он видит то, что предъявляет прокси. Он не может читать другие вкладки, вашу историю, закладки или сохранённые пароли. Он не может с уверенностью определить, находитесь ли вы в приватном окне; эвристики, которые это обещают, регулярно ломаются. Он не может знать ваше имя. И он не может сам решить, является ли адрес прокси или дата-центром: этот вердикт приходит из репутационной базы, за которую платит сайт, а не из чего-либо, что сообщил ваш браузер.
Сайты, показывающие «оценку бота» или «прокси: да», сочетают то, о чём сообщил ваш браузер, с данными третьей стороны. Это законное действие, но важно знать, какая половина — измерение, а какая — справка из базы.
Зачем нужны диагностические страницы
Диагностическая страница вроде PowerScan читает те же сигналы, что и трекер, и показывает их вам, а не сохраняет. Смысл не в том, чтобы вас оценивать. Он в том, чтобы вы могли проверить две вещи: виден ли сигнал, который, как вы ожидали, скрыт, и согласованы ли сигналы друг с другом. Именно несогласованность приводит к пометке аккаунтов: адрес в одной стране, часы браузера в другой, кандидат WebRTC, не совпадающий с адресом, с которого вы пришли.
Читая отчёт, воспринимайте каждую строку как ответ на один вопрос: «что этот браузер только что сообщил этой странице?» Не больше. Хеш — это не вердикт, а число прочитанных сигналов — не мера того, насколько реальным вы выглядите.


