2008年5月8日星期四

如何用C#破Xanga Sign-in Lock

XangaSpy我相信好多人都用過吧~我試過在Alexa把XangaSpy和一些香港知名網站比較,如果Alexa的統計正確的話,XangaSpy的流量是和she.com 相若。一個小小網絡程式流量與討論區可比,都算是不錯。如果冇記錯,XangaSpy是高登網友用PHP寫出來的。但其實用DotNet都可以做到XangaSpy的效果,即是破解Sign-In Lock / 重新format一次文章等等,以下我就和大家交流一下是怎樣做到的。

1. 我隨意找來一個是有Sign-In Lock的用戶做測試,大家可見在沒有Login情況下,是沒有權限瀏覽內容的。
2. 我又隨意咁申請了一個Xanga戶口,Sign-in後,就可以正常瀏覽內容。如圖所見,我可以使用一些Firefox 看HTTP Header的Extension或一些Inspector軟件去得知傳送了什麼Header至Xanga伺服器,在這篇文章中,我只需要兩個Header,分別是Referer 和 Cookie。先解釋一下這兩個是什麼,Referer是告訴Xanga知你是經由什麼地方傳送到這個網址;Cookie在這裡純粹是一個id,真正意義是之後一連串的value,紀錄了你的login資料,Xanga就是用這個value去分辦你是否已Sign-In。
3. 開Visual Studio,建立一個Project,其實可以是C#/Visual Basic/ASP.NET,沒所謂的,我在這裡示範用C#而已,如圖把Control放上兩個TextBox,一個Single Line用作Xanga ID,另一個Multi Line用作內容,再加一個button。
4. 新增一個Class,叫Xanga_Hack,然後Create一個Function叫XangaHeader,return 類型是WebHeaderCollection,把我們剛剛說的Referer 和 Cookie 的數值Add進至Collection中。如果你想完美一點,你可以參照你的HTTP Header Parser,把其他Key和Value也加進Collection中。
5. 再新增一個Class,叫TCP_Function,用TCPClient去接收HTML資料,然後放置在TextBox中,這時你應該可以見到文章的內容了。

拿回來的一堆HTML,其實你可以使用regex去把題目,內文Extract出來。就我略略睇過不同Xanga的DOM,不同的Theme會生產不同的結構。例如以文章為例,每一個Xanga頁面都必定會有一個id是maincontent的container去顯示內容,
但有些Theme是會生產<div id="maincontent">; 有一些會生產<td id="maincontent">;,所以這才是要下功夫的地方。就好似XangaSpy,其實有一些Xanga它是暫時不支援的,例如: http://www.xanga.com/MandyStarz,這Account本身沒有Sign-In Lock,但假如你使用XangaSpy看,是顯示不到內容出來的,我估計是因為這個Theme本身沒有任何一個Tag的id是maincontent所致。另外一個比較容易的方法是進它們的archives Page找文章計和連結,但這方法理論上比較花時間。

以上就是我小小心得,或者大家會問,為什麼你不做ASP.NET版本的XangaSpy? 原因就是我覺得其實沒有什麼好研究,只是與無名小站一樣,都是玩弄著HTTP Header而已,而且Xanga都是小朋友玩意。至於破解Xanga中的Friend-Lock,我覺得沒有什麼可能,可以假設,Xanga Check Friend-Lock 與Sign-In Lock是同一方法,雖然或者可以經Google Search,得知誰是[朋友],但怎樣演算一個Account資料至Header中就已經是問題所在。

4 則留言:

  1. 用GOOGLE READER都可以SUBSCRIBE有FRIEND LOCK的XANGA
    除非佢disable左RSS
    否則要睇佢XANGA係易過借火

    回覆刪除
  2. 可否寫出來?
    send to my mail

    回覆刪除