豆瓣读书搜索页的window.__DATA__的解密

上次发了破解知乎模拟登录的最新版以后,不少人看了都说好,惟独没人给我点赞,之后仍是麻烦你们,若是看到对你有用的文章,能够点点赞,支持下做者哈。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

1. 寻找搜索内容

这个图书数据是直接加密的,隐藏在了html页面,若是你须要找的话,估计还得找很长时间,我是从一位大佬告诉个人,就在下面这个页面的 window.__DATA__ 里面函数

不过若是须要本身找的话,仍是能够的,须要点时间,本身细心点找,对于这个有经验了,之后遇到那些找不到数据的均可以尝试在本页面的html里面找。学习


2. 找解密位置

直接搜 window.__DATA__ 便可网站

上面的就是html内容,因此是下面一个,或者你不信的话能够本身尝试下。

打断点,一看,果不其然,数据都出来了

接着就是本身慢慢调试了,点击下一步本身慢慢调试,看看用到的方法

走了几步会很容易发现这个,这个就能够说是上面那个方法的解密步骤了

接下来就是本身看这些 JS 的内容了,不算难,若是你厉害的话,能看出他加密使用的方法的话,你能够直接使用 Python 语言的相关加密方法,若是看不懂,你就须要本身扣出相关的 JS 了,

若是你初学 JS 的话,学过了 JS 原型的属性,那么很是推荐你解一下,由于这里的 JS 分布在两个文件内,不像上次知乎那样直接一段函数就解决了那么简单,而且扣出来了还须要本身改下函数之间或者对象之间的原型,总之很复杂,这个只能意会不能言传,篇幅有限,也不可能所有一个一个扣出来并和你说怎么改。

仍是得本身实践一次才能感觉到,我最后花了几天时间,扣出了1500+行代码


3. 用Python运行

这里扣出了 JS 使用 python 的 execjs 执行,会出现一个问题

​UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 41: illegal multibyte sequence复制代码


这里是由于里面使用了一个 TextIOWrapper 对象,里面没有指定编码类型,使用了默认的 cp936 也就是 gbk 编码,使读取字符出错,咱们能够在这个类上面初始化改下编码类型为 utf-8 便可运行

再次运行,便可成功。


4. 写在最后

这个豆瓣解密能够说不难,也能够说有点难,由于须要扣不少 JS ,若是你能看懂他相关的解密方法就不须要扣,就会很容易了。若是逆向深刻研究逆行 JS 的话,仍是建议你本身动手撸一遍,

最后,想要源码地址为 https://github.com/SergioJune/Spider-Crack-JS/tree/master/douban,对你有用的话请给个star,谢谢。

若是文章对你有用的话就点个赞吧!


本文仅用于交流学习,请勿用于非法用途,后果自负!

相关文章
相关标签/搜索