APP爬蟲(2)把小姐姐的圖片down下來


APP爬蟲(1)想學新語言,又沒有動力,怎么辦?

書接上文。使用appium在帖子列表界面模擬上划動作,捕捉不到列表的規律。上划結束后,列表只能獲取到屏幕呈現的部分,而且下標還是從0開始的。

根據酸奶爸爸多年碼代碼的經驗,帖子肯定不是一次性加載完成的,一定會有分頁,上划操作到某處APP一定會請求API接口。那么我們監聽APP的網絡請求不就能獲取到帖子內容了嗎!

mac下使用charles這個軟件實現。

charles簡介

配置好charles網絡監聽后又遇到攔路虎,APP的請求是https協議的,charles監聽到的報文都是亂碼的。我在百度上谷歌了一下。

Mac使用Charles進行HTTPS抓包

終於能在charles里看到明文的網絡請求了,於是通過網絡請求可以歸納出帖子分頁加載的規律。這樣酸奶爸爸就可以自己編寫程序,循環調用API請求抓取數據了。此處又遇到攔路虎(我為什么要加個“又”字)。API的請求做了參數簽名校驗,每次從charles抓到的請求,時效只有5分鍾。

如果抓取程序能夠盡可能的模仿用戶行為,那么我們會突破所有服務端的屏障。

使用appium的在帖子詳情頁每3秒模擬用戶上划一次,使用charles監聽虛擬機的網絡請求。這樣charles會源源不斷的捕捉到帖子分頁的API請求。此處又又遇到攔路虎(我不喜歡“攔”,但我喜歡“路虎”)。此時小姐姐們的照片還是在charles里,而且還都是url字符串。

使用charles的自動保存功能,定時保存API響應結果。在charles的菜單欄“Tools”->“Auto Save”。按照下圖配置,“Save Type”請選擇“HTTP Archive”。配置完成后,charles抓取到的API響應會保存為HAR格式的文本文件。

HAR 格式規范

到這里總算是撥開雲霧見青天,har文件記錄是每次API請求的全過程,有url、參數、響應時間和返回值等等,而且還是標准的json格式。我們可以用新學的go語言寫一個控制台程序來解析har文件,並將解析后的結果整理歸類,帖子內容存入MySQL數據庫,小姐姐們的圖片curl下載到文件系統。

新語言的學習並不都是新知識的學習,更多的是編程習慣的遷移。

酸奶爸爸本來是做PHP開發的,現在用GO語言寫這個,本次遷移的技能如下:

  • 日志記錄
  • MySQL數據庫讀寫
  • 斷點調試
  • 文本文件讀取
  • json解析
  • 配置文件的解析
  • curl下載文件

所以新語言的學習,第一步只要掌握語法,后續其實就是探索新語言所引入的新特性而已,以go語言為例,它對高並發有獨到的設計。至於我們在舊語言所掌握的一些通用技能,一並遷移過來就好。go語言如何連接redis、RabbitMQ,這等通用的功能無非就是用go語言的方式引用一下包而已。

所以你看,離開舒適區其實也挺容易的吧。

總結,這里才是干貨

  • 學習新技能要給自己設立一個目標作為獎勵,遇到困難的時候,想想我們的達成目標后的獎勵,是不是又有動力了。哪怕僅僅以看視頻教程的方式學新語言,也堅持不了多久。
  • 我們掌握的每一項技能都是一個工具,遇到問題的時候,回顧一下我們的工具箱,將其中某幾種工具組合起來就能解決問題。所以平時要多聽多看多思考,這樣我們才能向工具箱里裝足夠多的工具。遇到問題的時候,才有足夠多的工具以供組裝起來解決問題。
  • 舊語言與新語言重疊的功能,這些是時間積淀的經典,需要夯實;新語言的新特性需要格外關注,無論是找工作還是裝13都用得到;舊語言的舊功能,就讓它隨風而去吧。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM