js 逆向,美拍視頻下載

圖片 圖片



簡介前端

美拍網頁版熱門視頻:python

https://www.meipai.com/medias/hotjson

下載每一頁的視頻,但因爲視頻連接是加密了的,須要 js 逆向解碼,纔可獲得連接。ide


文件獲取函數

關注公衆號「木下學Python」,回覆關鍵字「美拍視頻下載」獲取源代碼。網站


連接構造this

圖片


可看到每一頁的 url 相似這樣,就 page= 字段不一樣:
編碼

https://www.meipai.com/home/hot_timeline?page=3&count=12加密

page=1:第一頁url

page=2:第二頁

以此類推


視頻連接

圖片


切換到旁邊的 Preview 選項卡,能夠看到 json 數據,其中的 vedio 鍵所對的那一串亂碼就是視頻連接

咱們須要解碼,得到原來的連接,而後才能下載

接下來一步一步來看怎麼解碼


js 逆向

右鍵查看元素,能夠看到 data-video 所對的值是一串亂碼,而 src 所對的值是視頻播放的的連接

圖片


隨便點開一個視頻,還能夠看到 data-vedio 和 src 字段

圖片


切換到 Source 選項卡,2 號是這個網站全部的文件,咱們就須要在 3 裏面搜索找到可疑的解碼的 js 代碼;

搜索的是關鍵詞,關鍵詞是不肯定的,要想到和要解碼的數據有關,好比說 vedio:xxxx,xxxx是要解碼的數據,那能夠先嚐試搜索 vedio 看能不能搜索獲得相應的代碼,不能的話能夠試試 decode,encode,由於和解碼編碼有關;

在這個問題中,咱們視頻連接是 .mp4,試着在 2 從上往下一個一個 js 文件的搜索 mp4,下圖搜索到了但看代碼不太像 

圖片


繼續找下一個 js 文件,在一個 js 文件中找到了一個帶有關鍵字 decodeMp4 的字段,這個函數可能就是解碼的函數了,兩個綠色斷點中間的部分

圖片


在這行代碼行數那裏打斷點,按 F5 刷新,運行到這裏會中止,網頁呈灰色狀態,而後看看這個 decodeMp4 函數裏,有沒有調用了其餘函數,這裏發現了一個 atob 函數,把鼠標懸停在上面能夠看到調用的地方,點擊

圖片


點擊後看到了這個函數,它最後返回了一個值,好了如今解碼函數都找到了,須要把他們扣出來結合 Python使用

圖片


扣代碼

在這個decodeMp4 函數中能夠看到它有 5 個函數1,2,3,4,5

圖片


先只把這些函數扣出來,像這樣,最好像上面1,2,3,4,5按順序放,調用的時候就方便清楚一點,大體讀代碼它們是從上往下調用關係,而後先調試好在用 python 調用

具體的扣的代碼,詳細看源代碼吧,在調試時,若是按原來的扣下來直接運行,總會報一些錯:

window。。。:這是 js 在前端顯示的語法,刪掉

某個變量沒定義:可能在扣函數時,原 js 代碼中在這個函數先後可能有定義,但咱們只扣了函數,沒扣變量,也扣下來

this。。。:由於在原 js 代碼中是,函數內部調用函數內部,扣出來後要改爲調用的函數名

圖片


沒有了錯誤後,接下來用 python 調用了,python 執行 js 代碼,使用了 execjs 庫執行。

圖片

.compile:編譯打開的 js 字符串

.call():第一個參數爲調用 js 的函數名,第二個爲此函數的參數


Final

最後扣好了後,寫爬蟲下載視頻,詳細見源碼,小編只下了 2個 視頻做爲結果做爲參考

圖片

最後這樣就完成了一次 js 逆向之旅,要是有幫助,掃描下方二維碼,小編在那裏等你哦

相關文章
相關標籤/搜索