您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)搜索頁(yè)的window.__DATA__的解密是怎樣的,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
上次發(fā)了破解知乎模擬登陸的最新版之后,很多人看了都說(shuō)好,唯獨(dú)沒(méi)人給我點(diǎn)贊,以后還是麻煩大家,如果看到對(duì)你有用的文章,可以點(diǎn)點(diǎn)贊,支持下作者哈。
這次給大家分享的是豆瓣的讀書(shū)搜索頁(yè)
https://book.douban.com/subject_search?search_text=%E7%BD%91%E7%BB%9C%E6%98%AF%E6%80%8E%E6%A0%B7%E8%BF%9E%E6%8E%A5%E7%9A%84&cat=1001
以前還以為豆瓣只是給新手爬蟲(chóng)練手的,直到我發(fā)現(xiàn)了這個(gè)頁(yè)面,才發(fā)現(xiàn)是我錯(cuò)了,原來(lái)豆瓣也有加密的,有可能是為了防止新手亂爬吧,一看到這個(gè)就覺(jué)得爬蟲(chóng)越來(lái)越不好做了,隨便一個(gè)頁(yè)面都有 js 加密。
而且我覺(jué)得比上次的知乎的還難點(diǎn),但是可能就只有搜索頁(yè)是加密的,其他的直接找全部圖書(shū)的都是直接放在html源碼的。
廢話不多說(shuō),生死看淡,不服就干?。?!開(kāi)始分析。
1. 尋找搜索內(nèi)容
這個(gè)圖書(shū)數(shù)據(jù)是直接加密的,隱藏在了html頁(yè)面,如果你需要找的話,估計(jì)還得找很長(zhǎng)時(shí)間,我是從一位大佬告訴我的,就在下面這個(gè)頁(yè)面的 window.__DATA__ 里面
不過(guò)如果需要自己找的話,還是可以的,需要點(diǎn)時(shí)間,自己細(xì)心點(diǎn)找,對(duì)于這個(gè)有經(jīng)驗(yàn)了,以后遇到那些找不到數(shù)據(jù)的都可以嘗試在本頁(yè)面的html里面找。
2. 找解密位置
直接搜 window.__DATA__ 即可
上面的就是html內(nèi)容,所以是下面一個(gè),或者你不信的話可以自己嘗試下。
打斷點(diǎn),一看,果不其然,數(shù)據(jù)都出來(lái)了
接著就是自己慢慢調(diào)試了,點(diǎn)擊下一步自己慢慢調(diào)試,看看用到的方法
走了幾步會(huì)很容易發(fā)現(xiàn)這個(gè),這個(gè)就可以說(shuō)是上面那個(gè)方法的解密步驟了
接下來(lái)就是自己看這些 JS 的內(nèi)容了,不算難,如果你厲害的話,能看出他加密使用的方法的話,你可以直接使用 Python 語(yǔ)言的相關(guān)加密方法,如果看不懂,你就需要自己扣出相關(guān)的 JS 了,
如果你初學(xué) JS 的話,學(xué)過(guò)了 JS 原型的屬性,那么非常推薦你解一下,因?yàn)檫@里的 JS 分布在兩個(gè)文件內(nèi),不像上次知乎那樣直接一段函數(shù)就解決了那么簡(jiǎn)單,并且扣出來(lái)了還需要自己改下函數(shù)之間或者對(duì)象之間的原型,總之很復(fù)雜,這個(gè)只能意會(huì)不能言傳,篇幅有限,也不可能全部一個(gè)一個(gè)扣出來(lái)并和你說(shuō)怎么改。
還是得自己實(shí)踐一次才能感受到,我最后花了幾天時(shí)間,扣出了1500+行代碼
3. 用Python運(yùn)行
這里扣出了 JS 使用 python 的 execjs 執(zhí)行,會(huì)出現(xiàn)一個(gè)問(wèn)題
UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 41: illegal multibyte sequence
這里是因?yàn)槔锩媸褂昧艘粋€(gè) TextIOWrapper 對(duì)象,里面沒(méi)有指定編碼類型,使用了默認(rèn)的 cp936 也就是 gbk 編碼,使讀取字符出錯(cuò),我們可以在這個(gè)類上面初始化改下編碼類型為 utf-8 即可運(yùn)行
再次運(yùn)行,即可成功。
關(guān)于搜索頁(yè)的window.__DATA__的解密是怎樣的就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。