tslilove

V1

2022/08/19阅读:25主题:山吹

某得物数据获取

声明

本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!


接口:aHR0cHM6Ly9hcHAuZGV3dS5jb20vYXBpL3YxL2g1L2luZGV4L2ZpcmUvc2hvcHBpbmctdGFi

我们就获取就点到酒饮这个类别

通过抓包分析

sk,x-Auth-Token,wxapp-Login-Token都是用户唯一认证,重要的就是sign参数,长度为32位,盲猜一波应该是md5,经过分析js,sign是由请求参数加盐然后再hash一下得到

测试2页如下:


文末代码

#!/usr/bin/python
# -*- coding:utf-8 -*-
# @Time    :2022/8/3 16:21
# @Author   : 亮哥
# @公众号    : 亮哥数据实验室
# @File      : dw.py
# Software  : PyCharm

import requests
import execjs
import json
import warnings
import logging
warnings.filterwarnings("ignore")

logging.basicConfig(level=logging.INFO,format = '%(asctime)s-%(levelname)s:%(message)s')

with open("sign.js",'r',encoding="utf-8") as f:
    ctx = execjs.compile(f.read())
    
def getData(page):
    url = "https://app.dewu.com/api/v1/h5/index/fire/shopping-tab"

    headers = {
       "你的headers"
    }
    if page == 0:
        firstParams = {"tabId":1000008,"limit":20,"lastId":""}
        sign = ctx.call("getSign", firstParams)
        secondParams = {"sign": sign, "tabId": 1000008, "limit": 20, "lastId"""}
    else:
        firstParams = {"tabId": 1000008, "limit": 20, "lastId": f"{page}"}
        sign = ctx.call("getSign", firstParams)
        secondParams = {"sign": sign, "tabId": 1000008, "limit": 20, "lastId": f"{page}"}
    resq = requests.post(url,headers=headers,data=json.dumps(secondParams),verify=False)
    data = resq.json()["data"]["list"]
    resultList = []
    for da in data:
        articleNumbers = da["product"].get("articleNumbers")
        articleNumbers = articleNumbers[0] if articleNumbers else ""
        sellDate = da["product"].get("sellDate")
        sellDate = sellDate if sellDate else ""


        result = {
            "spuId":da["product"]["spuId"],
            "title":da["product"]["title"],
            "price":da["product"]["price"],
            "sourceName":da["product"]["sourceName"],
            "articleNumber":da["product"]["articleNumber"],
            "articleNumbers":articleNumbers,
            "recommendRequestId":da["product"]["recommendRequestId"],
            "sellDate":sellDate,
            "categoryId":da["product"]["categoryId"],
            "soldCountText":da["product"]["soldCountText"]

        }
        resultList.append(result)

    return resultList

def run():
    for page in range(2):
        logging.info(f"获取第{page+1}页")
        resultList = getData(page)
        logging.info("获取的数据:%s",resultList)

if __name__ == '__main__':
    run()

分类:

后端

标签:

Java

作者介绍

tslilove
V1