如何检测网站访问者安装了什么软件

简介: 为特定用户的意图和需求量身定制使用网站的体验,无论是让你的网站具有更好的移动友好性,还是让它与用户的地理位置更加相关,都能够收获巨大的回报。

为特定用户的意图和需求量身定制使用网站的体验,无论是让你的网站具有更好的移动友好性,还是让它与用户的地理位置更加相关,都能够收获巨大的回报。


而大部分网站能够检测用户的浏览器和操作系统,或根据用户IP地址来获得他们的大致位置,大部分网站在直接吸引用户上可以做得更好。


有一些不太明显的技术让你能够更进一步。一个是在用户载入网页时,检测用户电脑上安装了什么软件。

image.png

下面是原理:无论你何时安装任何主流软件包,你通常最后会在你的系统上得到一堆新字体。这些字体差不多总是有唯一性,不仅仅是软件包,还有软件包的具体版本。通过用户浏览器抽出这种“字体签名”,就能帮你检测用户安装到电脑上的软件种类——这不需要任何额外的用户许可。


访问到了用户字体,和他们相应安装的软件,意味着你能预先知道他们可能在你的网站寻找什么。例如,你能为 已经安装了设计软件的用户 重新排列你公司网站上的工作列表,以显示设计师/用户体验工程师职位。如果你支持多种格式的下载,你可以仅仅显示你知道的、用户能够打开的那些格式。或者,如果你能够检测用户有一个Photoshop或Office的过期版本,你可以加入Microsoft或Adobe推广程序,运行Office 365和Creative Cloud上面的广告。


有一些通过用户浏览器来抽取用户已经安装字体的方法。最简单的方式是借助一个小巧的flash脚本来返回字体列表。我,就我个人而言,使用font-detect-js。然而,稍下点儿功夫,你也能够不用flash就搞定。你可以仅仅依靠jQuery&CSS,试着渲染、测量在一个隐藏div内的字体。Lalit Patel在《JS/CSS Font Detect》文章有讨论。


一旦你有了用户字体列表,把列表映射回他们安装的软件就相当容易了。很多厂商列出了与他们软件绑定的字体。下面是一些例子:



在一些情况,你也能够检测用户是否注册了他们的Adobe产品。那是因为做为注册的交换,Adobe会给用户分配免费字体,比如Hypatia SansAdobe TextGaramond Premier

这里有一个简单的demo,可以检测是是否安装了一些软件:http://johnmcl.github.io/software-detect-js/

你也能够在Github下载、贡献这个项目,这里:https://github.com/johnmcl/software-detect-js/


相关文章
|
JavaScript
JS检测客户端是否安装
JS检测客户端是否安装
|
8月前
|
存储 机器学习/深度学习 弹性计算
阿里云服务器八代实例计算型c8i与通用型g8i性能和适用场景及最新收费标参考
阿里云服务器计算型c8i与通用型g8i实例怎么样?阿里云ECS家族第八代热门云服务器实例,计算型c8i与通用型g8i实例凭借全新CIPU架构、第四代Intel处理器以及芯片级安全加固技术,构成了云计算基础设施的"双引擎"。本文为大家介绍这两个实例规格的性能、适用场景及最新价格情况,并通过多维度对比与技术解析,为您展示这两款实例的核心优势与最新价格策略,以供参考和选择。
|
数据格式
使用小技巧实现el-table组件的合并行功能,ElementUI和ElementPlus都适用
本文介绍了在ElementUI和ElementPlus中使用`el-table`组件实现合并行功能的技巧,包括多列合并和单列合并的方法,并提供了相应的示例代码和运行效果。
9861 1
使用小技巧实现el-table组件的合并行功能,ElementUI和ElementPlus都适用
|
机器学习/深度学习 计算机视觉 网络架构
【YOLO11改进 - C3k2融合】C3k2DWRSeg二次创新C3k2_DWR:扩张式残差分割网络,提高特征提取效率和多尺度信息获取能力,助力小目标检测
【YOLO11改进 - C3k2融合】C3k2DWRSeg二次创新C3k2_DWR:扩张式残差分割网络,提高特征提取效率和多尺度信息获取能力,助力小目DWRSeg是一种高效的实时语义分割网络,通过将多尺度特征提取分为区域残差化和语义残差化两步,提高了特征提取效率。它引入了Dilation-wise Residual (DWR) 和 Simple Inverted Residual (SIR) 模块,优化了不同网络阶段的感受野。在Cityscapes和CamVid数据集上的实验表明,DWRSeg在准确性和推理速度之间取得了最佳平衡,达到了72.7%的mIoU,每秒319.5帧。代码和模型已公开。
【YOLO11改进 - C3k2融合】C3k2DWRSeg二次创新C3k2_DWR:扩张式残差分割网络,提高特征提取效率和多尺度信息获取能力,助力小目标检测
|
SQL XML JavaScript
【若依Java】15分钟玩转若依二次开发,新手小白半小时实现前后端分离项目,springboot+vue3+Element Plus+vite实现Java项目和管理后台网站功能
摘要: 本文档详细介绍了如何使用若依框架快速搭建一个基于SpringBoot和Vue3的前后端分离的Java管理后台。教程涵盖了技术点、准备工作、启动项目、自动生成代码、数据库配置、菜单管理、代码下载和导入、自定义主题样式、代码生成、启动Vue3项目、修改代码、以及对代码进行自定义和扩展,例如单表和主子表的代码生成、树形表的实现、商品列表和分类列表的改造等。整个过程详细地指导了如何从下载项目到配置数据库,再到生成Java和Vue3代码,最后实现前后端的运行和功能定制。此外,还提供了关于软件安装、环境变量配置和代码自动生成的注意事项。
27429 73
|
开发工具 git
Bugku---web---source
Bugku---web---source
|
JavaScript 索引
Vue中对象或数组数据更新但视图不刷新问题的解决策略
Vue中对象或数组数据更新但视图不刷新问题的解决策略
1008 0
|
iOS开发 开发者
【教程】uni-app iOS 打包解决 profile 文件与私钥证书不匹配问题
【教程】uni-app iOS 打包解决 profile 文件与私钥证书不匹配问题
|
机器学习/深度学习 数据采集 算法
DEL编码新药预测的多种机器学习模型对比
数据集描述 数据集中每个分子具有三个构建块。该数据集用于表示分子的三个构建块是否能够与蛋白质相结合,如果能够结合标记为binds为1,否则binds为0. 格式描述如下: • id- 我们用来识别分子结合靶标对的独特example_id。 • buildingblock1_smiles- 在SMILES中,第一个构建块的结构 • buildingblock2_smiles- 在SMILES中,第二个构建块的结构 • buildingblock3_smiles- 在SMILES中,第三个构建块的结构 • molecule_smiles- 完全组装的分子的结构,在SMILES中。这包括三个构建单元
|
JSON NoSQL C++
VScode调试C/C++项目调试多个C++程序makefile
VScode调试C/C++项目调试多个C++程序makefile
904 0