Python 爬蟲進階必備 | 某新聞網(wǎng)正文圖片 data-src 解密邏輯分析
點擊上方“咸魚學(xué)Python”,選擇“加為星標(biāo)”
第一時間關(guān)注Python技術(shù)干貨!
圖源:網(wǎng)絡(luò)
今日網(wǎng)站
aHR0cHM6Ly93d3cuc29odS5jb20vYS82MTA5ODU2NDZfMTIxMzMzNzQz
抓包分析
像新聞?wù)军c的反爬一般都比較簡單,可能就是加個簽,對爬蟲相對友好,畢竟為了自來水的流量也不能整一些花里胡哨的東西
打開目標(biāo)站點,通過請求可以看到 response 中是由新聞內(nèi)容的

但是新聞里的圖片都是加密的,沒辦法直接看到源鏈接
加密定位與分析
可以看到,所以的圖片都是 src 屬性的內(nèi)容
所以網(wǎng)頁在加載的時候需要操作圖片的src屬性,所以我們搜索的重點就是他
直接搜索 src 可以得到下面的內(nèi)容

進入 js 繼續(xù)搜索,找到下面的位置

可以看到這里獲取了 src 的值,然后這個屬性進行了一些操作,這樣的操作就很可疑了
打上斷點再刷新

這里的 o 就是加密圖片的值
然后運行到 xx.setAttribute 的位置的時候,就已經(jīng)變成明文的圖片鏈接了

所以關(guān)鍵的邏輯就是 var s = e(o,"www.xxx66.com") 這一行
我們重新刷新,然后單步到 e 的邏輯當(dāng)中

單步進去之后代碼就很簡潔了,具體的操作就是一個 AES 解密的操作
我們找到AES 三元素就可以直接用自己的代碼復(fù)現(xiàn)出來了
首先是 key , 這里的 key 就是 e 方法傳入的參數(shù)2,"www.sox66.com"
因為使用的是 ECB 模式所以不需要 IV,填充方式為 pkcs7
有了上面的內(nèi)容,就可以直接復(fù)現(xiàn)了
代碼示例
import base64
from Crypto.Cipher import AES
def decrypt_img_data(data):
html = base64.b64decode(data)
key = b'www.xxx.xxx6666'
aes = AES.new(key=key, mode=AES.MODE_ECB)
decrypt_data = aes.decrypt(html).decode()
print(decrypt_data)
return decrypt_data
if __name__ == '__main__':
decrypt_img_data(
"ZqqdApMA/yaR/foHptBuz+jwr47D8luFD15aBAmwHoobnaVtAoRWQQuxZXM7etE5f2ZbwA1UQPJ05kM4QYMzT9NbmrugZ7Ix0rwjLtstEHg=")
運行結(jié)果

End.
以上就是全部的內(nèi)容了,咱們下次再會~
備注【咸魚666】,入群交流
我是沒有更新就在摸魚的咸魚
收到請回復(fù)~
我們下次再見。
咸魚:來都來了,再不點贊就不禮貌了!
