油猴加密
⑴ js cookie反爬實戰
取自《JavaScript Cookie 反爬實戰》
在進行網頁爬蟲時,遇到反爬蟲策略是常見的挑戰。Cookie 作為其中的一種手段,其功能不僅限於存儲用戶身份信息或保持會話狀態,還被用於辨別合法用戶與爬蟲程序。大部分爬蟲默認只會請求 HTML 文本資源,而忽略了主動攜帶 Cookie 的過程。伺服器通過校驗請求頭中的 Cookie 值來區分兩者的訪問行為,這種機制在 Web 應用中廣泛採用。當伺服器接收到請求時,會檢查請求頭的 Cookie 值是否符合預設規則。如果通過驗證,伺服器將正常返回資源;反之,則將請求重定向至首頁,並在響應頭中添加相應的 Cookie 值,確保後續請求攜帶正確的 Cookie。
在實戰中,首先使用開發者工具觀察目標網頁的介面 URL 和 HTML 結構。發現目標 URL 類似於 UUID,通過 HTML 中的 a 標簽可以獲取這些 URL。接下來,分析具體信息在 HTML 中的表現形式,明確爬取目標。
隨後,設計一個基本的爬蟲程序嘗試獲取數據。然而,面臨反爬策略,遇到了難以繞過的挑戰。使用工具如 Burp Suite 進行逐參數測試,最終定位到關鍵的 cookie 參數 spvrscode=。當該參數為空時,伺服器返回 JS 代碼;當 cookie 過期則顯示非授權訪問提示。為了獲取正確的 cookie 值,使用之前編寫過的 cookie 處理腳本,定位 cookie 生成機制。
清理數據與 cookie,注意重定向刷新可能導致 hook 失效。使用油猴腳本或在每個斷點執行 hook 腳本,最終定位到 cookie 值的生成過程。進一步追蹤加密過程,發現使用了 CryptoJS 庫進行 DES 加密。通過查閱文檔與案例,了解加密流程。確認使用標准演算法,使用 Python 實現同樣功能。
分析發現,密鑰和加密參數 b 來自 JavaScript 內部。至此,編寫爬蟲程序成為可能。選擇直接調用 JS 代碼或使用正則匹配提取所需數據。補全環境依賴後,成功獲取 cookie 值。考慮到 spvrscode 與 sessionid 一一對應,設計類以統一會話,確保請求一致性。
在實際操作中,得到 HTML 數據。至此,實現了對反爬蟲策略的應對,通過深入理解與技術手段,成功獲取目標網頁內容。
⑵ 針對m3u8視頻加密的一些嘗試
本文分享關於m3u8視頻加密的嘗試與解決辦法。
在加密過程中遇到的困難之一是play.js的動態載入,其鏈接隨時間戳變化,這增加了調試難度,每次斷點都難以成功設置,且無法進行代碼覆蓋。
另一個挑戰是解密密鑰的復雜性,通常AES128的密鑰應為16位,但在某些加密方式下,密鑰可能以32位的arraybuffer形式出現,難以追蹤。
開發者工具的檢測機制也構成了一定的困擾。
在解決問題的嘗試中,我們發現了一些方法:首先,可以嘗試在特定函數中設置斷點,如果無法成功斷點,則可以考慮採用替代策略。在瀏覽器中通過代碼覆蓋功能嘗試修改代碼行為,觀察控制台輸出,了解加密過程。
其次,使用油猴插件進行視頻流的hook,實現視頻的下載,此方法的GitHub鏈接已提供。
此外,採用另一種方法,即定位到視頻流載入點並輸出,轉換為mp4格式,這一策略是由一位群內高手分享的。
值得注意的是,使用某些方法可能因檢測機制而被阻止,導致無法播放視頻,因此在應用時需謹慎。
總結,面對m3u8視頻加密的問題,通過設置斷點、代碼覆蓋、使用油猴插件或直接輸出視頻流等策略,可以實現有效的破解與處理。