Сайт блокирует вас только с включённым VPN? Вот что он видит
Блокировка обычно связана с адресом выхода, а не с утечкой. Проверьте сеть, из которой якобы приходит ваш трафик, резолвер, который сайт может логировать, и что знает код страницы.
Магазин нормально загружается дома и показывает стену «необычного трафика» в тот момент, когда туннель поднимается. Форум отказывается пускать вас, а страница стриминга настаивает, что вы в стране, где никогда не были. Ничего из этого не требует шпионского ПО. Сайт видит адрес, с которого приходят ваши пакеты, а с VPN этот адрес принадлежит дата-центру, а не домашней линии. Большая часть того, что называют обнаружением VPN, начинается и заканчивается этим одним фактом, а остальное — вывод с предсказуемой частотой ошибок.
Блокировка начинается с того, откуда якобы приходят ваши пакеты
Каждый запрос несёт адрес источника, и принимающий сервер может проверить его в открытых данных: какая сеть его анонсирует, является ли она хостинг-провайдером, попадала ли она в списки злоупотреблений и какую страну назначает реестр. Ничто из этого вас не идентифицирует, но всего вместе достаточно, чтобы отнести вас к категории.
Посмотрите на свой трафик глазами постороннего. Две команды покрывают большую часть поверхности, и вторая — та, которую люди забывают:
curl -sS https://ipinfo.io/json
dig +short TXT o-o.myaddr.l.google.com @ns1.google.com
Первая возвращает адрес выхода, его организацию и страну. Вторая возвращает адрес резолвера, который дошёл до сервера имён Google; он часто относится к другой сети, чем ваш выход, и это адрес, который видит сайт, если логирует данные на стороне резолвера. Когда эти два относятся к разным странам, некоторые сайты считают расхождение подозрительным, даже если с вашей настройкой всё в порядке.
Когда отказ начинается только после поднятия туннеля, подозревайте прежде всего адрес выхода. Смените сервер и повторите попытку, прежде чем трогать браузер. Блокировка, которая следует за вами через три выхода одного провайдера, связана с диапазонами провайдера; блокировка, которая исчезает на другом сервере, связана с этим единственным адресом.
Часовой пояс, язык и часы не совпадают с адресом
Код страницы может прочитать ваш часовой пояс, языковые предпочтения и настройки экрана без какого-либо запроса разрешения. Браузер, сообщающий центральноевропейское время, когда соединение идёт из дата-центра в Сингапуре, — более сильный сигнал, чем один адрес, и именно такое расхождение система оценки мошенничества и создана замечать.
Intl.DateTimeFormat().resolvedOptions().timeZone
navigator.language
Intl.DateTimeFormat().resolvedOptions().locale
Эти три строки в консоли разработчика говорят, что ваш браузер отдаёт добровольно. Клиент VPN может изменить ваш маршрут и ничего больше, поэтому профиль, который вы носите, остаётся домашним, а выход — нет. Здесь важна согласованность: ноутбук, настроенный на тот же регион, что и выход, выглядит обычным, а тот, что противоречит сам себе, — нет.
Именно поэтому сбой периодический. Многим сайтам всё равно, некоторые его оценивают, а один членский сайт решает, что вы мошенник. Клиент во всех трёх случаях работает правильно, и поэтому обычный ответ поддержки, «наверное, это ваш браузер», одновременно раздражает и отчасти верен.
Что код страницы действительно знает о вашей машине
В JavaScript нет API, перечисляющего сетевые интерфейсы. Страница не может спросить, какие адреса есть у вашего ноутбука, поэтому старое утверждение, что скрипт читает ваш LAN-адрес, — в основном воспоминание эпохи плагинов, когда элементы ActiveX, апплеты Java и другой нативный код могли делать именно это.
| Signal | What it reveals | Status today |
|---|---|---|
| Source address of the request | Exit network, country, hosting status | Always visible; the main signal |
| Time zone and language | Where the profile claims to be | Readable without permission |
| WebRTC candidates | Local addresses, historically | Host candidates are mDNS-obfuscated by default |
| Interface list | All local addresses | Not available to ordinary JavaScript |
WebRTC — честное исключение из правила «никаких утечек локальных адресов». Сбор его кандидатов когда-то раскрывал локальные адреса любой странице, которая просила, и исправлением стала замена хостовых кандидатов случайными именами mDNS. Это поведение по умолчанию действует в текущих браузерах, но это решение браузера, а не гарантия протокола, поэтому устаревшая сборка или ужесточённая конфигурация, снова включающая локальных кандидатов, всё ещё может течь. Обновление браузера помогает вам здесь больше, чем любое расширение.
Ваш провайдер видит имена, а не содержимое
HTTPS защищает содержимое страницы от края до края, и оператор туннеля, пересылающий эти байты, не может их прочитать. Оператор всё ещё может видеть, к какому адресу вы обращались, а в большинстве развёртываний и имя сервера в рукопожатии, потому что имя должно быть читаемым, чтобы соединение направлялось на нужный сайт. Encrypted Client Hello существует именно для того, чтобы скрыть это поле, и помогает только тогда, когда его поддерживают и клиент, и сайт.
Разрешение имён — это другая половина. Если ваш провайдер также предоставляет резолвер, он видит каждое имя, которое вы ищете, ещё до появления соединения. Если ваше устройство использует публичный резолвер через HTTPS, провайдер видит соединение с этим резолвером и ничего больше, а список видит сам резолвер.
Незашифрованный HTTP-запрос читается оператором по той же причине, по которой он читается сетью отеля: ничего внутри него не зашифровано. Туннель никогда не утверждал обратного и не исправляет выбор приложения.
Отделите «это VPN» от «это я»
Обнаружение дёшево, вероятностно и часто ошибочно. Общие адреса выхода помечаются, потому что кто-то другой злоупотреблял ими, корпоративные диапазоны классифицируются как хостинг, а мобильные операторы выдают географические результаты, удивляющие всех. Идентификация — другая задача: ей нужна постоянная связь, например аккаунт, в который вы вошли, cookie, платёжные данные или два наблюдателя, сравнивающих заметки.
Решите, с чем вы на самом деле боретесь. Если цель — прочитать страницу, HTTPS уже выполняет эту работу, и туннель меняет немногое. Если цель — не дать сайту узнать, в каком вы городе, важны выход и резолвер. Если цель — разорвать связь с вашей настоящей личностью, слабое место — аккаунт, и смена серверов ничего не делает с логином, который вы только что использовали.
Новый выход ниоткуда вас не выводит и не может удалить то, что сайт уже сохранил об использованном аккаунте. Поэтому практическая последовательность лишена блеска: выберите выход, сеть которого выглядит обычно, держите профиль браузера согласованным с ним, обновите браузер, чтобы склонные к утечкам функции использовали современные значения по умолчанию, и примите, что небольшое число сайтов всё равно ошибётся на ваш счёт.