如何更精准地识别用户进入我方网站前所在的来源网站?
哥们,我太懂你这种头疼的情况了——社交平台过来的流量用document.referrer经常拿不到值,确实够坑的!主要原因是现在各大平台(比如Facebook、Instagram)为了用户隐私,在跳转外部链接时会刻意隐藏referrer信息,再加上浏览器隐私政策的限制,导致document.referrer的可靠性越来越低。
给你几个实际能用的解决方案,按优先级排序:
优先用UTM参数标记来源
这是目前最靠谱的办法,让你的客户在Facebook/Instagram广告后台设置跳转链接时,手动加上UTM参数。比如把原来的链接https://yourclientlandingpage.com改成:https://yourclientlandingpage.com?utm_source=facebook&utm_medium=ad&utm_campaign=summer_product
你在前端或者Node.js后端直接读取URL里的这些参数就行:
前端用JS的话:const params = new URLSearchParams(window.location.search); const source = params.get('utm_source'); // 拿到facebook const medium = params.get('utm_medium'); // 拿到adNode.js后端的话,直接从
req.query里取对应的字段就行。这种方式完全不受referrer限制,只要用户点击的是带参数的链接,就能精准拿到来源。结合服务器端请求头的
Referer字段
注意这里的拼写是Referer(少一个r,HTTP标准头的写法),虽然前端的document.referrer可能为空,但服务器有时候能拿到这个请求头信息(不过同样可能被隐私政策屏蔽)。你可以在Node.js里从req.headers.referer获取,和UTM参数结合使用——如果有UTM参数就优先用UTM,没有再尝试用Referer头,多一层保障。处理特殊场景的补充方案
如果用户是从社交平台的APP内跳转过来的,有时候连UTM参数都可能被平台篡改?这种情况可以让客户在广告后台开启“深层链接”或者使用平台提供的跳转工具,确保参数不丢失。另外,对于直接访问(比如用户输网址、书签)的情况,你可以标记为direct,不用纠结来源。
总结一下,UTM参数是核心解决方案,referrer只能作为补充,毕竟现在隐私政策下,主动标记的参数比被动获取的referrer靠谱太多了!
备注:内容来源于stack exchange,提问作者Edson Pagani

