上次發了破解知乎模擬登錄的最新版以後,不少人看了都說好,惟獨沒人給我點贊,之後仍是麻煩你們,若是看到對你有用的文章,能夠點點贊,支持下做者哈。html
還有,知乎模擬登錄的代碼已給出,github地址爲:https://github.com/SergioJune/Spider-Crack-JSpython
但願各位大佬給點個star哈,之後會持續更新,將個人每一個破解的網站源碼都放上去,若是你也有什麼解不開的網站,歡迎去提issue,我會盡我能力去破解,後分享給你們。git
此次給你們分享的是豆瓣的讀書搜索頁github
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複製代碼
之前還覺得豆瓣只是給新手爬蟲練手的,直到我發現了這個頁面,才發現是我錯了,原來豆瓣也有加密的,有多是爲了防止新手亂爬吧,一看到這個就以爲爬蟲愈來愈很差作了,隨便一個頁面都有 js 加密。bash
並且我以爲比上次的知乎的還難點,可是可能就只有搜索頁是加密的,其餘的直接找所有圖書的都是直接放在html源碼的。app
廢話很少說,生死看淡,不服就幹!!!開始分析。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/Spider-Crack-JS/tree/master/douban,對你有用的話請給個star,謝謝。
若是文章對你有用的話就點個贊吧!
本文僅用於交流學習,請勿用於非法用途,後果自負!