Как лучше всего веб-сайту проверить, установил ли пользователь клиентское приложение?

Допустим, у меня есть веб-сайт, который работает лучше, если клиент установил настольное приложение и вошел в него. Я бы хотел уметь делать две вещи:

  • Измените веб-сайт, если они не установили приложение (чтобы им было проще найти ссылку на установщик)
  • Если они установили приложение на несколько машин, определите, с какой машины они просматривают

Я бы хотел что-то, что работает в Windows и OSX, в любом из основных браузеров. Linux - это бонус.

Несколько мыслей:

  • Веб-сайты могут определять, установлен ли у вас Flash. Как это работает и можно ли это использовать для обеих моих целей?
  • Могу ли я просто позволить клиенту обслуживать HTTP на локальном хосте и выполнять несколько запросов javascript для получения локального идентификатора? Я знаю, что в какой-то момент поиск Google на рабочем столе делал что-то подобное. Это стандартная практика?

Спасибо!

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
0
2 158
5

Ответы 5

У вас может быть плагин для браузера (activex для IE или плагин Netscape для остальных браузеров), который может взаимодействовать с приложением. Когда веб-страница загружена, она может попытаться создать экземпляр плагина и, если это удастся, использовать его в качестве прокси для приложения. Если это не удается, значит, либо приложение не установлено, либо плагин был явно отключен пользователем. В любом случае ваш веб-сайт должен соответственно ухудшить свою функциональность.

Обновлять: Забыл ответить на ваши вопросы:

  1. Flash делает это именно так. Flash - это подключаемый модуль браузера, который создается веб-страницами.
  2. У вас может быть идентификатор компьютера, сгенерированный во время установки приложения / плагина, и ваш плагин может передать этот идентификатор компьютера на веб-страницу при ее создании.

По теме использования локального веб-сервера:

Я бы не стал использовать локальный веб-сервер, в основном из соображений безопасности. Требуется довольно много работы, чтобы убедиться, что ваш локальный веб-сервер заблокирован в достаточной степени и нет XSS-уязвимостей, которые могут использовать другие вредоносные веб-сайты, чтобы заставить его делать что-то от их имени.

Кроме того, наличие веб-сервера означает, что либо он должен работать как общесистемный процесс, либо, если он запускается как пользователь, вы можете заставить веб-сайт взаимодействовать только с одним пользовательским экземпляром приложения, даже если несколько пользователей могут войти в систему и запускать его одновременно.

Google Desktop Search пострадал как от уязвимости безопасности XSS (хотя они исправили ее), так и от ограничения возможности использовать его на компьютере только одним пользователем (я не знаю, исправили ли они это еще, хотя есть вероятность, что они сделали) .

Если вы можете выбрать среду разработки для настольного приложения, попробуйте AIR от Adobe. Он позволяет разрабатывать настольные приложения с использованием HTML / javascript, Flash или Flex.

У него есть вызовы API, которые вы можете использовать из флеш-приложения на основе браузера, чтобы узнать, установлено ли настольное приложение AIR, какая версия и т. д. Вы даже можете запустить его и передать параметры из веб-приложения в настольное приложение.

http://www.rogue-development.com/blog2/2008/03/interacting-with-an-air-app-from-a-browser-based-app/

Вы можете зарегистрировать протокол из своего настольного приложения (см. это). Это можно использовать, например, для открытия вашего настольного приложения с произвольными данными с веб-сайта. Затем ваше настольное приложение может отправить HTTP-запрос на ваш веб-сервер, сообщая ему, на какой машине вы находитесь.

Websites can detect if you've got Flash installed.

На самом деле, я считаю, что браузер может определить, установлен ли у вас плагин Flash для браузера, а веб-страницы могут предлагать варианты «установлен» или «удален», которые браузер может выбрать.

В противном случае вы запрашиваете средство, помещая некоторый код на веб-страницу, чтобы иметь возможность проанализировать домашний компьютер пользователя и сообщить о том, что он узнал, вашему веб-сайту.

Вы можете сказать Большая дыра в безопасности?

Websites can detect if you've got Flash installed. How does that work and could it be used for both of my goals?

это довольно просто, ваш браузер пытается отобразить некоторые дополнительные файлы с некоторыми конкретными форматами, такими как flash .swf, а я браузер не находит установку, затем начнется загрузка, или вы получите возможность загрузить эту программу. Flash также использует AC_RunActiveContent.js, пожалуйста, взгляните на этот js, люди обычно помещают его на свои веб-страницы

if (AC_FL_RunContent == 0) {
    alert("This page requires AC_RunActiveContent.js.");
} else {
    AC_FL_RunContent( 'codebase','http://download.macromedia.com/pub/shockwave cabs/flash swflash.cab#version=8,0,0,0','width','981','height','635','id','build5','align','middle','src','build5','quality','high','bgcolor','#ffffff','name','build5','allowscriptaccess','sameDomain','allowfullscreen','false','pluginspage','http://www.macromedia.com/go/getflashplayer','movie','build5' ); //end AC code
}

Другие вопросы по теме