在看到 Stefan Judis 的帖子 之前,我并不知道有这个功能。
<a href="https://www.stefanjudis.com/popular-posts/"
ping="https://www.stefanjudis.com/tracking/">Read popular posts</a>
您可以通过 ping
属性为锚链接提供一个 URL,当单击该链接时,浏览器将向该 URL 发送一个 Web 请求(一个字面上的 PING)。 标头包含一个 ping-to
键,其值为链接的 href
值。
为什么? 数据。 知道人们在您的网站上点击了哪些外部链接不是很好吗?
即使您安装了 Google Analytics,默认情况下您也无法获得这些数据。 您需要编写一些自定义代码或使用类似其 autotrack 插件 以及 outboundLinkTracker
。 无论您做什么,这都不是一件容易的事,因为为了使其工作,它必须
- 让 JavaScript 进行干预
- 阻止链接的默认操作(跳转到网站)
- 跟踪事件(向某处发送 ping)
- 然后告诉浏览器实际跳转到网站(window.location = …)
这是因为在外部链接点击时运行一小段 JavaScript 来 ping 您的跟踪服务是不可靠的。 您的网站正在卸载,并且新网站正在尽可能快地加载,这意味着 ping 可能没有机会运行。
据推测,使用 ping
属性,您不必执行发送 ping 的这套 JavaScript 操作(在页面卸载前发送),它将“自动工作”。 这是这项技术的巨大优势。 将复杂的想法转移到更低级别的语言中,使其更容易更好地工作,这真是太酷了。
不过,它也存在很多缺点。 您无法获得用于发送元数据的良好 API。 您能做的最好的事情是附加一个查询字符串以获取额外的数据(例如,链接是在页脚中还是在博客文章中?)。 但也许最大的限制是它仅适用于锚链接。 如果您正在构建一个非常严肃的事件跟踪系统,您希望它对任何类型的事件(不仅仅是点击)和任何类型的元素(不仅仅是链接)都适用。 因此,这几乎完全属于 JavaScript 的领域也就不足为奇了。
为什么不使用 Google Tag Manager 并创建一个在所有包含不属于网站域名的域名的 URL 上触发的事件呢?
似乎
autotrack
已经不再维护了。 此外,gtag.js 已经可用了一段时间,并且 Google 建议我们使用它而不是 analytics.js。 gtag.js 不能自动为我们处理这些事情吗?如果您没有使用 Firefox,Google 会在其搜索结果中使用 ping 属性。 我在今年早些时候写过这篇文章: https://dev.to/madsstoumann/google-tracking-and-the-ping-attribute-41d5
GDPR 涉及到总体上的跟踪/个人数据,而不仅仅是 Cookie — 因此我想知道,如果您在未告知最终用户的情况下使用基于 ping 的跟踪,是否合法?
我不知道 ping 某物是否会自动跟踪个人数据。 例如,如果用户已登录并且您将他们的姓名和电子邮件地址作为查询参数发送,则会跟踪。 但我不是律师。
我也不是律师 :-) 但它可以跟踪用户行为,也许这就是 Firefox 禁用它的原因? 此外,没有浏览器支持的 ping 属性符合此
“如果存在 ping 属性,则用户代理应清楚地向用户指示,遵循超链接也将导致在后台发送辅助请求,可能包括列出实际的目标 URL。”
ping 属性也是一个巨大的安全漏洞。 它可以 ping 的 URL 数量没有限制,URL 不限于与原始点击相同的域,并且在没有主动使用开发工具的情况下不会向最终用户公开。
由于其可能被恶意利用,此功能已于 2010 年从 HTML5 规范中删除。 Google 只是很幸运,到目前为止它还没有成为重大数据泄露的来源。
实际上,让我更正一下:它确实被恶意使用过。 https://www.imperva.com/blog/the-ping-is-the-thing-popular-html5-feature-used-to-trick-chinese-mobile-users-into-joining-latest-ddos-attack/