【黑帽SEO系列】网页劫持和页面跳转

网页劫持是目前黑帽SEO或者说黑产最喜欢的一种网页引流方式,此手法往往通过入侵政府、教育机构网站(权重高),修改网站源代码、放寄生虫程序、设置二级目录反向代理等实现。网页劫持可以分为服务端劫持、客户端劫持、百度快照劫持、百度搜索劫持等等;表现形式可以是劫持跳转,也可以是劫持呈现的网页内容,目前被广泛应用于私服、博彩等暴利行业。

服务端劫持
服务端劫持也称为全局劫持,手法为修改网站动态语言文本,判断访问来源控制返回内容,从来达到网站劫持的目的。

asp/aspx/php劫持
  Global.asa、Global.asax、conn.asp、conn.php等文件比较特殊,作用是在每次执行一个动态脚本的时候,都会先加载该脚本, 然后再执行目标脚本。所以只要在 Global.asa 中写判断用户系统信息的代码(访问来源等),如果是蜘蛛访问则返回关键词网页(想要推广的网站),如果是用户访问,则返回正常页面。

客户端劫持
客户端劫持的手法也很多,但主要就是2种:js劫持、Header劫持。

js劫持
js劫持目的:通过向目标网页植入恶意js代码,控制网站跳转、隐藏页面内容、窗口劫持等。
js植入手法:可以通过入侵服务器,直接写入源代码中;也可以写在数据库中,因为有些页面会呈现数据库内容。

js劫持案例
效果:通过搜索引擎搜索点击页面(执行一段js)跳转到博彩页面;直接输入网址访问网页,跳转到404页面。
代码:

1
2
3
4
5
6
7
8
9
10
11
today=new Date();
today=today.getYear()+"-"+(today.getMonth()+1)+"-"+today.getDate();
var regexp=/.(sogou|so|haosou|baidu|google|youdao|yahoo|bing|gougou|118114|vnet|360|ioage|sm|sp)(.[a-z0-9-]+){1,2}//ig;
var where =document.referer;
if(regexp.test(where)){
document.write (’’);
}
else
{
window.location.href="…/…/404.htm";
}
分析:通过referer判断来路,如果referer来路为空就是跳转到404页面,如果是搜索引擎来的referer里面也会有显示,然后在写代码控制跳转。如果只是控制实现显示不同的内容,可以修改php、asp代码;如果需要劫持搜索引擎搜索框,可以写JS代码来做浏览器本地跳转。当然js功能可以无限扩展,比如可以控制一个ip一天内第一次访问正常,其余访问跳转等等。

header劫持
在源代码中写入以下代码:

1

利用的就是Meta Refresh Tag(自动转向),将流量引走。

手法对比
客户端劫持与服务端区别
客户端劫持:每次访问网页从服务端获取到的网页代码都是相同的,只是控制了网页代码在浏览器中呈现的效果(比如是否进行跳转等)。
服务端劫持:改变了每次访问网页从服务端获取到的网页代码。

客户端劫持与服务端判断方法
客户端劫持的判断方法:只需观察浏览器呈现的网页前端代码,查看是否引用了不当的js,或者其它敏感内容。
服务端劫持的判断方法:可以通过观察网站后端代码,或者通过改变ip,包头等方式,观察放回源码是否不同。

结语:网页劫持的方法还有很多,我了解的大概只是皮毛,黑帽SEO技术的水很深,前路漫漫。
想要更深入地了解黑帽SEO,就必须先了解关于网站的一些基础知识,以及黑帽SEO常见的作弊手法。(可以参考:黑帽SEO–基础知识)其中页面跳转便是作弊手法之一,最近我收集了一些关于页面跳转的相关内容,在此汇总分享。

页面跳转分类
(一)服务端跳转
 一般用户不会感觉到跳转的实际行为,往往通过代码去控制,因此有些时候我们也不叫做跳转。具体的服务端跳转行为有很多,各个语言技术都有各自的特点。

(二)客户端跳转
客户端跳转分为:http层跳转,应用层跳转。
应用层跳转分为:html head跳转,js跳转等。

http层跳转
 http跳转是指server根据工作情况通过http返回状态码,利用http的重定向协议指示客户端浏览器跳转到相应页面的过程,一般返回码是302。

html head跳转(HTML refresh)
在html代码的head中添加特殊标签,如下

1

js跳转
通过在html代码中添加js代码,通过js代码实现跳转:

1
2
3

这个跳转应该比html head跳转更向后延迟。

各种跳转包含关系
服务端跳转
客户端跳转
http跳转
应用层跳转
html head跳转
html js跳转
各种跳转介绍
(一)服务端跳转
介绍:跳转发生在服务器上,用户不会有任何感觉。
优点:跳转行为在server进行, 一次tcp连接完成相关操作,对用户是透明的,不会造成疑惑。
缺点:对用户隐藏了信息,跳转行为都发生在server端,对server有压力。

(二)http跳转
介绍:跳转发生在服务端发生数据给客户端过程中,用户能够感觉到,并且状态码往往为302。
优点:响应速度快,在http1.1协议下通过合适的设置可以使用同一个tcp连接,节省网络时间,服务器及用户端都不需要进行额外的数据处理工作,节省时间。
缺点:仅仅能做跳转没有其他功能,基于js及html的跳转可以选择延时跳转,但是302无法选择延时跳转等。

(三)html head跳转
介绍:跳转发生在服务端已经将数据传输到客户端以后,用户能够感觉到。
优点:跳转方式灵活,可以指定延时跳转等等
缺点:可能多次建立tcp连接,在低速网络下效率更低,浪费客户端的时间。

(四) js跳转
介绍:跳转发生在服务端已经将数据传输到客户端以后,用户能够感觉到
优点:跳转方式灵活,可以指定延时跳转等等
缺点:可能多次建立tcp连接,在低速网络下效率更低,浪费客户端的时间。

欢迎留言交流补充!

你可能感兴趣的:(SEO)