前言
到這裏,python爬蟲部分的複習也就告一段落了,當然,除了scrapy,老實說,對於平常爬取幾千條這種小打小鬧的爬蟲,並沒有去深入研究scrapy的必要(當然,瞭解還是要了解一下的)。
之前學習爬蟲,因爲需求的原因,只學習了網頁爬蟲。趁着寒假有空,再來看一看app爬蟲是啥樣的吧。
mitmproxy
安裝
- 安裝本體
brew install mitmproxy
- 安裝python包
pip install mitproxy
-
安裝證書
-
shell中輸入mitmdump
-
將/Users/{用戶名}/.matplotlib/目錄下的mitmproxy-ca-cert.pem發送到移動端(隔空投送即可)
-
在 設置 中信任證書
-
ps.使用 shift+cmd+. 可以查看隱藏文件
-
連接代理
-
使用ifconfig查找本機的ip地址
-
找到inet,如下圖所示,IP地址爲192.168.3.6
-
在設置->無線局域網->無線局域網配置->配置代理
ps. mitmproxy的端口是8080
配置部分就到這裏,然後測試一下配置是否正確。
-
在命令行中輸入 mitmproxy , 進入mitmproxy的數據流界面。
-
打開任意的app,然後發現數據流界面開始跳出很多的響應字段,ok,配置正確。
上圖爲結果展示,可以點擊字段進入查看詳細的信息
ps. 這裏列一下流界面的快捷鍵
?:幫助
q:返回 或退出
z:清屏
j:上一個或向上滑動
k:下一個或向下滑動
回車鍵:查看選中的請求
h:查看 請求內容 下一個
l:查看請求內容 上一個
tab:查看請求內容 下一個
至此,所有的準備工作就都已經完成了,接下來選擇一下實驗目標吧
mission start
首先當然是選擇一個目標app,這裏我選擇的是 超星學習通 。這個寒假學校佈置了一個讀書筆記的任務,叫做21天習慣養成,滿滿的 形式主義 的感覺,所以,我就把所有的數據都用爬蟲爬下來,來分析一下這個21天習慣養成的可行性吧。
mitmproxy只能抓包,但是抓完之後就罷工了。所以這裏使用mitmdump,它可以和python結合使用,對返回的數據進行一個處理。
def response(flow):
url = 'https://groupyd.chaoxing.com/apis/topic/getTopicListWithPoff?'
if flow.request.url.startswith(url):
data_list = json.loads(flow.response.text)['data']['list']
print(data_list)
json_str = json.dumps(data_list,ensure_ascii=False)
with open('data.json','a+') as f:
f.write(json_str)
將上述的代碼寫入mitmuse1.py文件中,然後運行
mitmdump -s mitmuse1.py
這裏我先把所有的json數據寫入到一個文件裏面,然後再對數據進行統一的分析,這樣的好處是佔用內存小。
分析
排名第一的竟然是 《活着》 !?因爲讀過這本書,所以我覺得這個結果過於魔幻現實了。
餘華的這本書絕對不是《水滸傳》那種老少咸宜的讀物,甚至於高中時期我們將他的書戲稱爲“黑暗聖經”,兩倍於第二名《紅樓夢》的結果讓我有點無法接受(老實說紅樓夢排第二也挺魔幻的,但是考慮到院裏女生居多就不討論了…)
排名第三的中規中矩,《平凡的世界》 我也讀過,這是如中當年的入學推薦讀物(滿滿的回憶)
第四名。。。???????????????
於是我開始打發假期的無聊時光。
進行文本進行對比篩查,經過一系列的折騰之後,得到如下的結果。
這裏只打印出了差異值 <=5 的文本,可以看到,差異值越低,文本的相似度越高。
最終可以得出結論,僅僅是在我院的內部的關於活着的237篇筆記,就出現了很多的雷同。所以,這次活動的出發點無疑是好的,但是可笑的地方在於, 主體不明,執行不力 ,到頭來只是平白增加了很多同學的負擔罷了。
要麼本着自願的原則,鼓勵報名,寬鬆監管,自覺養成。
但是既然選擇了強制執行,就有必要搭配強有力的監管機制,不然像現在這樣,我有足夠的理由相信,這次的活動並非是爲了“同學們”,而不過是一次常見的勞民傷財的"面子工程"罷了。