開發工具
**Python版本:**3.6.4
相關模塊:
DecryptLogin模塊;
以及一些Python自帶的模塊。
環境搭建
安裝Python並添加到環境變量,pip安裝需要的相關模塊即可。
注意,DecryptLogin模塊的安裝請參考:
原理簡介
一. 項目要求
實時監控某個微博用戶有沒有發新的微博。
二. 微博模擬登陸
調用我之前開源的DecryptLogin庫就可以很方便地實現微博的模擬登陸了。
模塊地址(硬核廣告,歡迎大家stars):
https://gitee.com/python_siege_lion/DecryptLogin
三. 微博監控
1. 確定待監控用戶
(1)指定用戶id進行微博監控
這個很簡單,在瀏覽器裏登陸微博移動端,然後點進想要監控的用戶的微博主頁,就可以找到該用戶的用戶id了,例如下圖所示:
(2)監控關注列表中的某用戶
簡單抓包可以發現:
只要不斷請求(page每次加1)上圖中紅框框出的鏈接直到返回的數據爲空就可以獲取登錄用戶的關注列表中的所有用戶信息了,具體代碼如下:
然後用戶自主選擇想要監控的微博用戶:
用戶選擇完畢後,利用正則表達式獲取該微博用戶的用戶id:
2. 實現微博監控
步驟一:獲取被監控微博用戶發佈的所有微博
經抓包分析與實際測試,獲取被監控微博用戶發佈的所有微博流程如下:
① 獲取第一個containerid
登錄狀態的session請求用戶主頁後通過正則表達式從session的cookies中提取。
② 獲取第二個containerid
利用第一個containerid、user_id請求:
https://m.weibo.cn/api/container/getIndex?uid={}&luicode=10000011&lfid=231093_-_selffollowed&type=uid&value={}&containerid={}
即可獲取第二個containerid。
③ 獲取被監控微博用戶發佈的所有微博數據
利用第二個containerid、user_id請求:
https://m.weibo.cn/api/container/getIndex?uid={}&luicode=10000011&lfid=231093_-_selffollowed&type=uid&value={}&containerid={}
即可獲取被監控微博用戶發佈的所有微博數據。
步驟二:實時監控
不斷重複步驟一,獲取被監控微博用戶發佈的所有微博,將獲取的數據與上一次獲取的被監控微博用戶發佈的所有微博數據進行對比,若有新的數據,則代表被監控微博用戶發佈了新的微博。
具體代碼實現如下:
All done~完整源代碼詳見相關文件。
效果展示
運行方式:
效果展示:
因爲需要輸入賬號密碼等敏感信息,所以就不發演示視頻了(打碼麻煩)。就截個圖吧: