上次發了破解知乎模擬登錄的最新版以後,不少人看了都說好,惟獨沒人給我點贊,之後仍是麻煩你們,若是看到對你有用的文章,能夠點點贊,支持下做者哈。html
還有,知乎模擬登錄的代碼已給出,github地址爲:https://github.com/SergioJune...python
但願各位大佬給點個star哈,之後會持續更新,將個人每一個破解的網站源碼都放上去,若是你也有什麼解不開的網站,歡迎去提issue,我會盡我能力去破解,後分享給你們。git
此次給你們分享的是豆瓣的讀書搜索頁github
https://book.douban.com/subje...
之前還覺得豆瓣只是給新手爬蟲練手的,直到我發現了這個頁面,才發現是我錯了,原來豆瓣也有加密的,有多是爲了防止新手亂爬吧,一看到這個就以爲爬蟲愈來愈很差作了,隨便一個頁面都有 js 加密。app
並且我以爲比上次的知乎的還難點,可是可能就只有搜索頁是加密的,其餘的直接找所有圖書的都是直接放在html源碼的。ide
廢話很少說,生死看淡,不服就幹!!!開始分析。函數
這個圖書數據是直接加密的,隱藏在了html頁面,若是你須要找的話,估計還得找很長時間,我是從一位大佬告訴個人,就在下面這個頁面的 window.__DATA__ 裏面學習
不過若是須要本身找的話,仍是能夠的,須要點時間,本身細心點找,對於這個有經驗了,之後遇到那些找不到數據的均可以嘗試在本頁面的html裏面找。網站
直接搜 window.__DATA__ 便可編碼
上面的就是html內容,因此是下面一個,或者你不信的話能夠本身嘗試下。
打斷點,一看,果不其然,數據都出來了
接着就是本身慢慢調試了,點擊下一步本身慢慢調試,看看用到的方法
走了幾步會很容易發現這個,這個就能夠說是上面那個方法的解密步驟了
接下來就是本身看這些 JS 的內容了,不算難,若是你厲害的話,能看出他加密使用的方法的話,你能夠直接使用 Python 語言的相關加密方法,若是看不懂,你就須要本身扣出相關的 JS 了,
若是你初學 JS 的話,學過了 JS 原型的屬性,那麼很是推薦你解一下,由於這裏的 JS 分佈在兩個文件內,不像上次知乎那樣直接一段函數就解決了那麼簡單,而且扣出來了還須要本身改下函數之間或者對象之間的原型,總之很複雜,這個只能意會不能言傳,篇幅有限,也不可能所有一個一個扣出來並和你說怎麼改。
仍是得本身實踐一次才能感覺到,我最後花了幾天時間,扣出了1500+行代碼
這裏扣出了 JS 使用 python 的 execjs 執行,會出現一個問題
UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 41: illegal multibyte sequence
這裏是由於裏面使用了一個 TextIOWrapper 對象,裏面沒有指定編碼類型,使用了默認的 cp936 也就是 gbk 編碼,使讀取字符出錯,咱們能夠在這個類上面初始化改下編碼類型爲 utf-8 便可運行
再次運行,便可成功。
這個豆瓣解密能夠說不難,也能夠說有點難,由於須要扣不少 JS ,若是你能看懂他相關的解密方法就不須要扣,就會很容易了。若是逆向深刻研究逆行 JS 的話,仍是建議你本身動手擼一遍,
最後,想要源碼地址爲 https://github.com/SergioJune...,對你有用的話請給個star,謝謝。
若是文章對你有用的話就點個贊吧!
本文僅用於交流學習,請勿用於非法用途,後果自負!