喜馬拉雅FM抓包之旅


一、概述

最近學院組織安排大面積實習工作,今天剛剛發布了喜馬拉雅FM實習生招聘的面試通知。通知要求:公司采用開放式題目的方式進行篩選,申請的同學須完成如下題目

寫程序輸出喜馬拉雅FM上與“卓老板”相關(相關指用“卓老板”作關鍵詞可以在喜馬拉雅上搜索到)的所有專輯的信息,按總播放量倒序排列,每行是一個字符串,形如{"title" : "該專輯的名稱", "anchorman" : "該專輯所屬的賬號名稱", "info" : "該專輯的簡介", "totalPlayCount" : 該專輯的總播放量}。可以只輸出信息,不用下載專輯中的音頻mp3文件。可以用C/C++、JavaScript、Java、Python、Go等語言編寫。

二、分析

2.1 題目分析

數據要求就是JSON數據,很容易想到:要么去寫爬蟲,從喜馬拉雅的官網頁面上爬取數據;要么在app上進行抓包,分析接口。

2.2 說干就干

首先,我去了喜馬拉雅的官網進行了操作。發現,在第一個頁面上可以搜索,也能查看到一些數據,但是數據並沒有按照播放量排序以及數據中無播放量這一數據。同時,對整個頁面訪問的過程進行抓包分析,發現好像並沒有類似Json數據的傳輸。因此,解決方案只有進入每個專輯頁面的詳情頁去獲取播放量,再把這些數據匯總。

使用到的技術:用Python語言解析html頁面;用Java語言可以使用Jsoup框架解析html頁面。

2.3 使出殺手鐧

android端抓包
根據以往寫app的經驗,如果項目有app端,則服務器通常要向app端暴露一些數據交互接口,以保證app端的正常使用。對於某些安全級別較高的或者對交互數據有隱私保護需求的公司,通常會對交互的數據進行編碼、加密等處理,以增加信息的安全性。
抱着試一試的心態,我下載了喜馬拉雅app,簡單試用了這款app后,確實找到了查找專輯(按播放量,相關度、最新上傳可選排序)的操作。通過對app抓包分析,發現整個交互的Json沒有進行特殊的編碼或者加密,甚至沒有登陸驗證。

2.4 編碼前的分析

經過前面三個過程,明確了解決問題的方向。那就開始寫代碼吧。
之前使用到Json數據的場合大多都是使用java語言寫Android端程序,此次為了鍛煉、學習一下(之前也沒有投該公司),決定使用Python語言請求並解析Json數據。

三、編碼

python解析jsonhttp://www.cnblogs.com/neillee/p/6207996.html


免責聲明!

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



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