當前位置:
首頁 > 科技 > Python 模擬微博登陸,親測有效!

Python 模擬微博登陸,親測有效!

今天想做一個微博爬個人頁面的工具,滿足一些不可告人的秘密。那麼首先就要做那件必做之事!模擬登陸……

代碼是參考了:https://www.douban.com/note/201767245/,我對代碼進行了優化,重構成了Python 3.6 版本,並且加入了大量注釋方便大家學習。

PC 登錄新浪微博時, 在客戶端用JS預先對用戶名、密碼都進行了加密,而且在POST之前會GET 一組參數,這也將作為POST_DATA 的一部分。這樣,就不能用通常的那種簡單方法來模擬POST 登錄( 比如人人網 )。

在提交POST請求之前,需要GET 獲取兩個參數。地址是:http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.3.18)。

得到的數據中有 servertime 和 nonce 的值, 是隨機的,其他值貌似沒什麼用。

通過 httpfox 觀察 POST 的數據,參數較複雜,其中「su" 是加密後的username, sp 是加密後的password,servertime 和 nonce 是上一步得到的,其他參數是不變的。

username 經過了 BASE64 計算:

password 經過了三次SHA1 加密,且其中加入了 servertime 和 nonce 的值來干擾。即:兩次SHA1加密後,將結果加上 servertime 和 nonce 的值,再SHA1 算一次。

將參數組織好,POST請求。這之後還沒有登錄成功,POST後得到的內容中包含一句:

這是登錄失敗時的結果,登錄成功後結果與之類似,不過 retcode 的值是0。接下來再請求這個URL,這樣就成功登錄到微博了。記得要提前build 緩存。

作者簡介:上海小胖,四大諮詢的Tech Lead,MongoDB Professional獲得者。「Python專欄」專註Python領域的各種技術:爬蟲、DevOps、人工智慧、Web開發等。還有「大航海計劃」,各種內推活動。

聲明:本文為作者投稿,版權歸其個人所有。

熱 文推 薦

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 CSDN 的精彩文章:

Chrome 新 UI 很「難看」,用戶很生氣

TAG:CSDN |