教你如何用CSS来追踪用户

我们可以用它来做什么

我们可以收集关于用户的一些基本信息,例如 屏幕分辨率(当浏览器最大化时)以及用户使用的什么浏览器(引擎)

此外,我们可以监测用户是否点击某个链接或鼠标悬停在某个元素上,用来 追踪用户悬停的链接,甚至可以 追踪用户如何移动鼠标(在页面使用不可见的字段),然而,使用目前我的方法只能追踪用户的第一次点击或悬停,我相信,修改我的方法最终可以实现追踪用户的每次点击

最后,我们还可以监测用户是否安装了某个特殊的字体,基于这个信息,我们可以追踪用户使用的 操作系统,因为不同操作系统使用的字体也稍有不同,例如 Windows 的 Calibri

这又是如何实现的

立即学习“前端免费学习笔记(深入)”;

普通的做法

用 CSS 你可以使用 url(“foo.bar”) 属性引用外部资源添加图像,有趣的是,这个资源只在需要的时候被加载(例如,当链接被点击时)

所以,我们可以用 CSS 创建一个选择器,当用户点击某个链接时调用某个特定的 UPL

#link2:active::after {  content: url('track.php?action=link2_clicked');}

服务端,php 脚本会在调用 URL 时保存时间戳

浏览器监测

浏览器监 测是基于 @supports Media-Query 的,我们可以监测浏览器的一些特殊的属性,例如 -webkit-appearance

@supports (-webkit-appearance: none) {  #chrome_detect::after {    content: url('track.php?action=browser_chrome');  }}

字体监测

对于 字体监测,需要定义一个新的字体,如果一个字体存在,文本会尝试使用该字体进行样式设置,然而,当用户在系统上找不到该字体时,定义的字体会作为备用,在这种情况下,浏览器会尝试去加载定义的字体并在服务器上调用追踪脚本

/** Font detection **/@font-face {  font-family: Font1;  src: url('track.php?action=font1');} #font_detection1 {  font-family: Calibri, Font1;}

悬停监测

对于 悬停监测(基于 jeyroik 的想法),我们需定义一个关键帧,每次使用这个关键帧都要去请求一个 URL

@keyframes pulsate {  0% {    background-image: url('track.php?duration=00');  }  20% {    background-image: url('track.php?duration=20');  }  40% {    background-image: url('track.php?duration=40');  }  60% {    background-image: url('track.php?duration=60');  }  80% {    background-image: url('track.php?duration=80');  }  100% {    background-image: url('track.php?duration=100');  }}

然后,我们使用定义的关键帧创建动画,我们可以定义动画持续的时间,这也是我们测量的最大时间

#duration:hover::after {  -moz-animation: pulsate 5s infinite;  -webkit-animation: pulsate 5s infinite;  /*animation: pulsate 5s infinite;*/  animation-name: pulsate;  animation-duration: 10s;  content: url('track.php?duration=-1');}

我们可以通过补充关键帧的设置,来优化分辨率的监测

输入监测

监测用户选中了某个复选框,我们可以使用 CSS 提供的 :selected 选择器

#checkbox:checked {  content: url('track.php?action=checkbox');}

为了监测字符串,我们结合了 HTML pattern 属性,它可以帮助我们解决一些基本的输入验证,再结合 :valid 选择器,浏览器当输入匹配成功时会去请求我们的追踪站点

#text_input:valid {  background: green;  background-image: url('track.php?action=text_input');}

如果属性后面没有任何 content 或有 php 警告 出现,这就意味着这个属性的值为 false 或用户还没访问页面或链接(这个,确实很烦,但你可以知道这些方法的原理)

此外,分辨率监测还不是特别的准确,因为目前只能监测最常用的屏幕宽度。最后还想说的是,监测用户实际屏幕的宽度并没有想象中的那么简单,因为 CSS 监测的高度为浏览器窗口的高度,而通常由于系统面板 / 任务栏的原因,使得浏览器窗口要小于显示器

有什么办法可以防止使用上面的方法进行追踪

目前我知道的唯一办法就是 完全禁用 CSS(你可以使用像 uMatrix 的插件来实现),但它的代价也是十分巨大的,没有 CSS,网页就没有之前那么赏心悦目了,甚至导致无法正常使用,所以,禁用 CSS 算不上一个真正的选择,除非,你实在担心你的隐私(例如,当你在使用 Tor 浏览器,也许你应该禁用 CSS)

一个更好的解决方案是,在网页加载时,浏览器不会去加载需要的外部资源,这样,就不可能监测到用户的个人行为,这种对内容加载的修改可以通过浏览器来实现,也可以通过插件来实现(类似 NoScript 或 uMatrix)

上述方法也存在一个明显的问题,那就是 对性能会造成一定的影响,因为浏览器会在初始化页面时加载大量的内容(有些内容是页面根本不需要的)

以上就是教你如何用CSS来追踪用户的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1610847.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月24日 01:46:50
下一篇 2025年12月24日 01:47:17

相关推荐

  • 如何用纯CSS实现一副国际象棋

    这篇文章主要介绍了关于如何用纯css实现一副国际象棋 ,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 源代码下载 每日前端实战系列的全部源代码请从 github 下载: https://github.com/comehope/front-end-daily-challenges 代码…

    好文分享 2025年12月24日
    000
  • CSS教程之深入浅析CSS 选择器分组

    这篇文章主要介绍了css 选择器分组的相关资料,需要的朋友可以参考下 选择器分组 假设希望 h2 元素和段落都有灰色。为达到这个目的,最容易的做法是使用以下声明: h2, p {color:gray;} 将 h2 和 p 选择器放在规则左边,然后用逗号分隔,就定义了一个规则。其右边的样式(color…

    好文分享 2025年12月24日
    000
  • CSS 设置滚动条样式的实例代码

    这篇文章主要介绍了css 设置滚动条样式的实例代码,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧 CSS 设置滚动条样式的实现代码如下所示: •::-webkit-scrollbar 滚动条整体部分•::-webkit-scrollbar-thumb  滚动条里面的小方块,能向上向下移动(或…

    好文分享 2025年12月24日
    000
  • CSS制作Web页面条纹背景样式的介绍

    这篇文章主要介绍了关于css制作web页面条纹背景样式的介绍,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 通过CSS中的linear-gradient主要就能显示出不同方向的条纹效果,这里我们就来详解CSS制作Web页面条纹背景样式的技巧,需要的朋友可以参考下 一、横向条纹如下代码…

    2025年12月24日
    000
  • 如何使用CSS实现一个按钮文字滑动的效果

    这篇文章主要介绍了关于如何使用css实现一个按钮文字滑动的特效 ,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下源代码下载 请从 github 下载。 https://github.com/comehope/front-end-daily-challenges/tree/master/…

    好文分享 2025年12月24日
    000
  • 如何用纯CSS 实现一个颜色卡的效果

    这篇文章主要介绍了关于如何用纯CSS 实现一个颜色卡的效果,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 源代码下载 每日前端实战系列的全部源代码请从 github 下载: https://github.com/comehope/front-end-daily-challenges …

    2025年12月24日
    000
  • css相对定位

    定位的四种模式:static,relative,absolute,fixed 定位的四个位置:left,right,top,bottom 定位属性:position,有四种状态值 1.static:静态定位,按元素在文档流中的顺序排列,这是默认值,四个位置无效 2.relative:相对定位,元素相…

    好文分享 2025年12月24日
    000
  • css绝对定位

    定位的四种模式:static,relative,absolute,fixed 定位的四个位置:left,right,top,bottom 定位属性:position,有四种状态值 1.static:静态定位,按元素在文档流中的顺序排列,这是默认值,四个位置无效 2.relative:相对定位,元素相…

    好文分享 2025年12月24日
    000
  • css固定定位

    定位的四种模式:static,relative,absolute,fixed 定位的四个位置:left,right,top,bottom 定位属性:position,有四种状态值 1.static:静态定位,按元素在文档流中的顺序排列,这是默认值,四个位置无效 2.relative:相对定位,元素相…

    好文分享 2025年12月24日
    000
  • css浮动的原理

    一、浮动与绝对定位的相同之处: 1. 浮动元素也脱离了文档流 2. 元素浮动之后都支持了宽高,变成了块元素, 二、浮动的特点:只能沿着水平方向进行; 5.浮动的原理 .box1 { width:200px; height: 200px; background-color: lightskyblue;…

    好文分享 2025年12月24日
    000
  • css同级元素之间的清除浮动的技巧

    清除左浮动:该元素的左边不允许出现浮动元素而当前它的左边有浮动元素,而自己本身又是块元素,只能掉到下一行首开始显示 clear: left; 清除右浮动:与上面相同,不允许元素的右边出现浮动元素,同样它只能在右浮动元素下面另起一行显示,当然,它也只能沿着右浮动的最下面的底边为起始点,开始显示 cle…

    好文分享 2025年12月24日
    000
  • css层次元素之间的清除浮动的技巧

    如果让父元素包住浮动的子元素?主要有以下几种方法: 1:让父元素也一起浮动:经测试该方法可行,而且四周全部包住,非常严实.但是如果当前的子元素有多个父级的话, 那么每个父级元素都要设置浮动,甚至要一直写到 ,所以该方法pass。 2.给父元素设置溢出隐藏属性:同样也可实现要求,但这种方法有很多兼容性…

    好文分享 2025年12月24日
    000
  • 关于CSS更改鼠标为手状样式的介绍

    这篇文章主要介绍了css更改鼠标为手状样式的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下 在自行设置的p或者其他标签中,为了更好的体验效果,会将在滑动过程中,将鼠标变为手势 简单总结下css对应的样式。 所在的p中,添加cursor:pointer即可。 示例: 立即学习“前端免费学习…

    好文分享 2025年12月24日
    000
  • 关于CSS中的position:relative;的作用介绍

    这篇文章主要介绍了关于css中的position:relative;的作用介绍,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 CSS中的position:relative是控制元素相对定位的,relative 不脱离文档流而absolute 脱离文档流,relative 的元素尽管表…

    好文分享 2025年12月24日
    000
  • 针对主流浏览器的CSS-HACK写法及IE常用条件注释

    本文将为你总结css针对各浏览器的兼容hack(以ie6/ie7/ie8 /ff为主),以及ie特有的条件注释使用方法. 对于前端工作者,最痛苦的事莫过于浏览器兼容性的调试,而这最痛苦的事中,最变态的莫过于微软的三个版本IE6.0/IE7.0/IE8.0. 为了让所写代码在各主流浏览器中正常运行,我…

    好文分享 2025年12月24日
    000
  • css基本选择器

    1.基本选择器/*元素选择器*/ul { padding: 0;margin: 0;width: 450px;border: 1px dashed #666;padding: 10px 5px;}ul:after { /*子块撑开父块*/content:”; /*在子元素尾部添加空内容元素*/di…

    好文分享 2025年12月24日
    000
  • css属性选择器实例

    2.属性选择器 /*元素选择器*/ ul { padding: 0;margin: 0;width: 450px;border: 1px dashed #666;padding: 10px 5px;}ul:after { /*子块撑开父块*/content:”; /*在子元素尾部添加空内容元素*/…

    好文分享 2025年12月24日
    000
  • css伪类选择器

    css伪类选择器 /*元素选择器*/ ul {    padding: 0; margin: 0; 立即学习“前端免费学习笔记(深入)”; width: 450px; border: 1px dashed #666; padding: 10px 5px; } ul:after {  /*子块撑开父块…

    好文分享 2025年12月24日
    000
  • css上下文选择器

    家族: 祖宗,父辈,兄弟同辈关系 1.祖先元素: 包括多级后代的元素; 2.父级元素: 仅包括一级子元素的元素; 3.相邻元素: 拥有同一个父级的元素; 1.后代选择器:先找到祖先元素,再选择它下面的所有指定后代元素 立即学习“前端免费学习笔记(深入)”;   语法: 祖先与目标之间用空格分开,可以…

    好文分享 2025年12月24日
    000
  • CSS表格设置实例

    4.CSS表格设置 /*第一步:给整个表格以及内部的所有单元格加上边框*/ table,th,td { border: 1px solid #333; } /*第二步:将整个表格以及内部单元格的边框全部折叠,就是线条二合一*/ table { /*折叠表格线*/ border-collapse: c…

    好文分享 2025年12月24日
    000

发表回复

登录后才能评论
关注微信