1. 程式人生 > >大表哥微信給我發了很多資源!結果被和諧了!Python秒存不被和諧

大表哥微信給我發了很多資源!結果被和諧了!Python秒存不被和諧

保存 微信 右上角 瀏覽器 python dff 方法 百度 不錯

技術分享圖片

最近大表哥老是給我發一些雲盤鏈接,裏面經常也有發視頻的雲盤鏈接,小編對此挺好奇的,所以決定點進去看看,看看每天發的這樣的雲盤鏈接裏面都是什麽樣的視頻,當然小編是有私心的。以為你們是某些方面的動作片嘛!所以就點進去看了一下,沒想到大部分的雲盤鏈接的視頻都被和諧了,這就感覺在吃蘋果,結果一口咬下去,然後那個蘋果外面還留有半條蟲一樣。

先上圖!

技術分享圖片

怕頭條爸爸不給過,所以我決定都打碼處理!

進群:125240963 即可獲取數十套PDF哦!01也可以呢

技術分享圖片

技術分享圖片

技術分享圖片

這是個不錯的工具,可以實現網頁版微信的所有功能,之前博主利用它還實現了機器人聊天功能,自己的個人賬號華麗轉變 微軟小冰 。雖然微軟還沒有公開小冰的 api ,不過我們完全可以利用這個工具的轉發功能來實現,思路很簡單,微信上領養一個小冰,把別人說的話轉發給小冰,再把小冰說的話轉發回去。

技術分享圖片

技術分享圖片

技術分享圖片

可以看到上圖中抓到了一個帶有 “transfer” 單詞的 post 請求,這就是我們要找的轉存(transfer)api 。接下來很關鍵,就是分析它的請求頭和請求參數,以便用代碼模擬。

技術分享圖片

cookie分析:

因為轉存是登錄後的操作,所以需要模擬登錄狀態,將與登錄有關的 cookie 設置在請求頭裏。我們繼續使用【控制變量法】,先將瀏覽器裏關於百度的 cookie 全部刪除(在右上角的設置裏面,點擊【隱私】,移除cookies。具體做法自己百度吧。)

技術分享圖片

除了上面說到的兩個 cookie ,其他的請求頭參數可以參照手動轉存時抓包的請求頭。這兩個 cookie 預留出來做參數的原因是 cookie 都是有生存周期的,過期了需要更新,不同的賬號登錄也有不同的 cookie 。

技術分享圖片

技術分享圖片

上面的query string(也就是?後跟的參數)裏,除了框起來的shareid、from、bdstoken需要我們填寫以外,其他的都可以不變,模擬請求的時候直接抄下來。

前兩個與分享的資源有關,bdstoken與登錄的賬號有關。下面的form data裏的兩個參數分別是資源在分享用戶的網盤的所在目錄和剛剛我們點擊保存指定的目錄。

技術分享圖片

所以,需要我們另外填寫的參數為:shareid、from、bdstoken、filelist 和 path,bdstoken 可以手動轉存抓包找到,path 根據你的需要自己定義,前提是你的網盤裏有這個路徑。其他三個需要從分享鏈接裏爬取,這個將在後面的【爬取shareid、from、filelist,發送請求轉存到網盤】部分中進行講解。

搞清楚了參數的問題,可以像下面這樣構造轉存請求的 url 。

技術分享圖片

爬取shareid、from、filelist,發送請求轉存到網盤

https://pan.baidu.com/s/1jImSOXg

以上面這個資源鏈接為例(隨時可能被河蟹,但是沒關系,其他鏈接的結構也是一樣的),我們先用瀏覽器手動訪問,F12 打開控制臺先分析一下源碼,看看我們要的資源信息在什麽地方。控制臺有搜索功能,直接搜 “shareid”。

技術分享圖片

定位到4個shareid,前三個與該資源無關,是其他分享資源,最後一個定位到該 html 文件的最後一個<script></script>標簽塊裏。雙擊後可以看到格式化後的 js 代碼,可以發現我們要的信息全都在裏邊。如下節選:

技術分享圖片

可以看到這兩行

yunData.SHARE_ID = "3927175953";

yunData.SHARE_UK = "140959320"; // 經過對比,這就是我們要的 "from"

yunData.PATH 只指向了一個路徑信息,完整的 filelist 可以從 yunData.FILEINFO 裏提取,它是一個 json ,list 裏的信息是Unicode編碼的,所以在控制臺看不到中文,用Python代碼訪問並獲取輸出一下就可以了。

技術分享圖片

技術分享圖片

清楚了這三個參數的位置,我們就可以用正則表達式進行提取了。代碼如下:

技術分享圖片

爬取到了這三個參數,就可以調用之前的 transfer 方法進行轉存了。

完整代碼

技術分享圖片

get到了吧?是不是既方便又實用哈~!

大表哥微信給我發了很多資源!結果被和諧了!Python秒存不被和諧