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使用PIL库实现验证码图片的方法
Mar 11 Python
Python列表list操作符实例分析【标准类型操作符、切片、连接字符、列表解析、重复操作等】
Jul 24 Python
python虚拟环境virtualenv的使用教程
Oct 20 Python
python基础之包的导入和__init__.py的介绍
Jan 08 Python
python设计微型小说网站(基于Django+Bootstrap框架)
Jul 08 Python
django admin.py 外键,反向查询的实例
Jul 26 Python
用python wxpy管理微信公众号并利用微信获取自己的开源数据
Jul 30 Python
下载与当前Chrome对应的chromedriver.exe(用于python+selenium)
Jan 14 Python
Python3 ffmpeg视频转换工具使用方法解析
Aug 10 Python
Python基于execjs运行js过程解析
Nov 27 Python
python 实现全球IP归属地查询工具
Dec 18 Python
详解python第三方库的安装、PyInstaller库、random库
Mar 03 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
php显示时间常用方法小结
2015/06/05 PHP
另类调用flash无须激活的方法
2006/12/27 Javascript
jquery eval解析JSON中的注意点介绍
2013/08/23 Javascript
jquery实现兼容浏览器的图片上传本地预览功能
2013/10/14 Javascript
不到30行JS代码实现Excel表格的方法
2014/11/15 Javascript
NodeJs——入门必看攻略
2016/06/27 NodeJs
深入理解JS实现快速排序和去重
2016/10/17 Javascript
使用UrlConnection实现后台模拟http请求的简单实例
2017/01/04 Javascript
jQuery按需加载轮播图(web前端性能优化)
2017/02/17 Javascript
JavaScript两个变量交换值的实现方法
2017/03/01 Javascript
javascript实现二叉树遍历的代码
2017/06/08 Javascript
基于Require.js使用方法(总结)
2017/10/26 Javascript
JavaScript中Object值合并方法详解
2017/12/22 Javascript
js对象数组和对象的使用实例详解
2019/08/27 Javascript
jquery轻量级数字动画插件countUp.js使用详解
2019/10/17 jQuery
微信小程序利用云函数获取手机号码
2019/12/17 Javascript
Vue向后台传数组数据,springboot接收vue传的数组数据实例
2020/11/12 Javascript
[53:18]Spirit vs Liquid Supermajor小组赛A组 BO3 第三场 6.2
2018/06/03 DOTA
Python的Django框架中if标签的相关使用
2015/07/15 Python
详解在Python程序中解析并修改XML内容的方法
2015/11/16 Python
python检索特定内容的文本文件实例
2018/06/05 Python
python 3.6.4 安装配置方法图文教程
2018/09/18 Python
Django中使用Celery的方法示例
2018/11/29 Python
pycharm debug功能实现跳到循环末尾的方法
2018/11/29 Python
python实现自动化报表功能(Oracle/plsql/Excel/多线程)
2019/12/02 Python
matplotlib jupyter notebook 图像可视化 plt show操作
2020/04/24 Python
Python基于paramunittest模块实现excl参数化
2020/04/26 Python
玖熙女鞋美国官网:Nine West
2016/10/06 全球购物
台湾7-ELEVEN线上购物中心:7-11
2021/01/21 全球购物
几个数据库方面的面试题
2016/07/01 面试题
印刷工程专业应届生求职信
2013/09/29 职场文书
增员口号大全
2014/06/18 职场文书
优秀党员推荐材料
2014/12/18 职场文书
入学证明
2015/06/23 职场文书
继续教育心得体会(共6篇)
2016/01/19 职场文书
深入理解go缓存库freecache的使用
2022/02/15 Golang