前幾個(gè)星期在寫(xiě)一個(gè)微博監(jiān)控系統(tǒng) 可謂是一波三折啊 獲取到微博后因?yàn)橐恍┳址幋a問(wèn)題 導(dǎo)致心態(tài)爆炸開(kāi)發(fā)中斷 但是就在昨天發(fā)現(xiàn)了另外一個(gè)微博的接口
一個(gè)手機(jī)微博的接口https://m.weibo.cn/ 經(jīng)過(guò)一番測(cè)試后認(rèn)為這個(gè)接口滿足我的要求 就繼續(xù)完成未完成的使命吧
0x01 分析:
這個(gè)接口直接訪問(wèn)的話會(huì)有一個(gè)302跳轉(zhuǎn)到一個(gè)登陸界面
也就是說(shuō)這里需要先模擬登陸一下才可以訪問(wèn)到微博抓個(gè)包分析了一下
發(fā)現(xiàn)只要用戶名和密碼正確既返回200且json部分的retcode會(huì)返回20000000
少了驗(yàn)證碼這一大坑 那模擬登陸就相當(dāng)簡(jiǎn)單啦
登陸完后訪問(wèn)用戶主頁(yè) 例如:https://m.weibo.cn/u/3023940914可以在審查元素的Network模塊看到 這里用了兩個(gè)xhr來(lái)加載用戶信息及微博信息
分別是
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)過(guò)測(cè)試這個(gè)接口直接加上type和value參數(shù)訪問(wèn) 就相當(dāng)于第一個(gè)接口 不必加上containerid參數(shù)而第二個(gè)接口的containerid參數(shù)則是通過(guò)第一個(gè)接口獲取的
獲取到第二個(gè)containerid參數(shù)訪問(wèn)第二個(gè)接口就可以獲取到這個(gè)uid發(fā)布的微博了
返回的是json格式的數(shù)據(jù) 用戶的微博信息都在cards列表里每條數(shù)據(jù)的mblog數(shù)組里面 包括微博正文、圖片、來(lái)源與時(shí)間等
其中card_type標(biāo)識(shí)的是微博類型 例如:文字微博 圖片微博 視頻微博 轉(zhuǎn)發(fā)等 經(jīng)過(guò)測(cè)試文字微博和圖片微博的card_type標(biāo)識(shí)都一樣為9
這里初步只開(kāi)發(fā)監(jiān)控文字和圖片微博的功能其實(shí)就是懶
0x02 開(kāi)發(fā)
首先需要模擬登陸 后續(xù)的操作都需要基于登陸的格調(diào)來(lái)進(jìn)行 也是需要在同個(gè)會(huì)話進(jìn)行 可以使用requests.session()方法來(lái)完成代碼片段:
登陸完成后就可以拼接用戶id訪問(wèn)前面說(shuō)的第一個(gè)接口了訪問(wèn)完后再拼接containerid參數(shù)獲取微博信息的json數(shù)據(jù)代碼片段:
這里把所有獲取到的微博的id存起來(lái) 后面繼續(xù)訪問(wèn)是發(fā)現(xiàn)有新的微博id不在這個(gè)列表里就證明是新發(fā)布的微博代碼片段:
將這些方法封裝成了一個(gè)類 完整代碼如下
寫(xiě)了個(gè)一發(fā)現(xiàn)有新微博就發(fā)郵件提醒的功能 完整代碼見(jiàn)Github地址 https://github.com/naiquann/WBMonitor
0x03 測(cè)試
運(yùn)行代碼
填寫(xiě)完相關(guān)的登陸信息及要監(jiān)控的用戶的id后
這里寫(xiě)了一個(gè)心跳包 每三秒訪問(wèn)一次看看有沒(méi)有新微博發(fā)布
測(cè)試的時(shí)候這樣比較方便 要是拿來(lái)用的話可以酌情增加間隔時(shí)間
當(dāng)有微博發(fā)布的時(shí)候
大功告成啦 監(jiān)控小姐姐的微博去嘍~
-
監(jiān)控系統(tǒng)
+關(guān)注
關(guān)注
21文章
4078瀏覽量
182663 -
代碼
+關(guān)注
關(guān)注
30文章
4900瀏覽量
70802 -
python
+關(guān)注
關(guān)注
56文章
4827瀏覽量
86830
原文標(biāo)題:Python黑科技:利用Python實(shí)現(xiàn)微博監(jiān)控小姐姐動(dòng)態(tài)
文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
樹(shù)莓派上使用OpenCV和Python實(shí)現(xiàn)實(shí)時(shí)人臉檢測(cè)
LED顯示屏動(dòng)態(tài)顯示和遠(yuǎn)程監(jiān)控的實(shí)現(xiàn)
LAbVIEW實(shí)現(xiàn)實(shí)時(shí)文字對(duì)話交流
LabVIEW數(shù)據(jù)如何利用動(dòng)態(tài)鏈接庫(kù)實(shí)時(shí)地傳遞給遠(yuǎn)程的計(jì)算機(jī)?
labview中怎么樣實(shí)現(xiàn)實(shí)時(shí)采集聲音信號(hào)
【DNA Kit申請(qǐng)】利用手機(jī)對(duì)大棚溫濕度的實(shí)時(shí)監(jiān)控
用Labview實(shí)現(xiàn)對(duì)設(shè)備的實(shí)時(shí)監(jiān)測(cè)和遠(yuǎn)程監(jiān)控的問(wèn)題?
請(qǐng)問(wèn)樹(shù)莓派官方的攝像頭能進(jìn)行實(shí)時(shí)監(jiān)控嗎?
光線追蹤如何實(shí)現(xiàn)實(shí)時(shí)三維圖形?
如何利用Python去實(shí)現(xiàn)Arduino UNO的串口通信呢
基于SVG的實(shí)時(shí)監(jiān)控系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
采用Protothread實(shí)現(xiàn)實(shí)時(shí)多任務(wù)系統(tǒng)

基于python的ngxtop的安裝、監(jiān)控nginx與用法解析

通過(guò)利用CCD傳感技術(shù)實(shí)現(xiàn)物體的動(dòng)態(tài)實(shí)時(shí)測(cè)量

評(píng)論