本文详解如何使用JavaScript的document.referrer属性获取访客来源网址,并通过字符串匹配判断是否来自特定合作站点或主流搜索引擎。文章提供了拒绝无效合作链接、自动跳转至指定页面以及识别搜索引擎蜘蛛流量的多种代码实现方案,同时介绍了利用navigator.userAgent和platform属性区分PC、Android及iOS设备的方法,旨在帮助开发者优化流量引导与用户体验。
利用document.referrer判断访客来源
在处理企业间网站合作时,常出现合约终止后对方未移除链接的情况,这可能导致用户误解双方仍存在合作关系。虽然这能带来一定流量,但容易引发混淆。为解决此问题,无需修改服务器配置,只需通过简单的JavaScript代码即可获取访客来源地址,并实施相应的访问控制或跳转策略。
实现效果如下所示:

拒绝无效合作链接的跳转示例
<script type="text/javascript">
var refurl=document.referrer;
if(refurl.indexOf("wowgame")>-1){
alert("你的来源网址为:【"+document.referrer+"】目前本站与该站已终止合作。");
location.replace(refurl);
}
</script>
该方法操作简便,若遇到类似需求可直接参考。示例中将访客重定向回来源页面,开发者也可根据实际需求,在检测到特定来源链接时,引导用户至声明合作终止的页面,既澄清了关系,也可能借此获取额外流量。
此技术常用于分析来源页面的关键词,特别是判断用户是否通过搜索引擎进入,并记录其搜索关键词,进而提供相关链接推荐。
合理运用该技术能显著提升用户体验,帮助访客快速定位所需信息。
以下是一些特殊的补充说明。
如何使用JavaScript判断访问来源是来自搜索引擎爬虫还是直接访问。
以下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)。
基于UserAgent的设备类型判断
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"等。
基于Platform的操作系统判断
<!--
//平台、设备和操作系统
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的资料请关注本站其它相关文章!