在百度上正常搜索一个关键词,比如箭牌指纹锁,搜索的结果如下:
其他的搜索结果很正常比如第一个是官网,第二个是京东的页面,第三个页面显示的域显示的是一个资讯网站,点击进入之后却是天猫的页面,查看百度快照,快照的内容才是原页面的内容。背后肯定是用了页面跳转技术的,但究竟是什么类型的跳转,需要研究一下。
首先想到的就是JS跳转,打开Chrome设置,禁用网站JS:
再次点击百度搜索页面的链接,结果显示正常了,与快照的内容也是一致的。也就是说,页面使用的JS判断跳转,具体看一下判断的条件,是浏览器的UA还是其他项。查看页面的源代码,找到网站加载的JS,找到以下内容:
可以看到,网站针对浏览器的referrer头进行了判断跳转;解释一下浏览器referrer ,Http协议头中的Referer主要用来让服务器判断来源页面, 即用户是从哪个页面来的,通常被网站用来统计用户来源,是从搜索页面来的,还是从其他网站链接过来,或是从书签等访问。这里只要用户从百度、搜狗、360、google搜索并点击进来的,就会跳转到指定页面。而正常访问该页面的链接则不会跳转。
为什么蜘蛛不会跳转到相应的页面,是的快照的内容是跳转之后的页面内容?
有三点可能性,1、蜘蛛访问时并不携带referrer信息,所以不会跳转;2、蜘蛛无法很好的对网站的js进行判断,说白了不认识JS;3、蜘蛛无法访问被跳转页面的内容,因为电商内的网站一般是禁止蜘蛛抓取的。
不当之处请批评指出。