fbclid、gclid、msclkid是附在链接上的点击ID。本文讲它们记录什么、为何拦截Cookie拦不住,以及Safari和Brave会剥掉哪些。
你点开信息流里的一个链接,打开的页面地址末尾多了一长串:?fbclid=IwAR…或?gclid=Cj0K…。这不是你输入的,去掉它页面看起来也没有变化。那它是什么,是在追踪你吗?简短的回答:是,这正是它的用途。本文讲清这些点击ID是什么、为什么Cookie被拦截时依然有效、浏览器如何应对,以及什么时候可以放心删掉。
要点速览
fbclid、gclid和msclkid是点击标识符。 它们分别由Meta(Facebook)、Google Ads和Microsoft Ads加到链接上,让平台能把你在另一个网站上的访问,对应回引发这次访问的那次点击。- 它们不同于
utm_标签。utm_campaign=spring对点击同一推广活动的所有人都一样,而点击ID只对应某一次点击,所以Brave的过滤器这类隐私功能会区别对待两者。 - 它们存在于URL里,而不是存储里。 第三方Cookie拦截和存储分区都碰不到随地址一起传递的标识符。
- 部分浏览器已经开始剥离它们。 Brave会从跨站请求中移除名单上的点击ID;Safari在隐私浏览模式下拦截已知的追踪查询参数,并限制已知指纹脚本从URL读取内容。
- 分享链接前删掉它通常无害,但不能打包票:有些网站确实把页面状态放在查询字符串里。
什么是点击ID
当你点击广告,或点击平台内分享的链接时,平台可以改写目标地址,让它带上一串看似随机的令牌:
| 参数 | 添加方 | 全称 |
|---|---|---|
fbclid | Meta(Facebook) | Facebook点击标识符(Facebook Click Identifier) |
gclid | Google Ads | Google点击标识符(Google Click Identifier) |
msclkid | Microsoft Advertising | 微软版的gclid |
这个令牌会同时通过两条路到达目标网站:服务器在收到页面请求时就能看到它,页面上的统计或广告脚本也能从地址里读出它,再回传给平台。于是平台就能把这次访问与最初的点击对应起来;如果你登录着该平台,还可能对应到你的账号。广告主就是这样得知“这次点击带来了那笔订单”。Brave隐私团队在关于查询参数剥离的文章中描述了同样的链条:这些值被加到你点击的URL上,好让广告主更多地了解你和你在网络上的行为。
这类手法统称链接装饰(link decoration):追踪者在你离开一个网站时给链接加上带标识的查询参数,等你到达另一个网站时再读出来,从而把你在两个互不相干的网站上的行为串起来。重定向式的追踪也靠它携带标识,详见弹跳追踪详解,这里不再重复那套机制。
点击ID与活动标签
并不是所有参数都针对个人,而这个区别决定了哪些参数会被剥离:
- 活动标签(
utm_source、utm_medium、utm_campaign)描述访客从哪里来。点击同一封邮件里同一个链接的人,值都相同。它们回答“哪个推广活动有效”,并不会把某个人单独挑出来。 - 点击ID描述某一次点击。如果取值唯一,就可以与平台已经掌握的点击者信息关联起来。
Brave的查询字符串过滤器直接说明了这一设计:针对已知专属于某个用户、某个邮箱地址或某一次点击的参数,同时不干扰粗粒度的活动级追踪。
为什么拦截Cookie拦不住它们
第三方Cookie拦截和存储分区限制的,都是嵌入页面的第三方能跨站存储并读回什么。而点击ID根本不需要第三方存储:它随导航一起过来,目标网站的服务器和页面自己的脚本(第一方环境)都能看到,再由页面转发给平台。在浏览器看来,这只是一段普通的第一方脚本发出的普通请求。
事后清除Cookie同样无济于事。ID在点击时就附上了,也已经送达;换一个干净的浏览器配置文件点击同一条广告,只会拿到一个新的ID。所以浏览器只能把URL本身当作清理对象。
浏览器的应对
下面每一项的范围都比“拦截所有追踪”窄,请留意适用范围。
Brave。 查询字符串过滤器会在非同站GET请求发出之前,移除名单中的参数(名称和值),涵盖导航、子资源和重定向。因此该参数不会到达服务器、地址栏或Referer头,页面上的脚本也无法恢复。文档写明了一个例外:如果邮件退订链接需要某个可识别用户的参数才能工作,Brave会保留它。Brave在上文链接的2020年文章中点名fbclid、gclid和msclkid,作为其剥离对象的例子。
Safari。 WebKit的Safari 17.0说明把拦截链接中已知的追踪查询参数列为隐私浏览新增的保护之一。另外,WebKit的Safari 26.0说明指出,Safari会阻止已知的指纹脚本读取可用于导航追踪的状态,例如查询参数和document.referrer。在普通浏览模式下,智能防跟踪(ITP)还会把脚本在被识别为链接装饰的落地页上创建的Cookie的有效期限制在24小时内,详见Safari智能防跟踪逐个机制详解。
Firefox。 Mozilla的反追踪政策把URL装饰归为导航式跨站追踪,并表示Firefox“会设法识别网站用于追踪的查询参数”,将其从跨站的顶层导航中移除;不针对具体用户的归因用途属于例外。这是一份政策声明,既不是参数清单,也不代表你当前设置下的实际行为,因此不能理解为对这三个参数中任何一个的保证。
Chrome及其他Chromium系浏览器。 我们没有核实到可引用的一手说明,所以这里不下结论。任何浏览器都可以用一个简单办法自查:点击带这类参数的链接,看页面打开后地址栏里它是否还在。
Referer头有类似的风险
你刚离开的页面地址,也会通过Referer头发送给下一个网站。如果这个地址里带着点击ID,ID就可能再多传一站。浏览器现在默认发送裁剪后的值:MDN记载,未设置策略时默认值为strict-origin-when-cross-origin,跨源的HTTPS请求只发送来源(origin),从HTTPS到HTTP则完全不发送该头。完整策略列表见MDN的Referrer-Policy参考。Safari更进一步,把所有第三方Referrer都降级为来源,见上文链接的ITP文章。
该不该删掉这个参数?
分享链接时,通常可以删。如果问号前面是普通的文章或商品地址,把?及其后面的内容全部删掉,页面一般照常打开。如果地址里还有别的参数,更稳妥的做法是只删掉fbclid=…(或gclid=…、msclkid=…)这一段,其余保留。这样对方打开时就不会带上你那次点击的ID,链接也更短。
有两点要注意。有些应用把真正的状态放在查询字符串里(搜索词、页码、会话或邀请令牌),删掉会改变甚至破坏页面,所以发送前先打开一次清理后的链接。另外,删除参数改变不了已经发生的点击:你点击的那一刻,平台就已经看到了。我们不推荐具体的扩展或工具;如果浏览器自带保护,用自带的就好。
剥离后的URL还留下什么
去掉点击ID,只是去掉了一个显式标识符。即使没人把标识符递给网站,它也能凭浏览器暴露的各项属性组合认出你。这就是浏览器指纹。持久访客ID能在清除Cookie后继续存活,靠的正是它;也正因如此,浏览器指纹识别指南和清理URL同样值得关注。
需要说清楚BrowserInsight做的是什么:我们的工具不会检查你点击的链接或访问的URL。我们的指纹检测完全在你的浏览器中运行,展示网站能读到哪些浏览器信息——这一层,是剥离URL的功能删不掉的。
常见问题
fbclid是病毒吗?出现它是不是账号被盗了?
都不是。它只是地址里的一段普通文本,不会在你的设备上运行任何东西。看到它只说明这个链接经过了会添加点击ID的平台。需要关心的是隐私,不是恶意软件。
gclid是什么意思?
它是Google Click Identifier(Google点击标识符)的缩写。它在Google Ads里的作用,和fbclid之于Meta、msclkid之于Microsoft Advertising相同。
VPN或无痕窗口能去掉点击ID吗?
VPN改变的是你的IP地址,不是链接,所以ID照样会送达。无痕窗口本身也不会改动链接。上文提到的Safari隐私浏览属于一项具体的保护,并不是所有浏览器的隐私模式都有文档说明会这样做。
总结
fbclid、gclid和msclkid是写进链接本身的单次点击标识符,因此能绕开Cookie和存储层面的防御。部分浏览器正在通过清理URL来补上缺口,但覆盖程度因浏览器和模式而异。从你分享的链接里删掉它们是个合理的习惯;只是别忘了,URL只是标识符的来源之一。
延伸阅读:


