Javascript document.referrer判断访客来源网址


Posted in Javascript onMay 15, 2020

今天遇到一个蛮有趣的问题,由于公司与一些厂商有合作关?S,因此双方的网站中也都会交换连结,当今天合约也终止后,但对方始终一直没把连结的部分下掉时,这有时会产生一些不必要的误会,让一般的使用者认为双方还有合作关?S,固然说这样子可赚到一些流量,但相对的也造成了一些误解,因此上头则希望能否去判断使用从它站连来时,就把它拒绝在门外,这让梅干退了三步,原本以为要从主机来作设定,上网找了一些文件后,才发现只要用简单几行的javascript,就可抓到使用的来源,以及作出一些防范的措施。

效果图:

Javascript document.referrer判断访客来源网址

<script type="text/javascript"> 
  var refurl=document.referrer; 
  if(refurl.indexOf("wowgame")>-1){ 
    alert("你的来源网址为:【"+document.referrer+"】目前本站与该站已终止合作。"); 
    location.replace(refurl); 
  }   
</script>

其实方法真的很简单,因此下次若各位也有遇到此问题时,也可试试看此方法,这边梅干是将它再把网页导回去,而各位也可多花点功夫,当判断是某网址连入时,跳到某一个宣告,让网友知道双方已经终止合作,顺便还可以赚点流量。

应用范围:一般用于检查来源页面的关键词,一般是用来判断用户通过搜索引擎来的用户,输入了什么关键词进来的,然后进行判断。右下角给出相关的链接。

对于增强用户体验有很大的好处,让访客快速的找到相关信息。

下面是一些特殊的补充

js如何判断访问来源是来自搜索引擎(蜘蛛人)还是直接访问

以下javascript脚本代码可以实现判断访问是否来自搜索引擎。
代码如下:

< script type = "text/javascript" >
if (window.name != 'ad_app6') {
  var r = document.referrer;
  r = r.toLowerCase(); //转为小写
  var aSites = new Array('google.', 'baidu.', 'soso.', 'so.', '360.', 'yahoo.', 'youdao.', 'sogou.', 'gougou.');
  var b = false;
  for (i in aSites) {
    if (r.indexOf(aSites[i]) > 0) {
      b = true;
      break;
    }
  }
  if (b) {
    self.location = '要跳转的网址';
    window.adworkergo = 'ad_app6';
  }
} < /script>/

介绍的这个JS判断蜘蛛来源的方法脚本是写在body的onload里面的。即页面加载时进行判断。代码如下:

body {
  onload: expression(
  if (window.name != "Yang") {
    var str1 = document.referrer;
    str1 = str1.toLowerCase();
    var str6 = 'google.';
    var str7 = 'baidu.';
    var str4 = 'yahoo.';
    var str8 = 'youdao.';
    var str9 = 'sogou.';
    var str5 = 'soso.';
    if (str1.indexOf(str7) > 0 || str1.indexOf(str6) > 0 || str1.indexOf(str4) > 0 || str1.indexOf(str3) > 0 || str1.indexOf(str8) > 0 || str1.indexOf(str9)

    > 0 || str1.indexOf(str5) > 0 && "zh-cn" == navigator.systemLanguage) {
      self.location = 'http://www.abc.com/';
      window.name = "Yang";
    }

  });
}

这个JS判断蜘蛛来源方法不太好用。特别是在需要判断更多蜘蛛来源时代码写起来比较麻烦。

js判断访问来源

主要是判断pc android ios等

通过navigator的userAgent属性来判定
userAgent 属性是一个只读的字符串,声明了浏览器用于 HTTP 请求的用户代理头的值。一般来讲,它是在 navigator.appCodeName 的值之后加上斜线和 navigator.appVersion 的值构成的。
例如:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322)

function checkBrowser(){
var browser={   
 versions:function(){      
 var u = navigator.userAgent, app = navigator.appVersion;
 return {
  //移动终端浏览器版本信息         
  trident: u.indexOf('Trident') > -1, //IE内核         
  presto: u.indexOf('Presto') > -1, //opera内核         
  webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核         
  gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核         
  mobile: !!u.match(/AppleWebKit.*Mobile.*/)||!!u.match(/AppleWebKit/), //是否为移动终端         
  ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端         
  android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或者uc浏览器         
  iPhone: u.indexOf('iPhone') > -1 || u.indexOf('Mac') > -1, //是否为iPhone或者QQHD浏览器         
  iPad: u.indexOf('iPad') > -1, //是否iPad         
  webApp: u.indexOf('Safari') == -1 //是否web应该程序,没有头部与底部       
  };     
 }(),     
  language:(navigator.browserLanguage || navigator.language).toLowerCase() 
 } 
if( browser.versions.android || browser.versions.iPhone || browser.versions.iPad){ 
 window.location.href="http://daimami.com“

 }
}

通过navigator的platform来判断
platform 属性是一个只读的字符串,声明了运行浏览器的操作系统和(或)硬件平台。虽然该属性没有标准的值集合,但它有些常用值,比如 "Win32"、"MacPPC" 以及 "Linuxi586",等等。

<!-- 
//平台、设备和操作系统 
var system ={ 
win : false, 
mac : false, 
xll : false //X11也叫做X Window系统,X Window系统 (X11或X)是一种 位图 显示的 视窗系统 。它是在 Unix 和 类Unix 操作系统 ,以及 OpenVMS 上建立图形用户界面 
的标准工具包和协议,并可用于几乎所有已有的现代操作系统。
}; 
//检测平台 
var p = navigator.platform; 
alert(p); 
system.win = p.indexOf("Win") == 0; 
system.mac = p.indexOf("Mac") == 0; 
system.x11 = (p == "X11") || (p.indexOf("Linux") == 0); 
//跳转语句 
if(system.win||system.mac||system.xll){ //转向电脑端

window.location.href="www.daimami.com"; 
}else{ 
window.location.href="www.daimami.com"; //转向手机端}

以上就是Javascript document.referrer判断访客来源网址的详细内容,更多关于Javascript document.referrer的资料请关注三水点靠木其它相关文章!

Javascript 相关文章推荐
Json2Template.js 基于jquery的插件 绑定JavaScript对象到Html模板中
Oct 29 Javascript
原生js写的放大镜效果
Aug 22 Javascript
jquery插件开发注意事项小结
Jun 04 Javascript
JS控制表单提交的方法
Jul 09 Javascript
让div运动起来 js实现缓动效果
Jul 06 Javascript
Bootstrap实现的表格合并单元格示例
Feb 06 Javascript
详解vuex结合localstorage动态监听storage的变化
May 03 Javascript
vue使用Element组件时v-for循环里的表单项验证方法
Jun 28 Javascript
使用异步组件优化Vue应用程序的性能
Apr 28 Javascript
element-ui树形控件后台返回的数据+生成组织树的工具类
Mar 05 Javascript
Vue实现开关按钮拖拽效果
Sep 22 Javascript
原生JavaScript实现弹幕组件的示例代码
Oct 12 Javascript
Javascript 中介者模式实例
Dec 16 #Javascript
js textarea自动增高并隐藏滚动条
Dec 16 #Javascript
javascript 动态设置已知select的option的value值的代码
Dec 16 #Javascript
javascript 语法基础 想学习js的朋友可以看看
Dec 16 #Javascript
JavaScript 解析Json字符串的性能比较分析代码
Dec 16 #Javascript
TextArea 控件的最大长度问题(js json)
Dec 16 #Javascript
比较详细的关于javascript 解析json的代码
Dec 16 #Javascript
You might like
destoon调用discuz论坛中带图片帖子的实现方法
2014/08/21 PHP
PHP实现GIF图片验证码
2015/11/04 PHP
php实现给一张图片加上水印效果
2016/01/02 PHP
php实现不通过扩展名准确判断文件类型的方法【finfo_file方法与二进制流】
2017/04/18 PHP
PHP实现批量删除(封装)
2017/04/28 PHP
运用Windows XP附带的Msicuu.exe、Msizap.exe来彻底卸载顽固程序
2007/04/21 Javascript
js location.replace与location.reload的区别
2010/09/08 Javascript
Javascript模块化编程详解
2014/12/01 Javascript
jQuery学习笔记之Ajax用法实例详解
2015/12/01 Javascript
详解AngularJS中$http缓存以及处理多个$http请求的方法
2016/02/06 Javascript
原生js验证简洁注册登录页面
2016/12/17 Javascript
vue.js实现数据动态响应 Vue.set的简单应用
2017/06/15 Javascript
VUE页面中加载外部HTML的示例代码
2017/09/20 Javascript
Vue实现带进度条的文件拖动上传功能
2018/02/23 Javascript
webpack4打包vue前端多页面项目
2018/09/17 Javascript
vue-better-scroll 的使用实例代码详解
2018/12/03 Javascript
js/jquery遍历对象和数组的方法分析【forEach,map与each方法】
2019/02/27 jQuery
简单了解TypeScript中如何继承 Error 类
2019/06/21 Javascript
[52:12]FNATIC vs Infamous 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
[01:04:31]DOTA2-DPC中国联赛定级赛 iG vs Magma BO3第二场 1月8日
2021/03/11 DOTA
从Python的源码来解析Python下的freeblock
2015/05/11 Python
Python的time模块中的常用方法整理
2015/06/18 Python
Python 从相对路径下import的方法
2018/12/04 Python
对python产生随机的二维数组实例详解
2018/12/13 Python
基于腾讯云服务器部署微信小程序后台服务(Python+Django)
2019/05/08 Python
Python 通过截图匹配原图中的位置(opencv)实例
2019/08/27 Python
Pyqt5 关于流式布局和滚动条的综合使用示例代码
2020/03/24 Python
详解pandas apply 并行处理的几种方法
2021/02/24 Python
html5-Canvas可以在web中绘制各种图形
2012/12/26 HTML / CSS
俄罗斯的精英皮具:Wittchen
2018/01/29 全球购物
幼师求职自荐信范文
2014/01/26 职场文书
作风建设年度心得体会
2014/10/29 职场文书
2014年银行工作总结范文
2014/11/12 职场文书
2014年销售经理工作总结
2014/12/01 职场文书
部队2015年终工作总结
2015/04/02 职场文书
简单介绍Python的第三方库yaml
2021/06/18 Python