Как принудительно открыть внешний браузер вместо встроенного [HTML/Javascript]

Проблема с встроенными браузерами

Работаю над небольшим веб-сайтом на HTML, CSS и Javascript. Столкнулся с проблемой встроенных браузеров в соцсетях.

Суть проблемы

Мой сайт использует localStorage для сохранения пользовательских данных. Когда люди переходят по ссылке из Instagram или других приложений, открывается встроенный браузер. Как только пользователь закрывает приложение, все сохраненные данные пропадают.

Что я хочу сделать

Видел как YouTube показывает кнопку “Открыть в приложении” когда заходишь на их сайт через Instagram. Можно ли сделать что-то похожее, но для обычного браузера?

function tryOpenExternalBrowser() {
    var currentUrl = window.location.href;
    // Попытка открыть в Safari или Chrome
    window.open(currentUrl, '_system');
}

Или может есть другие способы заставить ссылку открываться в нормальном браузере, а не во встроенном? Буду благодарен за любые идеи.

Пробовал deep links? Создай кастомную схему типа mysite://, а если браузер не тянет — редирект на обычную версию. Видел сайты с intent:// для Android и универсальными ссылками для iOS, но это в основном для мобилок. И зачем именно localStorage? Cookie с правильными настройками domain может стабильнее работать.

Честно говоря, заставить открыть внешний браузер из веба невозможно — безопасность не позволяет. Но есть рабочие варианты. Можешь определить встроенный браузер по user-agent (там обычно есть маркеры типа “FBAN” для Facebook или “Instagram”) и показать пользователю инструкцию, как открыть сайт в обычном браузе. Попробуй sessionStorage вместо localStorage — иногда во встроенных браузерах работает лучше. Но самый надёжный способ — сохранять важные данные на сервере через ajax.

Из опыта - встроенный браузер легко детектится через window.navigator.standalone на iOS и проверкой window.chrome. Нашёл встроенный? Покажи баннер “Три точки → Открыть в Safari/Chrome”. Для данных используй IndexedDB вместо localStorage - работает стабильнее, хотя 100% гарантии всё равно нет.