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

作者:dragon-brother 时间:2022-05-28 13:50:16 

前言

一般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内容进行破解

来源:https://www.cnblogs.com/jlc92blog/p/11153907.html

标签:python,爬虫,js,破解
0
投稿

猜你喜欢

  • python通过colorama模块在控制台输出彩色文字的方法

    2023-07-23 00:35:51
  • python获取当前文件路径以及父文件路径的方法

    2022-07-02 14:06:00
  • 在 Jupyter 中重新导入特定的 Python 文件(场景分析)

    2021-01-30 01:16:57
  • Python GDAL库在Anaconda环境中的配置方法

    2021-09-13 18:51:22
  • Python数据结构与算法中的栈详解(2)

    2022-02-11 07:00:51
  • Zabbix实现微信报警功能

    2021-10-17 04:40:05
  • 查看mysql当前连接数的方法详解

    2024-01-21 03:24:59
  • 一分钟学会JavaScript中的try-catch

    2024-05-10 14:06:57
  • 关于jupyter lab安装及导入tensorflow找不到模块的问题

    2023-05-13 18:03:32
  • TensorFlow实现简单线性回归

    2023-09-18 13:23:45
  • Python利用Matplotlib库实现绘制饼形图

    2021-08-13 11:08:51
  • 内部系统是否也需要用户体验设计?

    2010-11-30 21:47:00
  • 解析SQL Server与ASP互操作的时间处理

    2009-02-01 16:40:00
  • 详解MySQL日期 字符串 时间戳互转

    2024-01-16 15:27:11
  • 基于Python列表解析(列表推导式)

    2021-11-14 16:31:36
  • js删除数组中指定元素的几种方式

    2024-04-10 10:50:48
  • MySQL索引失效十种场景与优化方案

    2024-01-26 06:07:33
  • 四行Python3代码实现图片添加美颜效果

    2021-01-25 10:29:30
  • python开发中range()函数用法实例分析

    2021-05-08 12:53:26
  • PyTorch深度学习模型的保存和加载流程详解

    2023-07-10 04:58:33
  • asp之家 网络编程 m.aspxhome.com