本文主要是介绍从一路捞导航网(16lao.com)的UA控制的页面跳转的BUG说起,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
最近在地铁上看到了一路捞导航网铺天盖地的广告,想想明天就要踏上回家的火车,无事可做,于是就上上这个网站吧。
我的电脑安装的是Xubuntu系统,是个Linux操作系统,然后打开Firefox浏览器,键入16lao.com,回车。
奇迹发生了,页面从16lao.com跳转到m.16lao.com,之后又跳转到m.cn.16lao.com。
我心想,这可是个PC啊,怎么跳到移动端页面去了?
于是切换个UA吧,换成Win的UA果然没有再跳转了。
那么原因是什么呢?
先上CURL工具试试,
无论如何都会跳转cn.16lao.com的吧,继续
出代码了,估计不是header的事儿,再查查header
没有发现301,302什么的,估计是JS了。
看看源码吧,果然里面有这么一段:
<script type="text/javascript">
function checkReqUrl(){ var redirectUrl = ""; var u = navigator.userAgent; if (u.indexOf('iPhone') > -1) { redirectUrl="http://m.16lao.com"; } if (u.indexOf('Android') > -1 || u.indexOf('Linux') > -1) { var referrerUrl = document.referrer; var re =new RegExp("http://hd[.].+[.]16lao.com"); if(!re.test(referrerUrl)){ redirectUrl="http://m.16lao.com"; } } if(redirectUrl!=""){ window.location.href = redirectUrl; }
}
checkReqUrl();
</script>
于是真相就浮出水面了。
原来你家是判断UA里面的字符的,Android和iPhone也就罢了,Linux是个什么鬼?
这是鄙视Linux操作系统上网的家伙们么?
这篇关于从一路捞导航网(16lao.com)的UA控制的页面跳转的BUG说起的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!