Alexa工具栏研究
| Alexa Toolbar可以獲得當前瀏覽器的IWebBrowser2接口,通過這個接口就可以對瀏覽器為所欲為了。不過Alexa Toolbar的實現十分奇怪:它的界面和主程序是用HTML和javascript實現的,這就是大家經常抱怨使用Alexa Toolbar后導致運行變慢的原因。而且Alexa Toolbar中的javascript有許多冗余代碼,且有多處的資源泄漏,當用一個IE窗口長時間瀏覽網頁時會消耗大量的系統資源,建議安裝Alexa Toolbar的IE用戶在一個窗口長時間運行后,關閉再重新運行。 前面說的那些HTML和javascript代碼是以資源的形式存在于alxres.dll文件中的,Alexa Toolbar的界面其實就是一個IE窗口,只不過它屏蔽了右鍵,這個IE窗口通過"res://alxres.dll/..."來加載HTML頁面和腳本的。也許你會自作聰明用一些PE文件資源修改工具來修改alxres.dll,以實現修改alexa toobar的代碼。不過Alexa Toolbar的設計者早就想到這一點,他們通過對AlxRes.dll進行校驗和計算來拒絕加載修改過的Alxres.dll(不過很奇怪,他們為什么不通過加殼的方式來防止修改呢?),這一功能由AlxTB1.dll導出的ChecksumResources函數實現的,AlxRes.dll在加載的過程中會調用這一函數對自己進行校驗。****方法很簡單(下面方法僅對7.0.1.52.1201版本有效,其他版本沒有測試):用16進制編輯器,如:WinHex等,打開alxres.dll文件,將文件偏移 0x170f 處的2個字節改為 0x90 就行了。 如果你想了解Alexa Toolbar的運行流程,可以修改“res://AlxRes.dll/CHTML/index.html”的231行,將“var g_bDebug=false;”改成“var g_bDebug=true;”就可以了。現在IE加載完alexa toolbar后,會打開一個新的彈出窗口來輸出alexa toolbar的調試信息。 現在你可以隨心所欲地修改alexa toolbar了,加入后門啦,寫入作弊代碼啦都可以,不過我還是對前者比較感興趣。 新版本的 Alexa Toolbar ****方法 國慶節后,Alexa Toolbar 更新了版本。 以下是關于新版本7.0.1.52.1202的****方法: 將 AlexaRes.dll 文件偏移 "0x17F6" 處開始的兩個字節"0x1175"改為"0x9090" 你可以通過各種16進制編輯器來修改,顯示的應該是 "75 11",改為 "90 90"。 修改Alexa Toolbar 造成的任何結果與我無關啊 Alexa Toolbar 內部揭密 關于Alexa排名的作弊方法網上有介紹很多種,不過都是沒有用的,至少現在已經沒有用了。 10月6日后,Alexa排名規則有了重大的改變,而且一直在變,所以現在很多網站的排名都不穩定(包括作弊的)。而我今天揭密的內容用來作弊的話已經顯得不夠了。 Alexa Toolbar的大量代碼是用HTML和javascript來實現的,資源泄漏問題嚴重啊,真不知道它的設計者是怎么想的。Alexa Toolbar的程序實現原理在我以前的文章中也多多少少提到過,所以今天就不講了。今天來講一講Alexa Toolbar發送的HTTP請求格式。 下面是Alexa Toolbar發送的GET請求部分: GET /data/ezdy01DOo100QI?cli=10&dat=snba&ver=7.0&cdt=alx_vw%3D20%26wid%3D16865%26act%3D00000000000%26ss%3D1024x768%26bw%3D775%26t%3D0%26ttl%3D1125%26vis%3D1%26rq%3D2&url=http://20cn.net/~tabris17/ HTTP/1.1 將URL部分解碼后得到: /data/ezdy01DOo100QI?cli=10&dat=snba&ver=7.0& cdt=alx_vw=20&wid=16865&act=00000000000&ss=1024x768& bw=775&t=0&ttl=1125&vis=1&rq=2&url=http://20cn.net/~tabris17/ 其中"ezdy01DOo100QI"是aid。 "cli=10&dat=snba&ver=7.0&cdt=alx_vw=20&"這部分是固定值。 wid是個隨機數。 act數據包含了Alexa Toobar功能的被使用情況。 ss很明顯是屏幕分辨率了。 bw是IE窗口的寬度。 t取值是0或1,和當前IE的window對象還有referrer有關。 ttl是當前頁面打開速度,和Site Stats中的Speed有關。 vis表明IE是否顯示工具條。 rq是對象計數器。 大家可以看到,URL部分沒有什么奧妙之處,很容易偽造。以前要作弊的話只要大量偽造HTTP請求,不停發送就可以了,現在Alexa通過改進排名算法,杜絕了這種作弊方法。 奧妙之處在于Cookie部分,那里面保存了一些你的瀏覽隱私,所以Alexa把這部分數據加密了,通過一種類似于PGP的加密方法,你可以在Alexa Toolbar的代碼中找到這個加密用的公鑰 "d9adyz93472kb63z521t6e80wqpi56znb16fya6im3dr3xwe" (好長啊,看起來很難****的樣子)。密鑰只有Alexa自己有啊,郁悶! 1、Alexa是通過什么來計算流量的? 其實在Alexa的網站上已經說了很清楚了,Alexa通過安裝Alexa Toolbar的IE用戶的反饋信息來進行統計的。并非有些人所說:Alexa會計算所有穿梭于Internet上的WEB流量,要做到這一點顯然是不可能的。 2、Alexa Toolbar的工作原理是怎樣的? Alexa Toolbar是通過BHO技術和Toolbar Bands技術來監視IE行為的,IE瀏覽器的地址欄的每一次變化都逃不過Alexa的法眼。不過處于安全性考慮,Alexa Toolbar不會統計用戶的HTTPS協議的流量。Alexa Toolbar其實就是向http://data.alexa.com發送HTTP請求來發出用戶瀏覽信息的,這個請求的格式我已經****了。 3、Alexa排名真的可以作弊嗎? 絕對可以。但是現在你能在網上搜索到的作弊方法和作弊工具都是無效的。比如有一種方法說能通過MYIE這樣的瀏覽器來刷排名,顯然此文的作者并不懂Alexa Toolbar的工作原理,MYIE是不會加載Alexa Toolbar的。AlexaBooster也不行,因為它忽視了aid的生成算法,以及cookie的作用。 4、Alexa會識別作弊行為嗎? Alexa有一套算法來判斷收到的信息是否有偽造的嫌疑。 5、Alexa會像google一樣對作弊行為進行懲罰嗎? Alexa不像google,它的信息來源Alexa Toolbar的用戶,而非網站自身,這些數據的真實性是無法保證的。僅憑這些不可靠的數據而對一個網站進行懲罰是不可能的,因為很有可能有人惡意偽造某個站點的虛假信息來使Alexa懲罰該網站。但是Alexa會忽略有作弊嫌疑的IP發出的數據。 6、網頁的自動跳轉和自動刷新能提高Alexa排名嗎? 你可以在Alexa的網站上找到這么一句話:“Multiple page views of the same page made by the same user on the same day are counted only once.”。所以通過刷新頁面來提高訪問量是不可行的。而所謂的自動跳轉就是:在用戶點擊一個連接后,先跳轉到一個假頁面,這個假頁面會在1秒或幾秒后跳轉到真正的目標頁面。這種方法看似可行,但是必須考慮加載Alexa Toolbar所需的時間,太短的話Alexa Toolbar是不會發送信息的,改善的方法就是不要在新窗口中打開連接,這樣能避免新的IE窗口因加載Alexa Toolbar所耗費的時間。 經過10.1的7天漫漫長假,發現:Alexa網站已經從6號開始有所變動,很多人猜測這是不是為了針對作弊者而使Alexa改變了排名規則? 我到Alexa網站上看了看,除了以前那個Traffic Rank的圖表界面有所變動外,好像找不出其他的跡象了。 很多人認為近幾天,一些中國門戶網站的排名紛紛開始下降,表明Alexa的排名規則已經變了。其實這只是10.1長假的關系。10.1其間,大家要么出門旅游,要么睡覺休息,上網的話也只是玩網游,哪還有人看網頁啊,如果這幾天有哪個國內網站的排名不跌的話,那才是有作弊的嫌疑呢。 我個人估計Alexa的排名規則和依據不會有大變動,因為Alexa Toolbar不具備自動升級的功能,所以Alexa排名的數據依據在很長的一段時間內是不會改變的。能改變的只有排名的算法,頂多是改變了Reach和Page View對Rank影響的權重,或是對Reach和Page View出現異常的處理機制。 Alexa工具欄竟然會自動升級 本來一直以為 Alexa Toolbar 沒有自動升級功能的,今天突然發現被我修改過的 Alexa Toolbar 竟然恢復正常狀態了。我到系統目錄下一看,原來被我修改的過的AlxRes.dll的大小是340k變成了336k,而且系統目錄下多出了一個AlxRes.dll.bak的文件。我查看了一下Alexa Toolbar的版本信息,原來是“7.0.1.52.1201”,現在變成了“7.0.1.52.1202”。很明顯,Alexa自動升級了。 可以肯定,那個新的AlxRes.dll來源于Alexa網站。我粗略地分析了一下Alexa的升級過程:在注冊表的“HKEY_LOCAL_MACHINE/SOFTWARE/Alexa Internet”分支下存放了一個名為“lastupdate”,這個值存放了最后一個更新的日期。Alexa Toolbar 被加載時會檢查這個鍵值,當改值的日期與當前日期相差CHECK_UPDATE_INTERVAL這個值的時候,Alexa Toolbar便從遠程啟動。 Alexa Toolbar在啟動時首先加載"res://AlxTB1.dll/CHTML/BOOTSTRAP.HTML",這個頁面中的代碼會判斷是否需要更新Alexa Toolbar,如果不需要,則跳轉到"res://AlxRes.dll/CHTML/index.html",如果需要更新,則跳轉到http://client.alexa.com/holiday/script/index.html。這就是所謂的遠程啟動了。 然后AlxTB1.dll會調用URLDownloadToFile函數來下載更新的程序文件。有一點要指出:Alexa Toolbar 只需要更新AlxRes.dll文件就可以了,因為Alexa Toolbar的主要代碼都在這個文件里。 最后還要告訴大家一個好消息:這次更新并沒有改變數據的收集方式,數據的格式還是和以前一樣的 |
總結
以上是生活随笔為你收集整理的Alexa工具栏研究的全部內容,希望文章能夠幫你解決所遇到的問題。