1. 程式人生 > >新浪微博登陸以及傳送微博(附python原始碼)

新浪微博登陸以及傳送微博(附python原始碼)

說明
本文主要記錄分析新浪微博登陸以及傳送文字和圖片微博的詳細過程
分析
登陸入口選擇的是新浪通行證登陸入口
https://login.sina.com.cn/signup/signin.php
抓包找到登陸請求
https://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.15)&_=1501239862897

登陸引數和響應
登陸引數和響應

登陸肯定少不了使用者名稱和密碼,這些引數中符合條件的只有su 和sp,su可以猜測base64編碼的,解碼後得到了我的賬戶名,sp肯定是加密後的密碼,但是需要知道加密方式然而pwencode引數告訴我們是RSA加密,既然時非對稱加密,所有肯定需要獲取公鑰,而且客戶端肯定有登陸操作時加密等操作的程式碼。client引數已經很明顯了,需要去找到這個js檔案。找到ssologin.js檔案之後就不用猜了,直接分析程式碼了

關鍵程式碼
關鍵程式碼

通過分析程式碼可以知道使用者名稱是urlencode之後再base64編碼,密碼是幾個變數和密碼拼接之後用公鑰加密的,所以登陸之前肯定需要獲取變數和公鑰

登陸之前請求
https://login.sina.com.cn/sso/prelogin.php?entry=account&callback=sinaSSOController.preloginCallBack&su=ODkxOTkyNDg5ZnclNDBzaW5hLmNu&rsakt=mod&client=ssologin.js(v1.4.15)&_=1501239861950

請求引數和響應
請求引數和響應

可以看到返回登陸所需要的一些變數,公鑰等等(需要注意的是返回的公鑰是十六進位制的需要轉換,構造公鑰的時候10001也可直接替換為65537)

登陸成功的請求是這樣的
登陸成功

登陸成功之後返回uid以及需要重定向的地址。
 傳送微博
    http://weibo.com/aj/mblog/add?ajwvr=6&__rnd=1501242956000

傳送微博請求
傳送微博

 pic_id即圖片id,這個id是在上傳圖片的時候返回的

 上傳圖片
 http://picupload.weibo.com/interface/pic_upload.php?cb=http%3A%2F%2Fweibo.com%2Faj%2Fstatic%2Fupimgback.html%3F_wv%3D5%26callback%3DSTK_ijax_150124497795341&mime=image%2Fjpeg&data=base64&url=0&markpos=1&logo=&nick=%40%E4%B8%96%E7%95%8C%E9%82%A3%E9%BA%BC%E5%A4%A7_&marks=0&app=miniblog&s=rdxt

引數和響應
上傳圖片

原始碼下載

下載地址