python爬虫之快速对js内容进行破解

python爬虫之快速对js内容进行破解

今天介绍下数据被js加密后的破解方法。距离上次发文已通过去半个多月了,我写文章的主要目的是把从其它地方学到的东西作个记录顺便分享给你们,我认可本身是个懒猪。不知道小伙伴们有没有遇到一样的状况,公众号,博客关注了一堆,可是真正看并去学习的少之又少,但愿我们互相监督,多多交流学习哈。哎,闲话少叙,下面进入正题。python

上篇文章介绍到通常js破解有两种方法,一种是用Python重写js逻辑,一种是利用第三方库来调用js内容获取结果。这两种方法各有利弊,第一种方法性能好,但对js和Python要求掌握比较高;第二种方法快捷便利,对一些复杂js加密颇有效。此次咱们就用第三方库来进行js破解。web

目标网站

本次网站是[企名片],网站对展现的数据进行了加密,因此直接找根本找不到。json

目标url:https://www.qimingpian.com/finosda/project/pinvestment浏览器

js分析调试工具

对js进行分析调试的浏览器必定要用谷歌浏览器,用这个来调试测试真的很方便。首先咱们按F12打开开发者工具,选到network选项并勾选preserve log 选项,而后输入网址url来抓包。此时你会发现网页源码里没有展现内容,在搜索也找不到咱们看到的内容,那说明网页内容是被加密处理了。app

此时你能够一个个看每一个包找找有什么可疑的内容,固然咱们通常会先看xhr里的内容,一眼咱们就发现里面都有encrypt_data这个数据,看着很像。python爬虫

咱们ctrlshiftf键搜索encrypt_data,找到第一个js里的encrypt_data内容,而后翻到下面return e.encrypt_data这一行来,打上断点看看这会是什么内容。(通常咱们搜索到return咱们搜索的内容都要打上断点来看看,八九不离十的)webstorm

打好断点后咱们刷新页面来观察,选中e.encrypt_data右键有个什么什么in console的,点这个会在下面出现咱们选中的内容是什么。而后把后面的Object(d.a)(e.encrypt_data)用一样的方法来试下,发现没有网页的内容啊。这里必定要注意咱们打的断点,在按一次,重复上面的步骤会发现,Object(d.a)(e.encrypt_data)这不就是咱们要的内容吗!e.encrypt_data这个就是咱们xhr里面的那个encrypt_data,Object(d.a)是一个函数,就是这个函数对内容进行了加密,咱们只要破解这个函数就OK了。编辑器

选中Object(d.a)上面会出现它在哪里,点击下跳转过去。能够发现函数返回了一个json对象。这个返回结果包括1个s函数,参数里只有a.a.decode(t)这一个变量,其他都是常量。函数

全部咱们用一样的方法找到s函数的具体内容和a.a.decode()这个函数的具体内容。方法就是咱们在return JSON.parse这里从新打断点,点击断点的那个下一步,而后找上述函数的内容。工具

s函数

a.a.decode()

利用webstorm编辑器来运行上述函数进行调试

1 首先咱们安装Nodejs,去官网下载安装,这是js环境。这个本身搜索个安装教程吧,这里不过多介绍了。

2 WebStorm 安装后激活,教程网上不少,你们自行搜索。它使用方式与 PyCharm 很相似。

咱们把上述所须要的函数所有扣下来放到webstorm中,而后运行。注意有的函数里面会有没有定义的参数,遇到这些咱们在谷歌浏览器里一个个找就能够了,通常会有不少常量,直接替换掉。

而后咱们调用上述方法能够看到可以正常获取数据了,这里js里的部分方法我从新命名了,注意下,下面是部分代码片断。

最后用 Python 去调用解密函数就好了,这里出于对网站保护就不直接贴完整代码了,想要的能够后台私我。

参考:https://mp.weixin.qq.com/s/uoAnLYNrTsNn_YowWyXfyg

这就是今天分享的全部内容,但愿有所收获。

感兴趣能够关注下公众号python爬虫笔记。

欢迎你们交流分享欧!

相关文章
相关标签/搜索