网站检查用户是否安装了客户端应用程序的最佳方式是什么?

时间:2008-10-01 20:09:47

标签: javascript html flash installer client

假设我的网站在安装并登录桌面应用程序时效果更好。我希望能做两件事:

  • 如果网站尚未安装应用程序,请更改网站(以便他们轻松找到安装程序的链接)
  • 如果他们已经在几台计算机上安装了该应用,请确定他们正在浏览哪台计算机

我想在任何主流浏览器上使用适用于Windows和OSX的东西。 Linux是一个奖励。

一些想法:

  • 网站可以检测您是否安装了Flash。这是如何工作的,可以用于我的两个目标吗?
  • 我可以让客户端在localhost上提供HTTP并执行一些javascript请求来获取本地ID吗?我知道谷歌桌面搜索在某一点上做了类似的事情。这是标准做法吗?

谢谢!

5 个答案:

答案 0 :(得分:4)

您可以从桌面应用程序注册协议(请参阅this)。例如,这可用于使用来自网站的任意数据打开桌面应用程序。然后,您可以让您的桌面应用程序向您的网络服务器发送HTTP请求,告诉您所在的计算机。

答案 1 :(得分:2)

您可以拥有一个浏览器插件(适用于IE的activex或其他浏览器的Netscape插件),可以与应用程序通信。加载网页时,它可以尝试实例化插件,如果成功,它可以将其用作应用程序的代理。如果失败,则表示未安装应用程序或用户明确禁用该插件。无论哪种方式,您的网站都应相应地降低其功能。

更新:忘记回答您的问题:

  1. Flash就是这样做的。 Flash是一个由网页创建的浏览器插件。
  2. 您可以在应用程序/插件安装时生成计算机ID,并且插件可以在创建时将该计算机ID传递给网页。
  3. 关于使用本地网络服务器的主题

    我会远离拥有本地网络服务器,主要是出于安全方面的考虑。确保您的本地网络服务器被充分锁定并且没有其他恶意网站可以利用的XSS漏洞使其代表他们执行操作需要花费大量的工作。

    另外,拥有一个网络服务器意味着它必须作为一个系统范围的进程运行,或者如果它以用户身份运行,你可以让网站只与一个用户的应用程序实例交互,即使多个用户可以登录并同时运行它。

    谷歌桌面搜索遭受了XSS安全漏洞(尽管他们修复了它)以及只有一个用户可以在计算机上使用它的限制(我不知道他们是否已经修复了这个漏洞,尽管可能性很大他们做了。)

答案 2 :(得分:1)

  
    

网站可以检测您是否安装了Flash。

  

实际上,我相信浏览器可以检测您是否安装了浏览器的Flash插件,并且网页可以提供浏览器可以选择的“已安装”和“已卸载”选项。

否则,您要求通过在网页中放置一些代码来分析用户的家庭计算机,并向网站报告所学内容。

你能说主要安全漏洞吗?

答案 3 :(得分:0)

如果您可以为桌面应用程序选择开发环境,请从Adobe查看AIR。它允许您使用html / javascript,Flash或Flex开发桌面应用程序。

它具有API调用,您可以在基于浏览器的Flash应用程序中使用它来查看是否已安装基于桌面的AIR应用程序,版本等。您甚至可以启动它并将参数从Web应用程序传递到桌面应用程序。< / p>

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

答案 4 :(得分:0)

“网站可以检测到你是否安装了Flash。这是如何工作的,可以用于我的两个目标吗?” - 这很简单,你的浏览器尝试渲染一些额外的文件,具体一些格式如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
}