全面分析新浪博客的登錄過程


前言

為什么要拿新浪開刀呢?它是我在做模擬登錄過程中非常難啃的骨頭,相信各位也碰到了這樣問題。所以今天就跟各位一起分析一下這個硬骨頭。

以前的很多關於新浪登錄的大半都是python語言的,這兒,我來個C#的。不知道各位是否給面兒啊。

進入分析過程

1、首先使用http協議的分析工具,查看瀏覽器跟服務器之間的交互是怎么樣的?這里推薦用httpwatch,fiddler2等工具。然后就使用瀏覽器登陸吧,經過查看,這個登錄過程基本有4、5次請求,這樣頻繁的請求,用於在登陸過程上,可算是用心良苦啊。其中黃色的就是請求的關鍵點。

image

2、這里我們鍵盤ctrl+F,尋找交互過程中輸入的用戶名,密碼等參數,就不難發現

http://login.sina.com.cn/sso/prelogin.php?entry=boke&callback=sinaSSOController.preloginCallBack&su=bm9uZ2NodWFuZzA1NTIwMSU0MHNpbmEuY24%3D&rsakt=mod&client=ssologin.js(v1.4.11)&_=1377775419738

這條請求,點擊Raw之后,發現了他post出去的各種參數。

image

具體的可以切換到webforms標簽。看看這家伙到點在用什么加密方式。哦,天啊,su,sp,第一眼,我就知道下面的2個不是好東西(經過加密處理)。想法辦法解密吧。

image

解密su,sp參數,實現POST成功提交

1、解密su,這個參數是經過Base64加密的,如果不知道是什么加密的出來的,還是非常難猜的,這里就提供了一下解密方法。

image

Encoding.Default.GetString(Convert.FromBase64String("bm9uZ2NodWFuZzA1NTIwMSU0MHNpbmEuY24="))

 

運行上述代碼,就會獲取到您的郵箱地址,格式如:"nongchuang055201%40sina.cn"

其中的@,被替換為了%40所以您用@傳入,得到的總不是它的真正的值。

2、注意看這個過程,如果遇到返回4049,那么說明需要輸入驗證碼。

image

4049,2070分別是需要驗證碼,驗證碼輸入錯誤的意思。

3、解密sp,這個參數的解密是相當的有難度啊,查了不少文檔,大致都是老版本的,貌似在幾月份新浪更新了一次sp參數的加密過程,你看他這么用心良苦,我們也要以牙還牙哦。數一數這個sp的位數。

image

答案是256位的。此處消耗我1分鍾。眼睛要瞎掉了。

各種查資料,基本無答案,沒辦法了,無解了。只有自己寫了。此處消耗5個小時,根據之前同志們的勞動成果,我這里就公開一個webservice吧。免費提供給大家這個sp參數的獲取方法。

image

要想獲取這個sp,就引用我的webservice吧。但是,還要傳入幾個參數,pwd-您的密碼,還有后面的三個參數,讓我們慢慢道來。

獲取關鍵性的3個參數

1、仔細看看我們之前分析獲得到的這個圖片,第一個黃色關鍵請求。

image

2、鼠標點擊到它上面,然后看看response里面的是什么東東。有你需要的哦。

image

3、這些參數都收集全了,那么就可以組合提交服務器了。至於正則的寫法,根據大家的心情,我是這樣寫的。

image

4、這里需要注意一點,這處的請求,用到了我們之前說到的su參數。

string username = you login name;
byte[] b = System.Text.Encoding.Default.GetBytes(username);
string su = Convert.ToBase64String(b);

 

 

 

 

 

 

 

 

 

 

總結一下

1、get http://login.sina.com.cn/sso/prelogin.php?entry=boke&callback=sinaSSOController.preloginCallBack&su=bm9uZ2NodWFuZzA1NTIwMSU0MHNpbmEuY24%3D&rsakt=mod&client=ssologin.js(v1.4.11)&_=1377775419738

su是加密過的,需要處理一下。
2、post http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.11)

替換其中的postdata的各種參數即可。

image

返回retcode :0,就代表成功了。

image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM