项目原创:js获取网站搜索来源代码

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Just_Do_It_1993/article/details/79736395

把以下代码引入所有页面,即可实现收集系统来源的功能,在任意页面中都可以使用全局的统一的来源信息

var args = {
    mySite:"localhost",
    subSite:"子网站,比如移动端: m.xxx.com"
}
var index = (function(a) {
    var c = "";
    var d = args.mySite;
    a(function() {
        var g = function() {
            return function(k, l, j) {
                var h = j * 24 * 60 * 60 * 1000;
                var i = new Date();
                i.setTime(i.getTime() + h);
                var e = "; expires=" + i.toGMTString();
                document.cookie = k + "=" + escape(l) + e + "; path=/"
            }
        };
        try {
            if (document.referrer.indexOf(d) <= 0 || document.referrer.indexOf(d) > 10) {
                g().call(window, "regCompanyName", document.referrer.substring(0, 40) + "||" + window.location.href, 30)
            }
        } catch (f) {

        }
    });
    var b = function() {
        try {
            if (getCookie) {
                return getCookie
            }
        } catch (f) {}
        return function(e) {
            if (document.cookie.length > 0) {
                c_start = document.cookie.indexOf(e + "=");
                if (c_start != -1) {
                    c_start = c_start + e.length + 1;
                    c_end = document.cookie.indexOf(";", c_start);
                    if (c_end == -1) {
                        c_end = document.cookie.length
                    }
                    return unescape(document.cookie.substring(c_start, c_end))
                }
            }
            return null
        }
    };
})(jQuery);

//媒体
var media = "";
//媒体细分
var mediaSubdivide = "";
//注册渠道。(直接赋值)
var registerChannel = "";
//终端,根据用户使用设备判断
var terminal = "";
//数据来源,根据cookie确定
var dataSource = "";
//当前链接
var localUrl = window.location.href;

var userChannel = {
    //媒体
    Media: function(channelInfo){
        channelInfo=channelInfo.toLowerCase();
        if(channelInfo.indexOf("||") == 0 && (channelInfo.indexOf(args.mySite) >= 0)){
            //媒体  无法判断(如直接搜索) 
            media = "网址打开或站内跳转";  //媒体
            mediaSubdivide =  "";       //媒体细分

            // 无法获取referrer的来源的情况有:
            //1、个别平台外链使用noreferrer;
            //2、https跳转http;
            //3、网页重定向...
            //可在外链中植入可判定的参数如www.xxx.com&tag=zhihu
            if(channelInfo.indexOf("zhihu")>=0){
                media = "知乎";
                mediaSubdivide = "";
            }
        }else if(channelInfo.indexOf("baidu.com") != -1){
            media = "百度";                       //媒体
            if(channelInfo.indexOf('utm_medium=cpc') != -1){
                mediaSubdivide = "sem";         //媒体细分
            }else if(channelInfo.indexOf('utm_medium=cpc') == -1){
                mediaSubdivide = "seo";         //媒体细分
            }else{
                mediaSubdivide = "其它";      //媒体细分
            }
        }else if(channelInfo.indexOf('haosou.com') != -1 || channelInfo.indexOf('so.com') != -1){
            media = "好搜";                       //媒体
            mediaSubdivide = "无法判断";        //媒体细分
        }else if(channelInfo.indexOf('sogou.com') != -1){
            media = "搜狗";                       //媒体
            mediaSubdivide = "无法判断";        //媒体细分
        }else if(channelInfo.indexOf('sm.cn') != -1){
            media = "神马";                       //媒体
            mediaSubdivide = "无法判断";        //媒体细分
        }else if(channelInfo.indexOf('bing.com') != -1){
            media = "必应";                       //媒体
            mediaSubdivide = "无法判断";        //媒体细分
        }else if(channelInfo.indexOf('google.com') != -1){
            media = "google";                       //媒体
            mediaSubdivide = "无法判断";        //媒体细分
        }else if(channelInfo.indexOf('douban.com') != -1){
            media = "豆瓣";                       //媒体
            mediaSubdivide = "无法判断";        //媒体细分
        }else if(channelInfo.indexOf("zhihu.com") != -1){
            media = "知乎";
            mediaSubdivide = "无法判断";        
        }   
        else if(channelInfo.indexOf("toutiao") != -1){
            media = "今日头条";
            mediaSubdivide = "无法判断";        
        }
        else{
            media = "其它";                       //媒体
            mediaSubdivide = "无法判断";        //媒体细分
        }
    
        var mediaInfo=new Array(media,mediaSubdivide);
        return mediaInfo;
    },
    //终端
    Terminal: function(){
        if ((navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i))){
            terminal = "移动端";
            return terminal;
        }else{
            terminal = "PC端";
            return terminal;
        }
    },
    
    //注册渠道。通过判断当前页面url获取
    RegisterChannel: function(){
        if(localUrl.indexOf(args.mySite)!= -1 ){
            registerChannel = args.mySite+"网站注册";
            return registerChannel;
        }else if(localUrl.indexOf(args.subSite)!= -1){
            registerChannel = args.subSite+"网站注册";
            return registerChannel;
        }else{
            registerChannel = "未知";
            return registerChannel;
        }
    }
};

//通用设置cookie方法
function setCookie(name, value, days) {
    var cookieTime = days * 24 * 60 * 60 * 1000;
    var d = new Date();
    d.setTime(d.getTime() + cookieTime);
    var cookieExpires = "; expires=" + d.toGMTString();
    document.cookie = name + "=" + escape(value) + cookieExpires + "; path=/";
}
//通用读取cookie方法
function getCookie(name) {
    var strCookie = document.cookie;
    var arrCookie = strCookie.split("; ");
    for (var i = 0; i < arrCookie.length; i++) {
        var arr = arrCookie[i].split("=");
        if (arr[0] == name)
            return unescape(arr[1]);
    }
    return "";
}

//排除站内跳转的情况,以免window.name被错误覆盖
if(document.referrer.indexOf(args.mySite)<=0){
    window.name=document.referrer.substring(0,40)+"||"+window.location.href;
}

//使用案例
dataSource = getCookie('regCompanyName');
if(!dataSource || ""== dataSource || typeof(dataSource)== "undefined") {
    //当cookie无法使用时,优先使用window.name
    dataSource = (window.name) ? window.name : "";
}

var judgeMedia = userChannel.Media(dataSource);
var judgeTerminal = userChannel.Terminal();
var judgeRegisterChannel = userChannel.RegisterChannel();

console.log(judgeMedia+' ',judgeTerminal+' ',judgeRegisterChannel+' ');

猜你喜欢

转载自blog.csdn.net/Just_Do_It_1993/article/details/79736395