Python爬蟲實戰(zhàn)項目掌握酷狗音樂的加密過程
1.前言
小編在這里講一下,下面的內(nèi)容僅供學習參考,切莫用于商業(yè)活動,一經(jīng)被相關人員發(fā)現(xiàn),本小編概不負責!讀者切記切記。
2.獲取音樂播放列表
其實,這就是小編要講的重點,因為就是這部分用到了加密。
我們在搜索欄上輸入我們想聽的音樂,小編輸入:刺客
- 是不是看到了一系列音樂,怎樣得到這些音樂的一些信息呢?(這里指的音樂信息是指音樂的hash值和音樂的album_id值【這兩個參數(shù)在獲取音樂的下載鏈接那里會用到】,當然還包括音樂的名稱【不然怎么區(qū)別呢?】)。
- 由于這一系列音樂是動態(tài)加載出來的,也就是如果直接解析這個界面的數(shù)據(jù),根本得不到,這個時候我們就應該來到如下這個界面了。
是不是可以看到我們剛才看到的那些音樂了,而且展開其中一首音樂,可以發(fā)現(xiàn)上述小編講的哪些信息好像都有了呀!
我們看一下這個請求的網(wǎng)址吧!發(fā)現(xiàn)這是一個get請求,請求數(shù)據(jù)如下:
- 小編搜索了多首歌曲,發(fā)現(xiàn)它們的請求參數(shù)有一個共同點,那就是除了keyword、clienttime、mid、uuid和signature這幾個參數(shù)值不同之外,其他的都差不多,而clienttime本意就是客戶端時間,它的值是一個時間戳,mid和uuid的值和clienttime一樣的,keyword它的值就是我們搜索的關鍵詞,現(xiàn)在我們需要的就是搞懂signature這個參數(shù)值到底是什么呀!
- 小編得到這個signature參數(shù)值的長度為32,覺得應該是使用了加密,將一些初始數(shù)據(jù),把它加密得到的,那么怎樣得到這個初始數(shù)據(jù)呢?
- 小編點擊了這個網(wǎng)站所有的js文件,發(fā)現(xiàn)這個參數(shù)值在這個js文件下
- 是不是看到了md5這個函數(shù)呀!這應該就是那個加密函數(shù)了吧!而o.join("")就應該是那個初始數(shù)據(jù)了,o是一個js數(shù)組。
- 現(xiàn)在知道要獲取o的值,怎樣獲取呢?肯定是使用斷點呀!我們在signature周圍打上相應的斷點,然后執(zhí)行斷點操作(這個小編就不一一贅述了,小編使用js斷點還是有一點懵逼的,就不在這里誤導大家了)。
- 上述圖片就是那個js數(shù)組o中的值了,經(jīng)過對這些數(shù)據(jù)進行分析,發(fā)現(xiàn)其實這其中絕大部分值就是我們請求網(wǎng)址的哪些參數(shù)值,讀者覺得呢?
- 整個加密算法如下:
- 這也太長了吧!原本小編打斷使用python來模擬這個加密過程,但是現(xiàn)在小編看到這么長,放棄了,但是并不代表加密過程就無法實現(xiàn),小編查閱資料,發(fā)現(xiàn)原來python可以執(zhí)行js語句,我們是不是只需結(jié)合python和js,就能實現(xiàn)這個加密了呢?開干!
- 代碼如下:
- 看看運行結(jié)果吧!
- 是不是這樣就獲取我們想要的數(shù)據(jù)了呀!我們只需使用json解析這些數(shù)據(jù),就可以獲取小編在上面提到的那兩個參數(shù)了?!疽魳返膆ash值和音樂的album_id值】
3. 得到歌曲的下載鏈接
- 在上述第二點那里講到音樂的hash值和音樂album_id值,為什么要提到它們倆呢?當然是為了給第第三點這里做鋪墊的哈!
- 這個過程小編不會講的很詳細,因為小編今天講的重點是這個加密哈!
我們點擊一首歌播放,來到上述界面,可以看到歌曲的下載鏈接,這個請求的參數(shù)如下:
- 這些請求參數(shù)中是不是看到我提到的那兩個參數(shù)呀!
- 通過分析發(fā)現(xiàn),其實只需以下三個參數(shù)即可請求成功!如下
- 相應的代碼小編就不一一發(fā)出來了,相信聰明的讀者看了小編的本篇博客,定然可以實現(xiàn)酷狗音樂的下載
到此這篇關于Python爬蟲實戰(zhàn)項目掌握酷狗音樂的加密過程的文章就介紹到這了,更多相關Python 酷狗音樂的加密過程內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python進制轉(zhuǎn)換與反匯編實現(xiàn)流程介紹
這篇文章主要介紹了Python進制轉(zhuǎn)換與反匯編的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧2022-10-10Python三十行代碼實現(xiàn)簡單人臉識別的示例代碼
這篇文章主要介紹了Python三十行代碼實現(xiàn)簡單人臉識別的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-03-03JetBrains PyCharm(Community版本)的下載、安裝和初步使用圖文教程詳解
這篇文章主要介紹了JetBrains PyCharm(Community版本)的下載、安裝和初步使用教程,本文圖文并茂給大家介紹的非常詳細,對大家的學習和工作具有一定的參考借鑒價值 ,需要的朋友可以參考下2020-03-03