版權聲明本聲明 http://eric925.blogbus.com/logs/36785846.html 最近做blogbus插件廣場項目,閑暇之余寫了個開心網的搶車位外掛,在開心網的程序架構上學到了一些經驗。 首先我注意到搶車位這個游戲停留在頁面上數據是會即時更新的,而第一反映是ajax,然而
版權聲明本聲明
http://eric925.blogbus.com/logs/36785846.html
最近做blogbus插件廣場項目,閑暇之余寫了個開心網的搶車位外掛,在開心網的程序架構上學到了一些經驗。
首先我注意到搶車位這個游戲停留在頁面上數據是會即時更新的,而第一反映是ajax,然而為了控制服務器負載,是不應該不停產生請求的,分析后發現果然沒有反復請求,而是在第一次訪問頁面的時候,把每個車位的盈利上限、下限、單位時間增長值等參數交給客戶端,通過客戶端js進行頁面數據的更新。這樣能有效降低請求數,同時提高用戶體驗。
其二,開心網的很多數據通過json傳輸給客戶端,客戶端js拼裝數據展現給用戶。比如側邊欄、還有很多插件的內容頁。這樣的好處是數據和頁面的耦合度降低,調整顯示效果和實現用戶自定義化更容易,同時一定程度上減輕了服務器端的處理邏輯,提高開發的效率。在這方面,blogbus很多地方是通過document.write來實現,而不是json數據,雖然簡化了服務器端處理邏輯,但在把數據部署在頁面上的靈活性大大減少。
其三,開心網搶車位的反外掛代碼。在抓包的時候看到一個acc變量,但它的值通過明文卻沒有搜索到,于是我意識到這是一個js生成的anti-bot校驗碼。最后在搶車位的頁面找到如下代碼:
var gab16 = "c0af48b44127"; var acc3 = "cbaktr0f1"; function acc() { var acc = d7d65.length + gab16.charCodeAt(2); return acc; } var d7d65 = "7ec2d7bd3de3"; var g761c = "90fc480bdfca"; var acc3 = "cbaktr0f1"; function acc() { var acc = d8a22.charCodeAt(1) + g761c.length; return acc; } var d8a22 = "640240afe45c";
反復測試后,發現這段代碼通過隨機的變量名和隨機的方法來構造出acc值。有的時候是charCodeAt,有的時候是length,有的時候是substr。不過語法太過簡單,輕而易舉就能轉化成php語法,一算就出來了。相比之下很多廣告聯盟的anti-bot代碼更復雜很多。
其四,最近我們技術部在討論靜態文件的permanent link問題,看了看開心網這樣包含不少圖片/flash的頁面,發現沒有特別的部署permanent link,一些可能經常升級的js文件采用了filename-n.js這樣的版本號部署,可是這個方案已經被我們否決了,原因是改一個靜態文件得修改相關的動態程序模板。這種模式要求上線后的靜態文件不能隔三岔五的修改,否則修改版本就要死人。不過開心網通過chinacdn來cdn的靜態文件,流量壓力有所減少吧。
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com