Нове розташування VPN не скидає дозвіл на сповіщення
Дозвіл на сповіщення належить джерелу сайту, а не вашій IP-адресі. Подивіться, який шар зберігає кожен дозвіл і чому доставка push через VPN виглядає зламаною.
Думка про те, що зміна VPN може скинути дозвіл сайту на сповіщення, хибна так, що це коштує людям реального часу. Ніщо у вашій вихідній адресі не є частиною запису про дозвіл. Дозвіл сайту зберігається щодо його джерела всередині одного профілю браузера, тому переїзд з одного сервера на інший залишає його рівно там, де він був. Змінюється ж ваша сесія, і зазвичай саме на неї дивляться люди, коли вирішують, що VPN щось зробив із їхніми сповіщеннями.
Три сховища, які виглядають як одне налаштування
Дозвіл — це один запис, перемикач сповіщень операційної системи — інший, а власний стан підписки сайту — третій. Кожен відкликається в іншому місці іншою дією.
| Layer | Where it lives | What actually revokes it |
|---|---|---|
| Permission grant | Browser profile, keyed by origin | Site settings, site reset, or clearing site data |
| OS delivery switch | Operating system notification settings | The OS per-app or per-browser toggle |
| Push subscription | Push service, bound to a service worker registration | Unsubscribe, or a subscription the service considers expired |
До чого прив'язаний дозвіл
Дозвіл на веб-сповіщення діє за джерелом і за профілем. Він іде за https://app.example.com а не за вашою публічною адресою, тому той самий сайт, запитаний на іншій машині, має запитати знову, і тому інша кінцева точка VPN не створює нового запиту. Перевірте це там, де воно записується: панель сповіщень у налаштуваннях сайту перелічує джерела, яким надано дозвіл, а сама сторінка може повідомити свій стан.
chrome://settings/content/notifications
navigator.permissions.query({name: 'notifications'})
chrome://serviceworker-internals
Запит повідомляє стан, який джерело вже має, не запитуючи нового, а сторінка service worker — це місце, де реєстрація та її push-підписка живуть або не можуть жити. Якщо дозвіл є, а доставка все одно не працює, ви дивитеся на третій шар, а не на перший.
Шлях push — це окремі відносини
Web Push додає підписку, якою сторінка не керує напряму. Браузер запитує PushSubscription у push-служби, передає сторінці URL кінцевої точки, а доставка згодом іде на цю точку й передається зареєстрованому service worker. Документація MDN про PushSubscription описує кінцеву точку як власний URL на push-сервері для worker, що підписується, і в цьому вся суть: це можливість доставки, а не публічна адреса, яку ви публікуєте.
Звідси випливають два наслідки. По-перше, до URL кінцевої точки слід ставитися як до чутливих даних, тому йому не місце в публічній гілці підтримки. По-друге, push-служба застосовує власну автентифікацію, тому самого лише володіння URL недостатньо, щоб довести, що хтось може надіслати автентифіковане повідомлення. Коли ви відписуєтеся, браузер велить push-службі анулювати підписку, і саме ця дія припиняє доставку. Зміна VPN-серверів — не ця дія.
Чому VPN виглядає винним
Змініть вихідну адресу, і багато сайтів заново автентифікують вас, змінюють сесійний cookie або заново малюють сторінку налаштувань з нуля. Тоді сповіщення з цього сайту можуть припинитися з причин, не пов'язаних із дозволом: нова сесія не та, що підписана, сайт заново перевіряє власну маркетингову згоду, або регіональне правило приховує функцію. Доставка може не працювати й тому, що хост кінцевої точки push недоступний або повільний через новий шлях, а ззовні це виглядає точно так само, як відкликаний дозвіл.
Читайте шари окремо, перш ніж щось підсумовувати. Панель дозволів каже, чи існує дозвіл; список service worker каже, чи є реєстрація та підписка; перемикач операційної системи каже, чи може браузер узагалі щось показувати.
Змінюйте те, що ви збиралися змінити
Якщо ви хочете зупинити сповіщення, відкличте дозвіл для цього джерела й відпишіть push-налаштування сайту, а потім переконайтеся, що перемикач операційної системи не єдине, що стоїть між сайтом і вашим екраном блокування. Блокування майбутніх сповіщень не видаляє дані облікового запису, які сайт уже має, і це окремий запит до сайту.
Якщо ви хочете інший мережевий шлях, змініть VPN. Він впливає на ідентичність сесії, географічні правила та те, до яких серверів ви можете дістатися, і залишає дозвіл на сповіщення недоторканим.
Ставтеся до вмісту сповіщення з тією ж підозрою через VPN, як і без нього. Знайомий браузер, що показує повідомлення, не доводить, що відправник або посилання легітимні.