胡靜靜,鄭吉鴻
(1.合肥工業大學 計算機科學技術學院,安徽 合肥 230009;2.淮北職業技術學院 計算機系,安徽 淮北 235000;3.淮北職業技術學院 招生辦,安徽 淮北 235000)
利用JavaScript重定向跳轉作弊技術的研究
胡靜靜1,2,鄭吉鴻3
(1.合肥工業大學 計算機科學技術學院,安徽 合肥 230009;2.淮北職業技術學院 計算機系,安徽 淮北 235000;3.淮北職業技術學院 招生辦,安徽 淮北 235000)
搜索引擎中作弊技術已經成為網絡發展的一種主要挾持手段.本文對基于JavaScript網頁中常用的重定向技術進行了分析,并給出了簡單實用的解決代碼.
JavaScript;重定向;作弊
當今社會,互聯網已經是人們獲得信息,進行資源交流十分普及的方式,而搜索引擎則可以根據用戶的檢索需求,列出用戶所需的相關信息.作弊者利用JavaScript重定向進行作弊,將訪問者使用搜索引擎引導到作弊者的目的頁面,進而達到作弊的目的,由于這種方法形式各異,且不易被察覺,因此,該手段目前十分普遍.
重定向技術顧名思義,就是將原始的數據源通過網絡重新定義到其他位置的另一個數據源.使用重定向技術進行搜索時,即便被搜索引擎請求的頁面的位置發生了改變,仍然可以通過自動跳轉進行自動轉向.重定向技術可以分為兩類,一類是服務器端重定向,一類是客戶端重定向.
1.1 重定向狀態碼
基于HTTP狀態代碼的重定向是指向服務器發送瀏覽請求時 (如URL地址,GET,POST等),服務器返回一組HTTP數據流報頭其中包含的某種狀態碼.HTTP報頭部分使用狀態代碼來表示[1],重定向狀態碼需要客戶端采取下一步操作才能完成請求.HTTP標準包含的重定向狀態碼為3XX,具體定義如上圖.

1.2 基于META標簽的重定向
下面的代碼可以實現基于META標簽進行重定向.

META標簽寫在Web頁面頭部,設置標簽屬性值可以實現重定向.http-equiv屬性值設為refresh即可實現重定向,Content屬性的值表示重定向前的延時,單位為秒,可設為0,url表示重定向跳轉的鏈接.這種基于META標簽的重定向是一種最易于實現的客戶端重定向技術,它發生在部分頁面載入加上設定的延時之后.
1.3 JavaScript實現重定向
目前,最常見客戶端重定向(Redirect)技術是基于JavaScript的重定向.這種重定向發生在客戶端向服務器發送一個請求,要求獲取一個資源,但是服務器接收請求后發現資源實際在另外一個位置時.可以實現重定向的方法很多,下面給出2種方法均可實現.

上述三種重定向方法在實際使用時各有優缺點,服務器端重定向,是在不同頁面之間的轉向是直接在服務器端完成的,客戶端只能看到結果,而不能看到轉向的過程.由于搜索引擎蜘蛛通常無法訪問JavaScript的內容.例如,當百度蜘蛛對包含JavaScript的網頁編制索引時,它只會將該網頁編入索引,但不會去追蹤JavaScript本身所隱藏的任何鏈接或將這些鏈接編入索引.在JavaScript和非腳本標記中分別放置不同的文字會違反百度的網站站長指南,因為如果這樣做,網站會對用戶(能夠看到基于JavaScript的文字)和搜索引擎(能夠看到非腳本標記中的文字)分別顯示和隱藏不同的內容,也就是說用戶看到的信息和蜘蛛看到的信息是不一樣的.相關研究顯示,使用腳本進行重定向的頁面中,作弊頁面的數量是正常頁面的3倍[2].研究作弊者使用JavaScript進行作弊方式可以有效地識別垃圾網頁,因此,我們將當前作弊者常用的基于JavaScript重定向的作弊手段進行了如下分類:
2.1 直接重定向
通過下面的代碼通過腳本直接修改頁面的位置屬性即可實現.

也可以通過一些條件語句進行判斷來實現重定向.

2.2 字符串操作結合
在上一種方式中是將整個目的URL作為一個number string,為了避免這種情況,采用如下代碼來實現字符串操作結合:


2.3 使用Unescape解碼方法
通過下面的代碼可以實現將網頁重定向至http://spampage.com.

2.4 自定義解碼函數的方法
Unescape解碼是固定的解碼方式,有些作弊者為了避免作弊被發覺,可以利用計算機統計的方法找出其中某些字符串匹配的規律,使用自定義的方式將一些解碼函數自定義,以此避免出現固定的匹配模式.可用如下代碼實現使用自編碼方式重定向至http://spampage.com.

2.5 注入方式
腳本的本身具有運行時會產生更多的腳本指令的特點,因此,作弊者為了掩蓋作弊的痕跡,會利用注入方式與上述解碼規則結合,產生更復雜的腳本代碼,實現作弊的目的.另外通過腳本還可以進行HTML元素及事件注入[3].下面使用腳本的例子可以實現通過注入方式進行重定向.

所述腳本注入產生的代碼如下所示,執行該腳本代碼后頁面被重定向到http://spampage.com頁面.

2.6 使用Referrer屬性
Referrer屬性可以得到載入當前文檔的URL(即鏈接并打開當前文檔的URL).語法格式為:document.referrer,如果當前文檔不是通過超級鏈接訪問的,則為空(null)[4].利用下面的代碼可以將不同來源的訪問重定向到不同的頁面.


自動跳轉技術可以用來實現當頁面出現故障,或者域名更改等意外情況下的替換和更正等良性引導的功能,但是有些人“綁架”用戶,讓訪問者強制訪問指定頁面,獲得點擊量,實現“作弊”的最終目的,這種做法只會引起訪問用戶的反感,也嚴重影響了互聯網的訪問規則,破壞了互聯網秩序,因此,研究如何防止作弊者利用JavaScript重定向跳轉技術進行作弊是十分重要的.
〔1〕中國互聯網信息中心.第24次中國互聯網絡發展狀況統計報告[EB/OL].http://www.cnnic. net.cn/uploadfiles/doc/2009/7/16/125040.doc.
〔2〕Z.GySngyi and H,Garcia Molina,Web spam taxonomy.In Proceedings Of the 1st International Workshop on Adversarial Information Retrieval on the Web(mgWeb),2005:1-5.
〔3〕Zhuge J,Holz T,Song C,et al.Studying malicious websites Andthe underground economy on the Chinese Web [C]∥Proc of 7th Workshop on the Economics of Information Security(WEIS'08),Hanover,NH,2008.
〔4〕ChellapillaK,MaykovA.A taxonomy of javascript redirection Spam.In AIR Web'07: Proceedings of the 3rd international Workshop on Adversarial information retrieval on the web New York,NY,USA,2007:2-8.
〔5〕王暾.基于JavaScript的網頁重定向作弊技術研究[J].計算機與數字工程,2012(3).
TP391.13
A
1673-260X(2017)03-0028-03
2016-11-23
2015安徽省精品課程軟件工程專業綜合試點改革 (2015zy095);2014安徽省級質量工程項目卓越技能型動漫設計師教育培養計劃(2014zjjh058);2016淮北職業技術學院院級質量工程項目多媒體課件在計算機類制作實訓中的教學應用研究(2016jyxm_09)