LINUX.ORG.RU

Что сайт знает о вас без логина: открытая страница для проверки отпечатка браузера и выходного IP

 , , ,


1

1

Привет. Сразу disclosure: я автор, страница моя, денег за неё не беру. Русский у меня не родной, текст помогал вычитать переводчик — если где-то коряво, поправьте.

Задача, из-за которой я это сделал: включаешь VPN или прокси, а сайт всё равно «узнаёт» тебя или, наоборот, начинает подозревать. Обычно причина не в IP, а в рассогласовании сигналов: часовой пояс и язык браузера не совпадают со страной выходного IP, WebRTC светит другой адрес, DNS-резолвер провайдера, отпечаток canvas/WebGL/шрифтов уникален и т. п.

https://who.1ms.dog/ru/ показывает это на одной странице:

  • выходной IP, ASN и страна (и отдельно — что видно через WebRTC);
  • что сообщают браузер и ОС: часовой пояс, языки, экран, железо;
  • отпечатки canvas / WebGL / audio / шрифтов и насколько они уникальны;
  • какие из этих сигналов противоречат друг другу (например, IP в Германии, а TZ Asia/Shanghai).

Без регистрации и без рекламы. Исходники под MIT: https://github.com/yt1988/who-are-you — можно поднять у себя. Страница входит в мой набор сетевых утилит 1ms.dog.

Вопрос к знающим: какие ещё сигналы вы бы проверяли, а что из показанного считаете бесполезным шумом? Критика приветствуется.


Часы вашего устройства настроены на Япония, а сейчас вы здесь: Beauharnois, Канада. Ваш язык — американский английский; часовой пояс компьютера — Япония, стандартное время, формат часов — 12-часовой.

Хорошая новость: ничего такого, из-за чего сайт сразу выделил бы вас.

У вас ПК на Linux, браузер Firefox 160, экран 2560×1440 · 144 Hz, видеокарта Firefox скрывает настоящую модель (сообщает Radeon R9 200 Series того же класса): непонятно, для чего он.

В интернет вы выходите через OVH Hosting: это сеть дата-центра, похоже на VPN или прокси, и соединение открывает сам ваш Linux. DNS-сервер, который находит для вас адреса сайтов, находится здесь: Германия. Ваш IP из дата-центра, так что сайты, скорее всего, примут вас за пользователя прокси или VPN.

Тема — тёмная; рекламу вы блокируете; ваш отпечаток ничем не защищён. Локальная запись стёрта, но метка в window.name уцелела: сайт вас всё равно узнаёт. Шрифты подсказывают: вы пишете код. Что до возраста, по этим данным сайту его не узнать.

Для сайта это машина среднего уровня (2K, 144 Hz, Radeon R9 200 Series, потоков: 8). Браузер свежий: вы следите за обновлениями. Вы открыли страницу вечером, около 21:00 по вашему времени, от сети или нет — не понять, с настройками браузера по умолчанию.

В толпе: на сайте всего проверок — 208 974, и ваш отпечаток был ещё лишь у 2; сильнее всего вас выделяет: Список шрифтов, Canvas.

Ну что ж, всё не так уж плохо. Пусть и ещё лишь у 2, но хоть не уникальный, и реальное местоположение (Москва) не определило. Разрешение экрана не вижу особого смысла скрывать. Количество потоков тоже не вижу особого смысла скрывать, но определило его неверно, должно быть 16 (реальных ядер 8).

DNS, кстати, разный всё время выдаёт, то Россия, то Германия.

Факт использования прокси скрыть сложно/дорого, поэтому тоже не парюсь по этому поводу.

Было бы неплохо, если бы сразу выдавались советы, как понизить уникальность отпечатка.

CrX ★★★★★
()
Последнее исправление: CrX (всего исправлений: 3)

Какая-то лажа:

Часы вашего устройства настроены на Россия, а сейчас вы здесь: Нью-Йорк, Соединенные Штаты. Ваш язык — американский английский;
$ get-ip | sel city, country

city   country
----   -------
Moscow RU
dmitry237 ★★★★★
()
Последнее исправление: dmitry237 (всего исправлений: 1)

Вопрос к знающим: какие ещё сигналы вы бы проверяли,

в случае выхода по ipv6 не смотрит, какой ipv4 и не делает соответствующие выводы


В толпе: на сайте всего проверок — 209 105, и такой отпечаток был только у вас; сильнее всего вас выделяет: Список шрифтов, Canvas.

неожиданно
я никогда не игрался со шрифтами

madcore ★★★★★
()

Один и тот же на любом сайте, в режиме инкогнито и через VPN

Заявление очень сильное, но что в Firefox, что в Chrome «инкогнито» меняет отпечаток

nutsandmilk ★★★
()

Спасибо всем, что погоняли. По пунктам.

не открывается, я защищен ?

x905, скорее нет :) Страница целиком на JS, так что с NoScript/uMatrix она просто пустая. Но IP, ASN, TLS/TCP-отпечаток и DNS сайт видит и без JS. Если не сложно, напишите, что именно не открывается: белый экран или ошибка?

Какая-то лажа: … Нью-Йорк … get-ip … Moscow RU

dmitry237, похоже, браузер и консоль у вас выходят разными путями. who показывает адрес, с которого пришёл HTTPS-запрос именно браузера, а get-ip ходит из системы мимо браузерного прокси. Нет ли в браузере прокси/расширения или раздельного туннелирования (split tunnel)? На главной 1ms.dog это видно отдельно: прямой выход и через прокси. Если прокси нет, а всё равно Нью-Йорк, пришлите ASN из карточки, посмотрю, откуда геобаза это берёт.

в случае выхода по ipv6 не смотрит, какой ipv4

madcore, справедливо. Оба выхода (v4 и v6) на странице показываются в блоке выходов, но вывод про страну/дата-центр строится по адресу основного запроса. Если v4 и v6 смотрят в разные страны или один из них через VPN, а второй нет, это как раз сильный сигнал, и его надо выносить в вывод. Записал. Про шрифты: на Linux набор шрифтов почти всегда уникальный из-за ручной установки; в Firefox это режет privacy.resistFingerprinting (или FPP), но он ломает часовой пояс и ещё кое-что.

Заявление очень сильное, но что в Firefox, что в Chrome «инкогнито» меняет отпечаток

nutsandmilk, принято, формулировка слишком категоричная. В приватных окнах Firefox включена защита от отпечатков (шум в canvas и т. п.), Brave рандомизирует по умолчанию, поэтому там отпечаток действительно меняется. В обычном Chrome инкогнито шрифты/WebGL/экран обычно те же, но «на любом сайте» звучит как гарантия, а это не так. Поправлю текст.

yt1988
() автор топика

Где-то был сайт, фингерпринтящий чисто по шрифтам, даже без js.
Этот так не может :(

mittorn ★★★★★
()
Ответ на: комментарий от yt1988

Если не сложно, напишите, что именно не открывается: белый экран или ошибка?

Cloudflare частично заблокирован в РФ, ваш сайт попал под эту блокировку.

maxcom ★★★★★
()
Ответ на: комментарий от yt1988

похоже, браузер и консоль у вас выходят разными путями.

Это просто json с https://ipin.io/ru/iplocation
Но через браузер все же показывает штаты, так что наверное вы правы.

UPD. Забыл про прокси-расширение, без него страница вообще не открылась.

dmitry237 ★★★★★
()
Последнее исправление: dmitry237 (всего исправлений: 1)
Ответ на: комментарий от maxcom

Cloudflare частично заблокирован в РФ, ваш сайт попал под эту блокировку.

maxcom, спасибо, это многое объясняет — значит, x905 видел не «защиту», а просто недоступный хост. Сам сайт я сейчас переложить не могу, но передам как известную проблему: для русскоязычной аудитории who за Cloudflare без прокси фактически не работает. До исправления честный вариант такой: если страница не открывается без прокси, то её результат с прокси показывает именно выход прокси, а не ваш домашний IP.

Где-то был сайт, фингерпринтящий чисто по шрифтам, даже без js.

mittorn, да, такое делается на чистом CSS: @font-face с src: local(...) и фоновой картинкой на каждый вариант, и сервер по запросам видит, какие шрифты есть. who так не умеет, он считает шрифты через JS/Canvas. Без JS он покажет только то, что видно серверу: IP, ASN, заголовки, TLS. Идея хорошая, запишу как пожелание.

dmitry237, спасибо, что перепроверили с выключенным расширением — сходится с тем, что браузер и консоль шли разными путями.

yt1988
() автор топика

У меня в ведроиде формат времени выставлен 24-часовым, т.е. отличным от остальной (американской) локали. Сайт говорит, что он у меня 12-часовой, что неверно.

thesis ★★★★★
()

В толпе: вы отказались от учёта, поэтому нельзя сказать, насколько вы выделяетесь.

Ето как?

Ololo_Trololo ★★★
()
Ответ на: комментарий от madcore

У меня пишет ровно то же самое (уникальный отпечаток, выделяют шрифты и канвас). Подозреваю что среди аудитории проверяльщика одни виндузятники и каждый посетитель с линуксом оказывается уникален. У CrX вон тоже про шрифты и канвас пишет, хотя он и уже не уникальный а один из трёх.

firkax ★★★★★
()

Подозреваю что сайт за клаудфларом в качестве входящего запроса видит не совсем то, что слал пользователь.

firkax ★★★★★
()

Сайт говорит, что он у меня 12-часовой, что неверно.

thesis, спасибо, похоже на баг в формулировке. Браузер не отдаёт странице системную настройку Android «24 часа» — JS видит только то, что выводится из локали (Intl, hourCycle). Для en-US по умолчанию это 12 часов, поэтому сайт и пишет «12-часовой». Правильнее было бы писать «формат времени по умолчанию для локали», а не «ваш формат». Передам как исправление текста.

В толпе: вы отказались от учёта, поэтому нельзя сказать, насколько вы выделяетесь. Ето как?

Ololo_Trololo, блок «в толпе» сравнивает отпечаток с анонимной статистикой посетителей сайта. Учёт можно отключить, и если он отключён или запрос статистики не дошёл (например, его срезал блокировщик), сравнивать не с чем — отсюда эта фраза. Согласен, звучит криво, будто вы что-то нажали сами. Тоже передам.

Подозреваю что среди аудитории проверяльщика одни виндузятники и каждый посетитель с линуксом оказывается уникален.

firkax, да, это честное ограничение: «уникальность» считается относительно тех, кто заходил на сайт, а не всего интернета. При небольшой и перекошенной выборке Linux + свои шрифты + canvas почти гарантированно дают «уникален». Цифру стоит читать как «вы заметны среди посетителей этого сайта», не больше.

сайт за клаудфларом в качестве входящего запроса видит не совсем то, что слал пользователь.

Тоже верно. TLS терминируется на Cloudflare, так что сервер получает уже пересобранный запрос, а IP берётся из заголовка, который ставит CF. Заголовки и всё, что связано с TLS/HTTP, нужно читать с этой поправкой. JS-часть (canvas, шрифты, WebRTC, часовой пояс) от этого не зависит — её считает сам браузер.

Спасибо всем, такие замечания полезнее любых лайков.

yt1988
() автор топика

Плохо. Заявляет, что у меня:

Автоматизация
Закройте Selenium, Puppeteer и подобные инструменты, затем перезагрузите страницу

Открыл через мобильный хром.

PPP328 ★★★★★
()
Ответ на: комментарий от PPP328

Заявляет, что у меня: Автоматизация… Открыл через мобильный хром.

PPP328, спасибо, это ложное срабатывание. Посмотрел в исходники: «автоматизация» ставится либо по navigator.webdriver, либо по глобальным переменным драйверов (cdc_, __puppeteer и т.п.), либо по признакам headless — и для headless хватает двух слабых признаков из списка: outerWidth = 0, outerHeight = 0, innerWidth = 0, пустой navigator.languages. Подозреваю, что в мобильном Chrome (особенно если страница открыта во встроенном браузере приложения/Custom Tab) outerWidth/outerHeight отдаются нулями — и два «признака» набираются на ровном месте.

Если не сложно: у строки «Автоматизация» есть пояснение, какие именно признаки сработали — что там написано? И страница открыта прямо в Chrome или из какого-то приложения (Telegram и т.п.)? По этому можно будет поправить правило, чтобы на Android такие нули не считались.

Код тут, если интересно глянуть самому: https://github.com/yt1988/who-are-you (src/app.js, функция autoTraces).

yt1988
() автор топика
Ответ на: комментарий от yt1988

Сейчас больше не говорит про puppeteer, там зеленое. Но зато говорит мне что я прикидываюсь и на самом деле «не там где я пытаюсь показаться». Физически нахожусь в Кыргызстане, часовой пояс, IP, всё на месте. Но сайт говорит что я плохо притворяюсь, потому что язык устройства - русский, ай-яй-яй. Ничего, что в стране несколько языков и по-русски здесь говорят больше чем по-кыргызски? Тут даже полностью кыргызских школ нет, только русские и русско-кыргызские.

PPP328 ★★★★★
()
Ответ на: комментарий от firkax

я автор / Посмотрел в исходники / Что-то не сходится.

firkax, справедливо. Скажу прямо: код писался с большой помощью ИИ, и здесь я тоже отвечаю с помощью ассистента (с русским у меня так себе). Поэтому «посмотрел в исходники» — буквально: прежде чем отвечать про конкретное правило, я проверяю, что там реально написано, а не пересказываю по памяти. Репозиторий мой: https://github.com/yt1988/who-are-you

Физически нахожусь в Кыргызстане… язык устройства — русский

PPP328, это ложное срабатывание, и формулировка «плохо притворяетесь» тут вообще не к месту. Проверка сравнивает язык браузера со страной IP, а русский как основной язык в Кыргызстане (и в Казахстане, Беларуси и т.д.) — норма, а не признак маскировки. Правильно было бы считать язык «своим» для всех стран, где он официальный или массово используемый, а не только для одной. Запишу как баг. Спасибо, что вернулись и перепроверили — хорошо, что «автоматизация» на телефоне теперь зелёная.

yt1988
() автор топика

Любопытно. В настройках Chromium я отключил возможность использования локальных шрифтов (Settings, Privacy and Security, Additional Permissions, Fonts, Don’t allow sites to use fonts installed on your device). Но этот сайт таки сумел увидеть Jetbrains Mono.

В толпе: на сайте всего проверок — 214 812, и такой отпечаток был только у вас; сильнее всего вас выделяет: WebGL, Список шрифтов.

Приятно быть уникальным.

vbr ★★★★★
()
Последнее исправление: vbr (всего исправлений: 1)

Да всё можно достать по заходу на сайт.

Тут случайно ткнул на рекламу, оказался какой-то автосалон. Сразу закрыл.

Мне через час уже названивали все автосалоны Москвы - «интересуетесь?».

Romanych ★
()
Ответ на: комментарий от vbr

Эта настройка в Chromium закрывает только Local Font Access API (window.queryLocalFonts()), когда сайт напрямую просит список шрифтов. Старый способ она не трогает: страница рисует строку шаблонным шрифтом и шрифтом-кандидатом ("JetBrains Mono", monospace) и сравнивает ширину. Если размеры отличаются, шрифт установлен. Разрешений на это не нужно, поэтому JetBrains Mono и всплыл.

Что реально помогает: в Firefox privacy.resistFingerprinting или layout.css.font-visibility.level = 1 (видны только системные базовые шрифты), в Brave — встроенная защита от фингерпринта со случайным шумом. В обычном Chromium штатного способа скрыть шрифты от замера, насколько я знаю, нет.

Про «уникальность»: на Linux с парой дополнительных шрифтов и дискретной видеокартой это почти неизбежно, учитывается только среди посетителей этого сайта.

yt1988
() автор топика
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария