В каждом треде про забаненный аккаунт рано или поздно появляется один и тот же совет: смените MAC-адрес, именно по нему вас и узнают. Звучит убедительно. MAC-адрес прошит в сетевую карту ещё на заводе, он глобально уникален и кажется ровно тем идентификатором, за который сайт ухватился бы первым.
Он же — единственный идентификатор, который сайту недоступен. Причина лежит ниже всего, чем сайт вообще управляет: ваш MAC-адрес никогда не уходит дальше вашего собственного роутера, и ничто внутри браузера его не выдаст. Виджет на этой странице всё равно пытается — и показывает, что сайт видит вместо него.
Ваш MAC-адрес сходит на первой же остановке
MAC-адрес отвечает на один-единственный вопрос: какой сетевой карте в этой сети предназначен этот кадр? Когда ваш ноутбук отправляет запрос сайту, он заворачивает пакет в кадр, где отправителем значится ваш MAC, а получателем — MAC вашего роутера. Роутер снимает этот кадр, сам пакет сохраняет и собирает для следующего отрезка пути новый кадр, уже со своим адресом в поле отправителя. Каждый роутер между вами и сервером проделывает то же самое ещё раз. К моменту, когда ваш запрос доходит до места, MAC отправителя в нём принадлежит тому роутеру, что стоит ближе всех к серверу. Ваш так и не выбрался из вашей гостиной.
- Ваше устройствозаворачивает запрос в кадр, адресованный роутеруsrc MAC
3C:22:FB:9A:41:D6ваш - Ваш роутер последняя остановка вашего MACснимает кадр и собирает новый для следующего переходаsrc MAC
9C:53:22:71:0B:E4роутера - Ваш провайдер и каждый роутер после негокаждый переход повторяет перезапись со своим собственным адресомsrc MAC
…роутера, передавшего последним - Сайтполучает ваш публичный IP-адрес и заголовки вашего запросавашего MAC в пакете нет
Может ли JavaScript узнать ваш MAC-адрес?
Нет, и с этой стороны всё закрыто так же наглухо, как со стороны сети. Браузер сообщит любому скрипту ваш язык и число ядер процессора через navigator, а WebGL сам выдаст модель вашего GPU — всё без единого запроса разрешения, — но ничего похожего на MAC в веб-платформе не существует нигде. На вопрос «как получить MAC-адрес из JavaScript» на Stack Overflow почти два десятилетия висит один и тот же ответ: никак, а спрашивающим советуют вместо этого сгенерировать собственный идентификатор.
Почему старые ответы на форумах говорят, что сайт может его прочитать
Поищите этот вопрос — и вы по-прежнему найдёте ответы, утверждающие, что сайт может его прочитать, если на его серверах стоят правильные «специальные скрипты». Эти ответы писались в другом браузере. В эпоху плагинов подписанный Java-апплет мог вызвать NetworkInterface.getHardwareAddress(), а элемент ActiveX в Internet Explorer — просто спросить у Windows. Весь этот класс дыр исчез: Chrome отказался от плагинов в 2015 году, Firefox — в 2017-м, а сам Internet Explorer отправили на пенсию в 2022-м. Ничто из того, что запускает современный браузер, до операционной системы так дотянуться уже не может.
Второй призрак — IPv6. Изначальная схема адресации строила ваш публичный IPv6-адрес отчасти из вашего MAC — формат под названием EUI-64, — а значит, аппаратный адрес буквально уезжал внутри каждого пакета. Дыру в приватности разглядели почти сразу: её закрыли расширения приватности (RFC 3041 в 2001 году, позднее доработанный в RFC 4941), и все основные операционные системы уже много лет по умолчанию используют случайные адреса. Закрыты и прямое чтение, и косвенная утечка; форумные посты, где сказано обратное, просто старше этих исправлений.
Кто видит ваш MAC-адрес (и почему ваш телефон им врёт)
В сети, к которой вы подключены, ваш MAC виден полностью. Его логирует ваш роутер, его видит каждое устройство в том же Wi-Fi — и тот, кто этим Wi-Fi управляет: работодатель, отель, аэропорт, кофейня. Когда страница входа в отеле узнаёт ваше устройство, это шлюз сети делится собственным знанием с собственным порталом, а не браузер что-то выдал. Вот это — настоящая поверхность слежки. Компании ритейл-аналитики когда-то отслеживали телефоны по торговым центрам по probe-запросам Wi-Fi, которые те рассылают в эфир, — поэтому производители ОС и зашевелились. iOS 14 в 2020 году начала выдавать каждой Wi-Fi-сети собственный «частный адрес», Android 10 сделал рандомизацию для каждой сети поведением по умолчанию, Windows умеет подставлять случайные аппаратные адреса для каждой сети, а macOS догнала остальных в Sequoia. Приложения потеряли доступ ещё раньше: начиная с iOS 7 приложение, запросившее MAC, получает в ответ 02:00:00:00:00:00, и Android 6 проделывает тот же трюк. Знаменитым исключением стал TikTok: газета The Wall Street Journal уличила его в том, что он как минимум 15 месяцев собирал MAC-адреса на Android через лазейку в обход блокировки Android 6. Но это приложение злоупотребляло доступом к ОС, а не сайт читал ваш браузер.
Всё это защищает вас от оператора сети, а не от сайтов. У сайтов этого адреса не было с самого начала.
Скрывает ли VPN ваш MAC-адрес?
Нет, и ему незачем. VPN шифрует ваш трафик и подменяет IP-адрес, который видит интернет. Ваш MAC живёт на отрезке между ноутбуком и роутером, ещё до всего этого, и дальше он не уходит ни с туннелем, ни без него. Роутер видит ваш MAC в любом случае; сайт не видит его ни в каком. Если VPN-провайдер рекламирует защиту MAC-адреса как функцию, он защищает вас от того, чего и так не происходило.
А вот то, что сайты действительно умеют выяснять о пользователях VPN, вполне реально — просто утечки живут в другом месте: часовой пояс, языки, владелец диапазона IP. Мы разобрали это в статье как сайты определяют ваш VPN.
За что на самом деле цепляется «бан устройства»
И тут мы подходим к причине, по которой большинство вообще спрашивает про MAC-адреса: платформа сказала, что забанено ваше устройство, а MAC — самое похожее на устройство из всего, чьё название вы знаете. Экран Snapchat SS06 «device banned», блокировка устройств в Roblox, форумный бан, переживающий новый аккаунт. Если сайт не видит ваш MAC, за что же он ухватился?
В вебе — за три вещи. Сохранённый идентификатор: какая-нибудь кука или значение в localStorage, записанное задолго до бана и переживающее выход из аккаунта. Ваш IP-адрес — или весь диапазон, к которому он относится. И отпечаток вашего браузера: canvas-хеш, список шрифтов, строка GPU, часовой пояс, сложенные в идентификатор, которому вовсе не нужно хранилище. У этих трёх очень разные сроки жизни — ровно поэтому платформы используют их все сразу. И поэтому же нет единого ответа на вопрос, сколько длится бан устройства: половина, завязанная на куки, умирает при очистке хранилища; половина с IP — когда сменится адрес; а отпечаток — только когда изменится сам браузер или железо под ним.
- сайты не видятMAC-адресникогда не покидает вашу локальную сеть, и браузерного API не существует
- сайты не видятСерийные номера железа (HWID)их читает античит уровня ядра внутри игр; веб-странице они недоступны
- сайты не видятИдентификаторы устройства на телефоневыдаются нативным приложениям самой ОС; на них опирается бан в Snapchat
- сайты это читаютIP-адресприходит с каждым запросом; меняется вместе с сетью или через VPN
- сайты это читаютКуки и хранилище сайтапереживает выход из аккаунта; очищается в настройках браузера
- сайты это читаютОтпечаток браузерапереживает очистку хранилища и смену IP
Нативные приложения и игры выступают в другой лиге, и эти две лиги постоянно путают. Приложение на телефоне получает от ОС платформенные идентификаторы устройства и аттестацию — ровно на это и опирается бан устройства в Snapchat. Игры на ПК с античитом уровня ядра — Vanguard, Easy Anti-Cheat, BattlEye — читают серийные номера материнской платы и дисков изнутри операционной системы: вот это настоящий бан по железу, тот самый HWID-бан. Веб-страница не умеет ничего из этого. Сайт, спросивший строку с моделью вашего GPU, уже упёрся в потолок того, что он вообще когда-либо узнает о вашем железе, — и даже это приходит как часть поверхности отпечатка, а не как серийный номер.
Что с этим делать на самом деле
- Перестаньте решать проблему MAC для сайтов. Решать нечего. Если сайт продолжает узнавать вас там, где, по-вашему, не должен, узнавание живёт в хранилище, IP или отпечатке, а полное сканирование браузера показывает, какие именно сигналы выдаёт ваш браузер.
- Включите рандомизацию MAC для сетей, которые вам не принадлежат. Это ровно та угроза, под которую функцию и делали, это ничего не стоит, а на современном телефоне она, скорее всего, уже включена.
- Если вы ведёте несколько аккаунтов по работе, то связывает их между собой именно отпечаток, а ручные заплатки создают те самые противоречия, за которыми охотятся системы детекта. Incogniton даёт каждому профилю собственный согласованный отпечаток и собственное хранилище — тот слой, где разделение действительно происходит, и никакой MAC-чейнджер для этого не нужен.
Допускает ли конкретная платформа что-либо из этого, определяют её правила — узнайте их прежде, чем действовать. Но что бы вы ни решили, решайте это про идентификаторы, которые сайт действительно может прочитать. Виджет выше перечисляет каждый из них, и строка про MAC-адрес — единственная, которую не заполнит ни одна страница.