Python爬蟲實戰項目掌握酷狗音樂的加密過程

1.前言

小編在這裡講一下,下面的內容僅供學習參考,切莫用於商業活動,一經被相關人員發現,本小編概不負責!讀者切記切記。

請添加圖片描述

2.獲取音樂播放列表

其實,這就是小編要講的重點,因為就是這部分用到瞭加密。
我們在搜索欄上輸入我們想聽的音樂,小編輸入:刺客

請添加圖片描述

  • 是不是看到瞭一系列音樂,怎樣得到這些音樂的一些信息呢?(這裡指的音樂信息是指音樂的hash值和音樂的album_id值【這兩個參數在獲取音樂的下載鏈接那裡會用到】,當然還包括音樂的名稱【不然怎麼區別呢?】)。
  • 由於這一系列音樂是動態加載出來的,也就是如果直接解析這個界面的數據,根本得不到,這個時候我們就應該來到如下這個界面瞭。

請添加圖片描述

是不是可以看到我們剛才看到的那些音樂瞭,而且展開其中一首音樂,可以發現上述小編講的哪些信息好像都有瞭呀!
我們看一下這個請求的網址吧!發現這是一個get請求,請求數據如下:

請添加圖片描述

  • 小編搜索瞭多首歌曲,發現它們的請求參數有一個共同點,那就是除瞭keyword、clienttime、mid、uuid和signature這幾個參數值不同之外,其他的都差不多,而clienttime本意就是客戶端時間,它的值是一個時間戳,mid和uuid的值和clienttime一樣的,keyword它的值就是我們搜索的關鍵詞,現在我們需要的就是搞懂signature這個參數值到底是什麼呀!
  • 小編得到這個signature參數值的長度為32,覺得應該是使用瞭加密,將一些初始數據,把它加密得到的,那麼怎樣得到這個初始數據呢?
  • 小編點擊瞭這個網站所有的js文件,發現這個參數值在這個js文件下

請添加圖片描述

  • 是不是看到瞭md5這個函數呀!這應該就是那個加密函數瞭吧!而o.join(“”)就應該是那個初始數據瞭,o是一個js數組。
  • 現在知道要獲取o的值,怎樣獲取呢?肯定是使用斷點呀!我們在signature周圍打上相應的斷點,然後執行斷點操作(這個小編就不一一贅述瞭,小編使用js斷點還是有一點懵逼的,就不在這裡誤導大傢瞭)。

請添加圖片描述

請添加圖片描述

  • 上述圖片就是那個js數組o中的值瞭,經過對這些數據進行分析,發現其實這其中絕大部分值就是我們請求網址的哪些參數值,讀者覺得呢?

請添加圖片描述

  • 整個加密算法如下:

請添加圖片描述

  • 這也太長瞭吧!原本小編打斷使用python來模擬這個加密過程,但是現在小編看到這麼長,放棄瞭,但是並不代表加密過程就無法實現,小編查閱資料,發現原來python可以執行js語句,我們是不是隻需結合python和js,就能實現這個加密瞭呢?開幹!
  • 代碼如下:

請添加圖片描述

  • 看看運行結果吧!

在這裡插入圖片描述

  • 是不是這樣就獲取我們想要的數據瞭呀!我們隻需使用json解析這些數據,就可以獲取小編在上面提到的那兩個參數瞭。【音樂的hash值和音樂的album_id值】

3. 得到歌曲的下載鏈接

  • 在上述第二點那裡講到音樂的hash值和音樂album_id值,為什麼要提到它們倆呢?當然是為瞭給第第三點這裡做鋪墊的哈!

請添加圖片描述

  • 這個過程小編不會講的很詳細,因為小編今天講的重點是這個加密哈!

請添加圖片描述

我們點擊一首歌播放,來到上述界面,可以看到歌曲的下載鏈接,這個請求的參數如下:

請添加圖片描述

  • 這些請求參數中是不是看到我提到的那兩個參數呀!
  • 通過分析發現,其實隻需以下三個參數即可請求成功!如下

請添加圖片描述

請添加圖片描述

  • 相應的代碼小編就不一一發出來瞭,相信聰明的讀者看瞭小編的本篇博客,定然可以實現酷狗音樂的下載

到此這篇關於Python爬蟲實戰項目掌握酷狗音樂的加密過程的文章就介紹到這瞭,更多相關Python 酷狗音樂的加密過程內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: