赞
踩
一、抓包 找关键字 参数里是否包含加密字段
二、找参数在JS的位置(
1、搜索关键字
2、XHR断点
3、hook关键字)
三、扣JS
四、还原入口参数
前言:
此内容仅供学习交流使用,不用于商业用途,如果涉及侵权,请联系作者删除;
打开开发者工具,点一下免费加载一下数据,我们可以看到有我们想要的数据
查看请求参数,发现其中analysis参数是加密的,且每次点击都不同,可以判断是由js生成的
首先我们通过搜索关键词,并没有找到相关的参数
然后通过使用XHR断点,我们能来到了这里
接下里点击跳过下一个函数调用,大概走三步左右就能来到以下这个位置
可以看到这是一个回调方法,我们往里面走,点击进入下一个函数调用
此时t是一个返回的数据,但我们需要拿的是一个请求数据,所以继续往后面走,点击跳过下一个函数调用
可以看到这是一个响应的拦截器。因此我们往上拉,可以找到请求的拦截器,并且下断点
其中e就是我们想要的加密后的参数
可以得出这是生成加密参数的函数,函数需要的参数分别是a和d
analysis = i[jt](i[qt](a, d))
大概30行左右就搞定了
a = 'MTEyMDIzLTAxLTE1MzZjbmZyZWVpcGFk@#/rank/indexSnapshot@#12565779418@#3'
d = 'xyz517cda96abcd'
可见需要还原的参数为a和d
d经过测试是写死的
a经过以下地方声明
import datetime import requests import execjs def get_data(page, brand, device): ''' :param page: The number of pages to be retrieved :param brand: ‘free’\'paid'\'grossing' :param device:'iphone'\'ipad' :return: ''' url = 'https://api.qimai.cn/rank/index' headers = { "referer": "https://www.qimai.cn/", "sec-ch-ua": "\"Not_A Brand\";v=\"99\", \"Google Chrome\";v=\"109\", \"Chromium\";v=\"109\"", "sec-ch-ua-mobile": "?0", "sec-ch-ua-platform": "\"Windows\"", "sec-fetch-dest": "empty", "sec-fetch-mode": "cors", "sec-fetch-site": "same-site", "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36" } current_date = datetime.datetime.now().strftime('%Y-%m-%d') params = { "analysis": "ezUnVisSKEh6W3YbKQtwQSwILhA1PT9BfGM6Hi9UeBQ4DS4UIy1ZRm40NVx5FU4QAgoTVhNbVVIbJEIIBFdWVlxOT0wCAXdAVw==", "brand": brand, "device": device, "country": "cn", "genre": "36", "date": current_date, "page": page, "is_rank_index": "1", "snapshot": "19:46:01" } with open('06七麦数据接口.js', encoding='utf-8') as f: js_code = execjs.compile(f.read()) analysis = js_code.call('get_data', page, brand, device, current_date) params['analysis'] = analysis resp = requests.get(url=url, headers=headers, params=params) print(resp.json()) for i in range(1, 4): get_data(i, brand='grossing', device='iphone')
JS接口文件或更多探讨欢迎联系作者交流~~~~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。