⑴ 盤點 90% Python 爬蟲中的常見加密演算法,建議收藏!!
在數據抓取過程中,我們經常會遇到加密參數,如「token」、「sign」等。今天,我們將深入探索這些主流加密演算法的特徵和加密方式,幫助大家更好地理解並破解加密參數。首先,讓我們簡要了解加密與解密的概念。加密和解密都是在密鑰控制下進行的操作,密鑰分為加密密鑰和解密密鑰。加密演算法分為對稱加密、非對稱加密和散列演算法。
接著,我們來看看Base64偽加密。Base64並不是真正的加密演算法,而是一種編碼方法。它使用64個字元編碼數據,常用於HTTP環境下的標識信息。我們使用Python實現Base64編碼和解碼,可以輕松進行操作。
接下來,我們介紹MD5加密。MD5是一種廣泛使用的線性散列演算法,加密後生成固定長度的數據,由字母和數字組成,大小寫統一。MD5加密數據是不可逆的,因此破解較為困難,但可以通過暴力破解嘗試還原。在Python中,我們可以輕松實現MD5加密功能,同時增加鹽值或雙重加密以提升安全性。
對稱加密演算法如DES和AES也是數據抓取中常見的加密方法。DES加密是數據加密標准,常用於對稱加密,但其密鑰長度限制在56位,相對容易被破解。相比之下,AES加密更為現代和安全,支持128、192、256位密鑰長度。AES加密涉及密鑰、填充和工作模式,如CBC、ECB、CTR、CFB和OFB。在Python中,我們可以實現AES加密過程。
通過深入學習這些加密演算法的特徵和加密方式,我們能更好地應對數據抓取過程中的加密挑戰。記住,理解加密原理和使用正確的解密方法對於安全地處理加密數據至關重要。希望這篇指南能幫助你更高效地進行數據抓取。
⑵ Python網路爬蟲之數美滑塊的加密及軌跡——動態js參數分析
作者:Python進階者
來源:Python爬蟲與數據挖掘
前言
今天,我將與大家分享關於數美滑塊的加密與軌跡分析,這是一個基礎級別的內容,包括使用他們的教程和實踐方法。滑塊預覽圖如下所示。
滑塊預覽圖
在開始之前,我們先查看了介面 /ca/v1/conf,從中獲取了域名和js地址,以及包含的版本號。然後,我們深入研究了提交滑塊時的參數,發現除了sdkver、organization、rid、act.os、rversion、ostype、callback等固定參數外,還有11個參數名稱和值會隨著版本更新而變化。這些參數的位置和獲取方法如下圖所示。
通過全局搜索參數名並定位,我們可以找到大約8個參數的有效位置。分析代碼後發現,有一些參數通過函數_0x27c7fb(以16進制形式傳入參數)解密得到DES密鑰,而其他參數直接使用明文DES密鑰。因此,我們需要找到並獲取這個解密函數。
整個JS文件可以分為兩部分:第一部分定義了一個解密函數,該函數接收一個整數、減去一個整數,然後使用大數組的下標返回字元串。第二部分則是一個用於返回大數組和偏移處理的匿名函數。現在,我們已經獲取了解密函數的JS代碼和函數名。
接下來,我們將使用正則表達式匹配出所有參數。正則代碼如下所示,可以匹配出所有圖中可見的參數,然後根據滑塊的參數信息進行保存。這將幫助我們獲取到11個動態參數的值。
獲取參數值的方法包括循環處理2位數的明文參數,以及對16進制參數和明文DES密鑰的判斷。通過調用之前定義的JS函數和解密函數,我們可以將16進制參數轉換為整數,並使用解密函數解密得到密鑰。
總結而言,這個動態正則思路能夠適應數美滑塊版本號147至151之間的變化。對於更早版本的混淆結構,我們可能需要尋找不同的方法。對於常更新的JS代碼,確實是一個挑戰。希望這份分析能夠幫助到大家。