You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JavaScript实现仅Facebook广告流量访问Landing Page(无需改.htaccess)

纯JavaScript实现Facebook广告来源用户过滤

当然可以实现!不过得先打个预防针:纯前端的方案不是100%无懈可击(毕竟用户能禁用JS或者修改浏览器隐私设置),但如果你的场景能接受这个小局限,那完全能满足需求。

核心思路

我们主要通过两个维度判断用户是否来自Facebook广告:

  1. 检查页面的来源地址(document.referrer),判断是否来自Facebook相关域名
  2. 检查URL中是否带有Facebook广告专属的fbclid参数(部分场景下referrer会被隐私设置隐藏,这个参数能作为补充判断)

同时,我们用sessionStorage做个临时标记,避免用户在落地页刷新时被误重定向。

代码实现

直接把这段代码放到你的Landing Page的<script>标签里(建议放在</body>前,或者用load事件监听):

// 替换成你的静态页面地址
const staticPageUrl = '/your-static-page.html';

// 判断是否来自Facebook广告的核心函数
function isFromFacebookAd() {
  const referrer = document.referrer.toLowerCase();
  // 检查referrer是否包含Facebook相关域名
  const isFromFbDomain = referrer.includes('facebook.com') || referrer.includes('fb.com') || referrer.includes('facebook.net');
  // 检查URL是否带有Facebook广告的fbclid参数
  const hasFbClid = window.location.search.includes('fbclid');
  
  // 满足任一条件则判定为来自Facebook广告
  return isFromFbDomain || hasFbClid;
}

// 页面加载完成后执行判断
window.addEventListener('load', function() {
  // 检查:既不是来自Facebook广告,也没有已验证的会话标记
  if (!isFromFacebookAd() && !sessionStorage.getItem('allowedToViewLanding')) {
    // 重定向到静态页面
    window.location.href = staticPageUrl;
  } else {
    // 标记当前会话已验证,刷新页面不会被重定向
    sessionStorage.setItem('allowedToViewLanding', 'true');
  }
});

重要注意事项

  • 隐私设置影响:部分浏览器的隐私模式或隐私插件会隐藏document.referrer,这时候如果用户从Facebook广告跳转,可能会出现referrer为空的情况——这也是为什么我们要结合fbclid参数判断的原因。
  • JS禁用问题:如果用户禁用了JavaScript,这个逻辑完全失效,用户会直接看到Landing Page。如果对安全性要求极高,建议结合后端验证(但你要求只用JS,这个只能作为局限说明)。
  • 用户手动修改的可能性:普通用户不会特意去修改referrer或删除sessionStorage标记,但技术型用户可以做到——不过这属于极端情况,一般场景下不用过度担心。

内容的提问来源于stack exchange,提问作者Alex Scha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:22:42