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


Posted in Python onJuly 09, 2019

前言

一般js破解有两种方法,一种是用Python重写js逻辑,一种是利用第三方库来调用js内容获取结果。这两种方法各有利弊,第一种方法性能好,但对js和Python要求掌握比较高;第二种方法快捷便利,对一些复杂js加密很有效。这次我们就用第三方库来进行js破解。

目标网站

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

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

js分析调试工具

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

此时你可以一个个看每个包找找有什么可疑的内容,当然我们一般会先看xhr里的内容,一眼我们就发现里面都有encrypt_data这个数据,看着很像。

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

我们ctrl加shift加f键搜索encrypt_data,找到第一个js里的encrypt_data内容,然后翻到下面return e.encrypt_data这一行来,打上断点看看这会是什么内容。(一般我们搜索到return我们搜索的内容都要打上断点来看看,八九不离十的)

打好断点后我们刷新页面来观察,选中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了。

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

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

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

所有我们用同样的方法找到s函数的具体内容和a.a.decode()这个函数的具体内容。方法就是我们在return JSON.parse这里重新打断点,点击断点的那个下一步,然后找上述函数的内容。

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

s函数

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

a.a.decode()

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

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

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

2 WebStorm 安装后激活,教程网上很多,大家自行搜索。它使用方式与 PyCharm 很类似。

我们把上述所需要的函数全部扣下来放到webstorm中,然后运行。注意有的函数里面会有没有定义的参数,遇到这些我们几句在谷歌浏览器里一个个找就可以了,一般会有很多常量,直接替换掉。

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

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

最后用 Python 去调用解密函数就行了,这里出于对网站保护就不直接贴完整代码了。

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现复制整个目录的方法
May 12 Python
python设计模式大全
Jun 27 Python
windows系统下Python环境的搭建(Aptana Studio)
Mar 06 Python
Python实现Mysql数据库连接池实例详解
Apr 11 Python
Python列表list解析操作示例【整数操作、字符操作、矩阵操作】
Jul 25 Python
Python线程之定位与销毁的实现
Feb 17 Python
PyQt5 多窗口连接实例
Jun 19 Python
python实现LBP方法提取图像纹理特征实现分类的步骤
Jul 11 Python
python控制台实现tab补全和清屏的例子
Aug 20 Python
Python实现栈和队列的简单操作方法示例
Nov 29 Python
Python configparser模块常用方法解析
May 22 Python
浅谈Python数学建模之整数规划
Jun 23 Python
python 求某条线上特定x值或y值的点坐标方法
Jul 09 #Python
python将字符串转换成json的方法小结
Jul 09 #Python
Python绘制堆叠柱状图的实例
Jul 09 #Python
python3 线性回归验证方法
Jul 09 #Python
python time.sleep()是睡眠线程还是进程
Jul 09 #Python
python logging模块的使用总结
Jul 09 #Python
Django中如何使用sass的方法步骤
Jul 09 #Python
You might like
获得Google PR值的PHP代码
2007/01/28 PHP
PHP文件去掉PHP注释空格的函数分析(PHP代码压缩)
2013/07/02 PHP
浅析application/x-www-form-urlencoded和multipart/form-data的区别
2014/06/22 PHP
PHP扩展Swoole实现实时异步任务队列示例
2019/04/13 PHP
Aliyun Linux 编译安装 php7.3 tengine2.3.2 mysql8.0 redis5的过程详解
2020/10/20 PHP
jquery实现盒子下拉效果示例代码
2013/09/12 Javascript
javascript获取web应用根目录的方法
2014/02/12 Javascript
JSONP跨域的原理解析及其实现介绍
2014/03/22 Javascript
jQuery实现图片渐入渐出切换展示效果
2015/08/15 Javascript
js addDqmForPP给标签内属性值加上双引号的函数
2016/12/24 Javascript
Javascript中数组去重与拍平的方法示例
2017/02/03 Javascript
微信小程序中使用ECharts 异步加载数据实现图表功能
2018/07/13 Javascript
重学 JS:为啥 await 不能用在 forEach 中详解
2019/04/15 Javascript
微信小程序判断页面是否从其他页面返回的实例代码
2019/07/03 Javascript
layui当点击文本框时弹出选择框,显示选择内容的例子
2019/09/02 Javascript
JavaScript自定义超时API代码实例
2020/04/30 Javascript
Python+matplotlib实现华丽的文本框演示代码
2018/01/22 Python
详解tensorflow实现迁移学习实例
2018/02/10 Python
使用 Python 实现微信群友统计器的思路详解
2018/09/26 Python
ML神器:sklearn的快速使用及入门
2019/07/11 Python
用Python爬取QQ音乐评论并制成词云图的实例
2019/08/24 Python
Python进程间通信 multiProcessing Queue队列实现详解
2019/09/23 Python
Series和DataFrame使用简单入门
2019/11/13 Python
pycharm 实现调试窗口恢复
2021/02/05 Python
很酷的HTML5电子书翻页动画特效
2016/02/25 HTML / CSS
StubHub哥伦比亚:购买和出售您的门票
2016/10/20 全球购物
美国殿堂级滑板、冲浪、滑雪服装品牌:Volcom(钻石)
2017/04/20 全球购物
瑞士设计师家具和家居饰品网上商店:Bruno Wickart
2019/03/18 全球购物
高中毕业自我鉴定
2013/12/22 职场文书
小学生期末自我鉴定
2014/01/19 职场文书
俄语专业职业生涯规划
2014/02/26 职场文书
中式结婚主持词
2014/03/14 职场文书
乡镇个人对照检查材料
2014/08/22 职场文书
2014年纪检工作总结
2014/11/12 职场文书
团员年度个人总结
2015/02/26 职场文书
golang连接MySQl使用sqlx库
2022/04/14 Golang