首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js判断访问来源

在JavaScript中,判断访问来源通常是通过分析document.referrer属性来实现的。document.referrer返回的是用户在访问当前页面之前所在的页面的URL。

基础概念

  • document.referrer: 这是一个只读属性,它返回的是前一个页面的URL,即用户是从哪个页面跳转过来的。

相关优势

  • 可以用来追踪用户的来源,对于分析用户行为、统计流量来源等非常有帮助。
  • 可以用于实现一些安全策略,比如防止恶意网站链接到自己的网站。

应用场景

  • 网站流量分析,了解用户是通过搜索引擎、社交媒体还是直接输入网址访问网站的。
  • 实现联盟营销,根据不同的推广来源给予不同的优惠或积分。
  • 安全控制,阻止某些不信任的网站链接到自己的网站。

示例代码

代码语言:txt
复制
// 获取访问来源
var referrer = document.referrer;

// 判断访问来源是否为特定网站
if (referrer.indexOf("example.com") !== -1) {
    console.log("访问来源是example.com");
} else {
    console.log("访问来源不是example.com");
}

// 更复杂的来源判断逻辑
function getReferrerInfo() {
    var referrer = document.referrer;
    var referrerInfo = {
        isInternal: false, // 是否是内部链接
        isSearchEngine: false, // 是否是搜索引擎
        source: '' // 来源网站
    };

    // 判断是否是内部链接
    if (referrer.indexOf(window.location.hostname) !== -1) {
        referrerInfo.isInternal = true;
    }

    // 判断是否是搜索引擎
    var searchEngines = ["google.", "bing.", "baidu.", "taobao.", "sogou."];
    for (var i = 0; i < searchEngines.length; i++) {
        if (referrer.indexOf(searchEngines[i]) !== -1) {
            referrerInfo.isSearchEngine = true;
            referrerInfo.source = searchEngines[i].replace(".", "");
            break;
        }
    }

    // 如果不是内部链接也不是搜索引擎,则记录来源网站
    if (!referrerInfo.isInternal && !referrerInfo.isSearchEngine) {
        referrerInfo.source = new URL(referrer).hostname;
    }

    return referrerInfo;
}

console.log(getReferrerInfo());

注意事项

  • document.referrer可能会因为用户隐私设置或者浏览器插件而为空或者不准确。
  • 对于HTTPS到HTTP的跳转,出于安全考虑,document.referrer可能会被设置为空。
  • 在使用document.referrer时,需要注意隐私保护,不要滥用用户来源信息。

遇到的问题及解决方法

  • 如果document.referrer为空,可能是因为用户直接输入了网址访问,或者浏览器设置了阻止发送referrer信息。这种情况下,无法通过JavaScript获取到访问来源。
  • 如果需要更详细的用户行为分析,可以考虑使用第三方分析工具,如Google Analytics等,这些工具通常提供了更全面的用户跟踪功能。
  • 如果出于安全考虑需要限制某些来源的访问,可以在服务器端进行更严格的检查,比如检查HTTP请求头中的Referer字段,而不是仅仅依赖客户端的JavaScript。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 利用 leancloud 记录 referrer 访问来源

    访问来源 最近 leancloud 后台记录了部分页面访问是从 pages 目录来访的,这个目录是之前还没使用二级域名 blog 前使用的,后面加了 blog 之后就不再用 pages 目录来访问页面了...,现在想要了解访问 pages 目录的源头都在哪里(一般在谷歌)一般来说,通过前端统计信息比较有限,我们想要拿到一部分访问者的信息需要一些特定的 api ,比如访问 ip 地段,用户基本访问源等等,这里主要聊下如何将获取到的信息储存到...类型的浏览量和 string 类型的页面链接等等,不过要动态获取范围源我们需要将拿到的访问源存在数组 array 里,并且在每次访问页面时更新新的访问源并追加到该页面已存在的访问源后面,要实现这个操作除了一般的...(id)referrer 信息 OK,以上就是使用 leancloud 在 valine 中实现范围来源记录所需要的部分代码(不可直接用,部分代码已省略) referrer 拓展 上面主要聊了如何将访问来源作为数组存到...leancloud 中,不过关于 referrer 了解略少,下面简单聊下 referrer 有关的东西 隐私&安全 通过 referrer 虽然可以简单获取页面访问来源,不过有时候我们是不希望别人采集我们的访问来源

    17110

    php防止模拟用户来源和访问-反爬虫

    要实现ajax跨域访问,需要设置 header(“Access-Control-Allow-Origin:*”); //跨域权限设置,允许所有 要防止ajax跨域访问,需要设置 header(“Access-Control-Allow-Origin...//判断是否为ajax请求,防止别人利用curl的post抓取数据 if(isset(_SERVER[“HTTP_X_REQUESTED_WITH”])&&strtolowe_SERVER[“HTTP_X_REQUESTED_WITH...完整解决方案: header(“Access-Control-Allow-Origin:http://leshen.applinzi.com/cet”); //只允许本站提交数据,前端防ajax跨域,其实js...本来就不能跨域 //判断是否为ajax请求,后端防止别人利用curl的post抓取数据 if(isset(_SERVER[“HTTP_X_REQUESTED_WITH”])&&strtolower( 未经允许不得转载...:肥猫博客 » php防止模拟用户来源和访问-反爬虫

    2.8K30

    如何判断js函数存在

    前言 有时候想判断一个js变量或者js函数时候存在,该怎么实现呢? 引发 最近开发一款应用插件,兼容pjax会调用函数加载播放器,但是有时候页面没有音乐就不需要加载播放器,这时候调用函数就会报错。...解决方案 怎么判断函数是否存在,调用这个函数,参数传入函数名存在返回真否则假 function isExitsFunction(funcName) {try { if (typeof(eval...原理刨析 eval 函数 执行一段js并返回值 typeof 函数 判断类型 try catch 代码块 捕捉错误并防止程序终止 typeof(eval(funcName)) == "function..." 这行代码获取这个函数 判断类型时候为function eval执行函数名如果存在就会成功(返回类型或者值) 如果失败就会throw error这时候套try catch语法就可以阻止错误丢出 catch...(e) {} 很显然捕捉了错误 接着执行最后一行 return false; js函数不存在

    7.7K30
    领券