1. 程式人生 > >【黑帽SEO系列】網頁劫持和頁面跳轉

【黑帽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連線,在低速網路下效率更低,浪費客戶端的時間。

歡迎留言交流補充!