前幾個星期在寫一個微博監(jiān)控系統(tǒng) 可謂是一波三折啊 獲取到微博后因為一些字符編碼問題 導(dǎo)致心態(tài)爆炸開發(fā)中斷 但是就在昨天發(fā)現(xiàn)了另外一個微博的接口
一個手機微博的接口https://m.weibo.cn/ 經(jīng)過一番測試后認為這個接口滿足我的要求 就繼續(xù)完成未完成的使命吧
0x01 分析:
這個接口直接訪問的話會有一個302跳轉(zhuǎn)到一個登陸界面
也就是說這里需要先模擬登陸一下才可以訪問到微博抓個包分析了一下
發(fā)現(xiàn)只要用戶名和密碼正確既返回200且json部分的retcode會返回20000000
少了驗證碼這一大坑 那模擬登陸就相當簡單啦
登陸完后訪問用戶主頁 例如:https://m.weibo.cn/u/3023940914可以在審查元素的Network模塊看到 這里用了兩個xhr來加載用戶信息及微博信息
分別是
https://m.weibo.cn/api/container/getIndex?type=uid&value=3023940914&containerid=1005053023940914https://m.weibo.cn/api/container/getIndex?type=uid&value=3023940914&containerid=1076033023940914經(jīng)過測試這個接口直接加上type和value參數(shù)訪問 就相當于第一個接口 不必加上containerid參數(shù)而第二個接口的containerid參數(shù)則是通過第一個接口獲取的
獲取到第二個containerid參數(shù)訪問第二個接口就可以獲取到這個uid發(fā)布的微博了
返回的是json格式的數(shù)據(jù) 用戶的微博信息都在cards列表里每條數(shù)據(jù)的mblog數(shù)組里面 包括微博正文、圖片、來源與時間等
其中card_type標識的是微博類型 例如:文字微博 圖片微博 視頻微博 轉(zhuǎn)發(fā)等 經(jīng)過測試文字微博和圖片微博的card_type標識都一樣為9
這里初步只開發(fā)監(jiān)控文字和圖片微博的功能其實就是懶
0x02 開發(fā)
首先需要模擬登陸 后續(xù)的操作都需要基于登陸的格調(diào)來進行 也是需要在同個會話進行 可以使用requests.session()方法來完成代碼片段:
登陸完成后就可以拼接用戶id訪問前面說的第一個接口了訪問完后再拼接containerid參數(shù)獲取微博信息的json數(shù)據(jù)代碼片段:
這里把所有獲取到的微博的id存起來 后面繼續(xù)訪問是發(fā)現(xiàn)有新的微博id不在這個列表里就證明是新發(fā)布的微博代碼片段:
將這些方法封裝成了一個類 完整代碼如下
寫了個一發(fā)現(xiàn)有新微博就發(fā)郵件提醒的功能 完整代碼見Github地址 https://github.com/naiquann/WBMonitor
0x03 測試
運行代碼
填寫完相關(guān)的登陸信息及要監(jiān)控的用戶的id后
這里寫了一個心跳包 每三秒訪問一次看看有沒有新微博發(fā)布
測試的時候這樣比較方便 要是拿來用的話可以酌情增加間隔時間
當有微博發(fā)布的時候
大功告成啦 監(jiān)控小姐姐的微博去嘍~
-
監(jiān)控系統(tǒng)
+關(guān)注
關(guān)注
21文章
3918瀏覽量
174920 -
代碼
+關(guān)注
關(guān)注
30文章
4790瀏覽量
68654 -
python
+關(guān)注
關(guān)注
56文章
4797瀏覽量
84729
原文標題:Python黑科技:利用Python實現(xiàn)微博監(jiān)控小姐姐動態(tài)
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論