一. 設計原則與整體體系結構
1.1 設計原則
搜索引擎ANTI-SPAM作為一個新型的技術領域,目前逐漸引起學術屆和搜索引擎市場的逐步重視.通過大量資料分析,我認為一個好的實用ANTI-SPAM系統應該遵循以下兩個設計原則:
原則1.實用的搜索引擎ANTI-SPAM系統應該允許核心算法公布,并且在核心算法公布之后不會導致現有ANTI-SPAM系統的失效.
原則2.實用的搜索引擎ANTI-SPAM系統應該結合技術和非技術的手段形成一個綜合防治系統.兩者交互影響形成有效的互相促進作用.
其中原則1是為了避免提供搜索引擎服務的公司陷入以下疲于奔命的狀態:核心算法被泄漏,SPAMER找到應付對策,搜索引擎服務公司更換核心算法,核心算法被泄漏…..
而原則2則是盡可能采取各種可能的手段更全面準確的判別作弊網頁.
1.2 體系結構
現有的ANTI-SPAM措施可以劃分為以下5個類別:
類別1:針對某種具體的作弊方式形成的ANTI-SPAM技術,比如識別LINK FARM的算法,識別內容作弊的算法等.這些方法的特點是技術細節不可公開性以及由此導致的存在壽命短暫性.因為這些技術細節一旦公布,作弊者會考慮相應的反制策略導致算法失效,這樣會導致新的作弊方式,而搜索引擎公司不得不研究新的ANTI-SPAM技術.所以根據設計原則1,這樣的算法不能是ANTI-SPAM系統的主體框架,只能是一種輔助措施.
類別2:通用的ANTI-SPAM技術.比如HILLTOP算法,TRUSTRANK算法等.這些方法的特點是技術細節可公開性以及由此導致的長期有效性.即使這些技術細節公布,作弊者也無能為力.所以根據設計原則1,這樣的算法應該成為系統的主體框架.
類別3:類BADRANK方法.這類方法和類別2的算法是完全互補的兩類算法.通用的ANTI-SPAM算法的出發點是尋找網頁集合的子集,這些子集一定不是SPAM網頁,其它網頁根據與這個精英頁面集合的關系來判斷是否不是SPAM頁面,而類BADRANK方法則從必定是SPAM頁面的網頁子集出發(可以看作是黑名單),從其它網頁和這些黑名單頁面的關系判斷是否是SPAM頁面.
類別4:人工舉報.這種方法是切實可行的對BADRANK方法的補充手段.通過這種方式不斷擴大黑名單的數量.
類別5:類SANDBOX方法.這種方法主要針對SEO市場,造成對于SEO市場的打壓,以此避免大規模的作弊出現,因為目前主要的作弊者還是SEO市場造成的.
目前幾乎所有的ANTI-SPAM技術可以歸于以上5類技術之一,其中類別123是屬于技術手段,而類別4和類別5屬于非技術手段.通過兩者結合來進行有效的ANTI-SPAM系統構造.
一個實用的ANTI-SPAM系統整體結構可以參考圖1,圖1將這5中技術手段有機的結合來構造綜合的治理手段.可以看出系統技術手段圍繞著兩個核心互聯網頁面子集:SPAM POOL和NON-SPAM POOL.SPAM POOL代表了確認為是作弊頁面的集合,而NON-SPAM POOL代表了確認不是作弊頁面的集合.系統流程如下:
1. SPAM POOL可以通過以下三個手段構造:一個是通過人工舉報形成黑名單,一個是通過針對具體某種作弊方式采取的ANTI-SPAM技術來獲得部分類型的作弊頁面并加入SPAM POOL中;另外一種方式是通過類BADRANK方式通過疊代計算來擴充黑名單的規模;這個過程可能需要進行人工確認過程以防治誤判.
2. NON-SPAM POOL可以通過通用的ANTI-SPAM技術獲得.
3. 類SANDBOX等非技術手段來打擊SEO市場.
4. 可以看出系統中的核心技術手段是通用ANTI-SPAM方法以及類BADRANK方法,兩者是互補的技術手段,處于系統的核心,人工舉報和針對某種作弊方式的ANTI-SPAM技術作為類BADRANK技術的輔助手段發揮作用,而SANDBOX則作為主要的非技術手段發揮作用.通過5種手段相互結合構造實用的ANTI-SPAM系統.可以看出這個系統模型是符合ANTI-SPAM系統設計原則的.
?
?
圖1. 搜索引擎anti-spam技術路線圖
二. 組成部分詳述
下面分別敘述構成ANTI-SPAM系統的5個部分的技術細節.
2.1通用的anti-spam方法
通用的ANTI-SPAM方法作為系統最重要的框架核心,目前的幾種算法基本思想大同小異,其基本目的是確定所有互聯網頁面中哪些肯定不是SPAM頁面.其基本思路都是如下考慮:
1. 首先從所有互聯網頁面中通過一定的技術手段找到部分精英頁面子集.
2. 然后根據其它頁面和精英頁面子集的鏈接關系來確定哪些頁面不是SPAM頁面.
以下列出的三種主流方法基本思路如上所述,其區別無非在于判斷精英頁面的標準不同以及根據鏈接關系確定其它頁面是否SPAM的技術細節不同.
?
2.1.1HILLTOP算法
HILLTOP是檢索模型本身出發,結合了相關排序以及anti-spam策略為一體的算法,已經被GOOGLE所采用.其基本假設和出發點是:網絡中的權威頁面和權威站點(EXPERT)所指向的頁面一般來說不會是spam頁面,而且被權威頁面指向的頁面排序應該提高.
所以其算法分解為以下兩個步驟:
1. 如何從大量網頁信息中識別權威頁面;
首先識別Non-affiliated page,所謂Non-affiliated就是頁面歸屬于不同組織的頁面,因為基本假設是歸屬于同一組織的網站頁面之間的鏈接其公信力是不高的.
然后尋找鏈接出度比較高的頁面,如果這些頁面所指向的頁面都是Non-affiliated頁面,那么這些頁面可以作為權威頁面.
權威頁面單獨進行索引,對于用戶查詢,首先在這個索引里面尋找,然后根據其它頁面和權威頁面的關系進行排序.
?
2. 根據選擇的權威頁面如何對其指向的頁面排序進行評價;
如果是越多的權威頁面指向的頁面其權重越高.
2.1.2 TrusteRank方法
TrustRank方法的基本思路和HILLTOP算法類似,也是首先識別部分不可能是作弊網頁的站點,然后根據類似的假設來從中推導出好的非anti-spam頁面.已經被AltaVista(YAHOO)搜索引擎采用.
1. 從所有站點隨機選擇若干站點.比如隨機選擇2000個站點.(也可以有其它類似的優化策略,比如選擇知名度高的網站或者YAHOO等收錄的網站作為優良網站的基點)
2. 從2000個站點里面人工判斷哪些是優良的網站
3. 鏈接分析.基本假設是優良網站指向的網站也是優良的.此時可以采取不同的策略,比如優良網站經過K個鏈接所指向的都認為是優良的.也可以引入衰減因素,離初始優良網站越遠的網站其優良性越小.
4. 對遍歷過的網站優良性能做評價.此評價作為判斷是否作弊網頁的依據.
?
?
2.1.3 SpamRank方法
SpamRank的基本思路與前面兩個技術基本一致.它的基本假設是:對于非作弊網頁來說,指向其的鏈接頁面一般來說PAGERANK值是不均勻分布的,而對于作弊網頁來說指向其的支持網頁的PAGERANK值一般來說都是比較小的值.
1. 首先計算頁面的支持頁面的權重
2. 判斷支持頁面權重是否滿足Power low 分布(這個分布是互聯網的一個比較準確的估計)對于不滿足該分布的頁面判斷為作弊網頁進行懲罰,降低其PAGERANK值.
2.2 類BADRANK方法
類BADRANK方法是通用ANTI-SPAM方法的有效補充. 它的目的是發現哪些網頁肯定是SPAM頁面. BadRank的技術思路如下:
1. 首先維持一個SPAM網頁黑名單,這個黑名單可以通過用戶舉報或者采取一定的技術來獲得,GOOGLE提供了舉報SPAM頁面,所以采用BadRank的方法可能性是很高的.
2. 給定黑名單的網頁非常高的BadRank值E(x);
3. 考慮其它網頁的BadRank值,打分依據是如果網頁含有指向黑名單的鏈接,那么這個網頁的BadRank值會很高,依次類推來獲得其它頁面的BadRank值.其打分公式如下:
可以看出,其基本原理和PAGERANK是差不多的,區別在于BADRANK是倒著打分的,從已知的網頁向未知的網頁傳播.
?
2. 3具體針對某種作弊方式采取的anti-spam方法
針對具體某種作弊方式的ANTI-SPAM方法可以作為輔助BADRANK構造SPAM POOL的輔助技術手段,這些技術花樣繁多,基本沒有一個統一的解決方案,目前常見的方法如下.
2.3.1 針對blog站點的honey pot類型的作弊
Honey pot作弊方式是作弊網頁作者發布有價值信息比如介紹某項技術的技術文章,但是在發布的信息里面隱含指向作弊頁面的隱藏鏈接,這樣通過網頁本身內容的價值來誘導其它網站增加指向該頁面的鏈接從而間接增加作弊頁面的排名.比如往blog站點,BBS站點,留言簿或者wiki等可以任意發言的站點增加評論.在發表的評論里面增加指向目標頁面的鏈接,這樣會間接增加目標頁面的pagerank排名.根據發表評論類型可以分為以下兩種:一種是直接發廣告性質的與主題無關評論,這個我們經常在BBS或者留言版上看到.一種是評論與主題相關,但是在評論中隱藏無法看到的鏈接信息.這種情況一般比較難以發現.
利用語言模型方法判斷鏈接所指向的頁面是否作弊站點.首先通過評論的內容以及評論中鏈接指向頁面內容構建每個評論的語言模型,然后依次和正文的語言模型進行比較,將差異比較大的看作是可能的作弊站點.
2.3.2針對內容作弊
l 比如針對標題作弊,如果發現正文內容出現標題文字比例失調,比例太高或者沒有出現過,則認為可能是作弊網頁.
l 而對于HTML頁面的keyword內作弊詞匯,很多搜索引擎采取不索引keyword域的方法.
2.3.3針對信息隱藏作弊
l 如果發現頁面內部大量文本采用和背景相同的顏色設置,則判斷為作弊頁面.
l 對于鏈接跳轉的頁面進行懲罰,以防治通過頁面自動重定向來隱藏作弊頁面.
2.3.4針對多個域名DNS解析到同一IP地址.
作弊者通過建立若干不同的域名但是是同一IP地址來構建LINK FARM提高目標頁面排名,并欺騙搜索引擎這些鏈接頁面分屬于不同擁有者.對于這種情況可以進行DNS解析分析, 大量不同域名映射到同一IP地址很有可能是作弊網站.
?
2.3.5針對機器自動生成link farm
對于機器自動生成的作弊頁面進行特征分析和自動發現.比如機器生成的鏈接往往很長,包含很多數字和連接符號等.如果發現一個頁面的大量鏈接有以上特征則判斷為作弊頁面.
2.3.6針對作弊網頁的不正常數量聯入鏈接(文章:Spam, Damn Spam, and Statistics)
發現網頁的入度,根據分布規律,極少數的網頁有非常大量的聯入,所以這些大量聯入頁面如果不是知名網站則很可能是作弊網站
2.3.7針對如何識別link spam
這個識別link farm spam方法的基本觀察是:很多link farm spam的頁面互相通過鏈接緊密聯系,在farm里面往往存在以下特征頁面:頁面同時有進入和外出鏈接指向link farm其它頁面.所以該方法首先通過一定方法從整個文檔集合中確定一些種子頁面,再通過其鏈接特征遞歸的發現滿足作弊鏈接特征的頁面直到link farm無法繼續擴張.此時對于這些頁面進行懲罰性措施..
2.3. 8程序自動生成頁面
頁面內容通過隨機從其它網站頁面抽取拼合而成,而鏈接指向黃色網站.其解決辦法是判別網頁更新速度,這類作弊方式往往有過分快的更新速度,以此作為判別的某個根據.
2.3.9 TrackBack spam
定義:作弊者增加指向某個知名blog的trackback鏈接但是在頁面部分沒有任何標記.
解決方案:目前還沒有很好的方法.
2.3.10. tag spam
在社會軟件比如yahoo的myweb2.0或者flickr中流行的作弊方式,作弊方式類似于傳統的KEYWORDS作弊方式,在用戶定義某個條目的時候,允許自己增加若干TAG來對條目進行說明,而作弊者通過在TAG中增加很多作弊詞匯來增加排名達到作弊目的.
解決方案:目前還沒有很好的方法.
2.3.11 fake weblogs
定義:兩種方式
方式1. steals content from other sites
作弊者建立blog,拷貝排名比較高的blog內容,這樣能夠盡快提高自己blog排名,然后在評論里面增加指向目標頁面的鏈接或者做廣告.
方式2. Porn sites hiding behind blogs
自動建立若干blog站點,但是用戶點擊會自動轉向目標站點.類似于URL跳轉方式.
?
2.4.人工舉報
目前GOOGLE采用了人工舉報的方法,其頁面如下:
http://www.google.com/contact/spamreport.html
Type(s) of problem (check all that apply):
Hidden text or links
Misleading or repeated words
Page does not match Google"s description
Cloaked page
Deceptive redirects
Doorway pages
Duplicate site or pages
Other (specify)
?
可以看出,GOOGLE目前所研究的anti-spam應該集中在以上幾種spam,這也從某個角度說明以上幾種是最常用的spam方式.
2.5 SANDBOX方法
長期以來,人們注意到一個現象,當新網站剛被 Google 收錄時,在用關鍵詞搜索時,往往會有相當好的排名。一般認為 Google給予新網站一些照顧,使它們有一個快樂輝煌的開端。然而好景不長,不久,新網站的排名就逐漸下降。很快地,竟可能在搜索時完全消失了。
?
人們把這個現象稱之為沙箱效應,認為是具有普遍性的現象,是 Google在搜索算法里設置的一個阻尼過濾器,適用于所有的新網站。當新網站上網一段時間,不論網頁評級高低內容多寡結構優劣有無鏈接,都會被過濾。短則九十天,多則四五個月,在搜索結果里即使還有排名,也多半放在最后。長期以來,這種現象使人大惑不解。因為絕大多數網站是沒有作弊的,沒有理由被處罰。另外,沙箱效應只限于Google,其它搜索引擎沒有類似現象。
?
沙箱現象可能是 Google 和層出不窮的作弊手段斗爭的一種策略。面對防不勝防的詭計,Google 將新網站屏蔽一段時間,心里有鬼的優化商無法判斷是否被處罰,會修改網頁。對于誠實的網站,這可能是一個好機會,去認真檢查優化手段,建立健康鏈接,充實網頁的內容。
SANDBOX:不能有效的識別哪些是作弊或者不作弊頁面(其實就沒有試圖去識別,這不是SANDBOX的目的),但是可以通過這種行為有效的打壓SEO市場.因為SEO市場是導致作弊盛行的主要因素.因為有作弊意圖而且親自去作弊的人數還是少數,絕大多數還是有意圖沒辦法,通過SEO來進行的,通過非技術手段打壓SEO信用是另外一個治理作弊問題的有效手段,
?
三. 實施步驟
具體實施一個實用并且好用的WEB ANTI-SPAM措施可以采取逐步實施的三步策略,通過初步實施策略構建初步實用的ANTI-SPAM系統,進一步的實施措施用來對于初步實施的系統進行進一步的完善,而第三步則是根據該研究領域的發展趨勢進行深入的科研以獲得比現有技術更好的ANTI-SPAM手段.
?
3.1初步實施措施
初步實施措施可以根據圖1,首先實現以下幾個部分:
1. TRUSTRANK算法(或者HILLTOP)
2. BADRANK算法
3. SANDBOX算法
4. 人工舉報界面
5. 最常見的某種具體SPAM反制措施
可以看出,無論是HILLTOP或者是TrustRank抑或BADRANK,這種方法并沒有利用作弊者的特征值來進行判斷,而是通過通用的方法來進行處理:首先識別優良頁面集合或者不良頁面集合,然后通過鏈接分析來計算這種傳播關系.這種方法因為不利用特征分析,所以具有具體方法無關性,也就是說即使公布這個方法,作弊者一般也沒有辦法采取反治措施.
而另外一類方法是特征相關的,比如分析某類SPAM有哪些內容特征或者頁面結構特征,利用頁面是否滿足這些特征來進行識別,這樣的方法是對于某些類型作弊有效的,不具有通用性,另外存在的問題是公布方法后可能這個算法就失效了,因為作弊者會采取另外的方法避免作弊頁面出現這些特征.
兩者的關系如下:特征分析的方法可以作為BADRANK的補充和初始集合的獲取手段,利用這些方法找到一些作弊網頁作為BADRANK的初始種子然后逐步擴大查找范圍.
所以在設計搜索引擎ANTI-SPAM方法時候應該采取如下措施:
整體框架采用TRUSTRANK+BADRANK+SANDBOX
TRUSTRANK:識別哪些頁面肯定不是作弊頁面;
BADRANK:識別哪些頁面肯定是作弊頁面;
SANDBOX:不能有效的識別哪些是作弊或者不作弊頁面,但是可以通過這種行為有效的打壓SEO市場.
人工舉報和具體ANTI-SPAM方法:幫助建立更加全面的SPAM POOL資源.
?
3.2.進一步實施措施
進一步的實施措施集中在如下幾個方面:
1. 具體ANTI-SPAM方法全面實施,將目前常見的以及不常見的ANTI-SPAM方法逐步實施,這樣BADRANK可以發揮更大的作用.
2. 通用ANTI-SPAM方法的改進.通用方法可以在以下兩個方面進行改進:一個是如何判斷精英頁面,改進的方向是更加自動化減少手工勞動,更加精確化,避免作弊者尋找漏洞.另外一個改進方向是頁面傳播關系的研究,探討更好的頁面傳播關系來更加有效地確定哪些是SPAM哪些不是SPAM頁面.
3. SANDBOX的改進方法.目前SANDBOX由于原理泄漏,有可能SEO會想相應的策略避免懲罰,采取二次SANDBOX或者其它改進辦法,核心是增加排名的不確定性,避免SEO能夠給用戶確定的承諾(比如半年內排到前幾名),以此來打擊SEO市場.
4. 在人工舉報方面.改進思路是如何吸引舉報者來盡可能多地進行舉報,可以通過獎勵措施比如如果舉報有效可以部分提高舉報者的網站排名等獎勵措施來增加舉報者的積極性.
?
3.3 深層研究方向
深層研究方向可以在以上介紹的5個方面全面實施,尋找更加優秀的替代算法,通過科研投入達到優秀的ANTI-SPAM效果.
從目前學術界狀況來看,在未來地最近幾年內,在通用ANTI-SPAM方面很難出現全新的理論框架,如果這方面有成果的話,應該是提出類似思路的方法或者對于現有方法細節的補充,今后大量的研究工作會集中在具體的ANTI-SPAM方法方面,尤其是隨著新種類的SPAM方式不斷出現,如何對于新類型SPAM進行發現和防治將是學術界的主流,但是這樣很難從根本上解決問題。
?
四. 結論
搜索引擎ANTI-SPAM是目前比較迫切需要解決的問題,本文通過如何構造一個有效的ANTI-SPAM系統這一主題在設計原則,系統整體結構,每個技術的實施細節以及實施步驟等方面進行了探討,希望能夠成為有效設計優秀ANTI-SPAM系統的技術指南和路線規劃說明.