【2020-11-22】JS逆向之某团美食商铺数据获取


前言

这周事情有点多,还面试了一家公司,算是学有所成吧,工资比现在的多,不过我还会继续努力的,前几天找了几个逆向的网站都没解出来,头挺大,哎,都是JS太复杂得问题,扣来扣去扣不全代码,得要补一补JS。

这次带来的是某团没事商铺数据的获取,主要是一个_token的解密JS
地址连接:aHR0cHM6Ly9oei5tZWl0dWFuLmNvbS9tZWlzaGkv


一、页面分析

打开开发者模式抓取数据链接,这个请求的主要加密参数是_token,uuid可以从源码获取

在这里插入图片描述

二、_token解密


搜索_token,出来一个直接点进去,再接着搜索,可以找到加密位置,下断点重新请求
在这里插入图片描述

调试进去,可以看到主要的加密函数
在这里插入图片描述
最后一步,就是要扣他的加密JS了,我尝试着扣了一下,哎,不太行,我还是太菜了,抠不出完整的,怎么办???


三、获取加密方法


这个时候哦怎么办,直接把他的JS代码直接抠出来,是个匿名函数,里面有三个参数
在这里插入图片描述

然后其中_token加密参数是第一个字典参数的key为17的方法里
在这里插入图片描述

我们在外面声明个全局变量 var data;
在这里插入图片描述

最后我们执行下,可以看到_token已经出来了
在这里插入图片描述

四、请求源码

import requests,json,execjs

with open('./new.js',encoding='utf-8') as f:
    js_func = execjs.compile(f.read())

_token = js_func.eval('data')
print(_token)

headers = {
    
    
    'Connection': 'keep-alive',
    'Accept': 'application/json',
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36',
    'Sec-Fetch-Site': 'same-origin',
    'Sec-Fetch-Mode': 'cors',
    'Sec-Fetch-Dest': 'empty',
    'Referer': 'https://hz.meituan.com/meishi/pn2/',
    'Accept-Language': 'zh-CN,zh;q=0.9',
}

params = (
    ('cityName', '杭州'),
    ('cateId', '0'),
    ('areaId', '0'),
    ('sort', ''),
    ('dinnerCountAttrId', ''),
    ('page', '1'),
    ('userId', ''),
    ('uuid', 'dc27c2b094a34e0a9c63.1605940296.1.0.0'),
    ('platform', '1'),
    ('partner', '126'),
    ('originUrl', 'https://hz.meituan.com/meishi/pn1/'),
    ('riskLevel', '1'),
    ('optimusCode', '10'),
    ('_token', _token),
)


response = requests.get('https://hz.meituan.com/meishi/api/poi/getPoiList', headers=headers, params=params)
js_data = json.loads(response.text)
print(response.text)
for data in js_data['data']['poiInfos']:
    print(data['title'],data['address'],data['poiId'])

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_26079939/article/details/109934720