前言
緊接上一期爲大家介紹獲取抖音某個作者首頁的視頻,並下載,更多精彩:先別忙訂閱,先來羣裏看看,有驚喜哦。
join(“q_qun”,1071834648) or visit(“url”,“www.ltchao.top”)
本次解析是通過js算法+html源碼截取最終進行解密的
提前演示
原理
通過瀏覽器中訪問首頁地址,進行抓包,以抖音比較火的祝曉晗爲例
她的首頁地址是 祝曉晗
訪問之後
有一個接口裏面返回了json數據,猜想就是前端頁面上展示的列表,但是好像只有6個,很顯然用了懶加載的技術,先來看看它獲取這些數據需要哪些參數。
sec_id 我們可以從首頁短鏈接,302跳轉那裏獲取到,aid目前還不知道什麼意思,先掠過,這個簽名肯定是前端js算法計算出來,dytk這個值,很眼熟,之前做的文章裏面有這個參數的獲取,就是在html中使用正則匹配到它。那現在我們就最先解決下這個簽名計算的問題。
sec_id 獲取
dytk 獲取
aid
目前看了幾個是固定值,這裏就不用通過js獲取了。
簽名計算
關於簽名的計算這裏要多花點時間了,首先我們要定位簽名的位置。
首先我們搜索簽名找到js文件
繼續追蹤
繼續追蹤
最終找到了
以上截圖是挨個 文件查找到最終的位置,
_bytedAcrawler = __M.require(“douyin_falcon:node_modules/byted-acrawler/dist/runtime”)
運行之後,我們把uid帶入進去就可以獲取簽名了,但是這裏只是我們眼睛看到了,但是具體怎麼拿到這個呢.我們就在網頁上打印下這個東西,
這裏就是加密算法了:
有這算法還不夠,還需要一個tac,這是最近新加的一個參數,之前是沒有的,那麼這個值我們從哪裏獲取呢?
答案是:源碼裏面
這裏的獲取還是和之前一樣,用截取字符串的方式,這裏的tac的作用是如果tac固定,每次獲取到的簽名就是一樣的,如果tac變化了就去重新計算一次簽名。通過最終的整理,核心代碼如下:
這裏其實就是上面拷貝出來的代碼,還需要的是
至於爲什麼都是一點點摸索出來的,沒有什麼理由。
max_cursor說明
這個顯然是時間戳,他是根據時間倒序來查詢的,每重新加載一次,就會時間往前一週,一般官方推薦的是每天最多3個,再多了,容易被平臺認爲是垃圾視頻或者惡意視頻,因爲3*7剛好等於21,我覺得這個21就是這麼計算的來的,你每天超過三個的,可能顯示出來的也就是3個吧,如果不想限定時間的話,就直接設置爲0,把count值設置大,一樣可以批量搜索。
最終演示
格式化一下:
我們隨便找一個,輸入瀏覽器,注意哦,調成收集模式打開哦