Python调用,爬虫JS逆向——动态数据,数据加密获取步骤和方法。

2023-11-03

Python调用,爬虫JS逆向——ajax类型数据

JS逆向-加密数据

加密数据是无法通过在后台找到接口进行请求来获取数据

目标网站:https://www.qimingpian.com/finosda/project/pinvestment
1. 通过查找无法找到接口位置

在这里插入图片描述

2.查看fetch/xhr查看动态请求(对加密数据进行查找操作)找到我们需要的JS文件。

在这里插入图片描述

3. 点击进入源代码-点击美化输出。

在这里插入图片描述

4.搜索刚才点关键字参数,进行查找位置(其他位置基本是上传图片),打断点。

在这里插入图片描述

5.F5刷新界面,进入断点位置,进行单步点击,找到参数传入位置。

在这里插入图片描述

6.encrypt_data参数传入变化,将片段截取到本地JS中进行调试,补齐缺失参数。

在这里插入图片描述

6.encrypt_data参数传入变化,将片段截取到本地JS中进行调试,补齐缺失参数。
  • data就是在网站中找到encrypt_data,这是需要传入的参数,在进行运行补齐参数。
  • 在这里插入图片描述

data

6.运行时会报错,缺少o到方法,我们对其进行补齐操作,在网站中将鼠标放到o方法上点击,就可以找到o方法位置。

在这里插入图片描述
在这里插入图片描述

7.点击o后点中括号,找到整个方法结尾到位置,将整个方法复制到JS文件中。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8.在将JS运行,继续补齐缺失的方法,缺少a.a.decode方法,可以修改为decode123。

在这里插入图片描述

9.进入到decode方法中,将方法进行复制Js文件中,将方法名修改为decode123。

在这里插入图片描述
decode
在这里插入图片描述

10.再次进行运行Js文件,补齐缺失参数和方法,c 可以在控制台直接输入,找到参数在写入decode123中。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

10.再次进行运行Js文件,补齐缺失参数和方法,c 可以在控制台直接输入,找到参数在写入decode123中。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

11.再次进行运行Js文件,无缺失参数即可获得数据,因为data是随时更新的,我们要将断点去除,刷新网站找到encrypt_data参数进行修改。
  • 失效的data参数。

在这里插入图片描述

  • 重新请求的参数获取数据。
    在这里插入图片描述

Python-调用部分

import requests
import execjs
# 请求加密参数,对其进行js解密,获取数据。
url = 'https://vipapi.qimingpian.cn/DataList/productListVip'
headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36'
}

data = {
    'time_interval':'',
    'tag':'',
    'tag_type': '',
    'province': '',
    'lunci': '',
    'page': '1',
    'num': '20',
    'unionid': '',
}
res =requests.get(url, headers=headers,data=data)
e = res.json()['encrypt_data']


# 打开js文件,方法s中传入参数e,请求回数据。
with open('./qxkj.js','r',encoding='utf-8') as f:
    jscode = f.read()
ctx = execjs.compile(jscode)
call_a = ctx.call('s',e)
print(e)
运行结果

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python调用,爬虫JS逆向——动态数据,数据加密获取步骤和方法。 的相关文章

随机推荐