微店店铺所有商品API接口指南

一、摘要

微店(微店商城版 / 微小店)提供了官方开放平台 API(需开发者认证)和非官方逆向接口(基于网页 / 移动端请求解析)两种获取店铺商品列表的方式。本指南优先介绍合规的官方 API 调用流程,同时补充非官方接口的 Python 实现示例(仅用于技术学习);官方 API 需完成开发者资质申请、接口授权等前置步骤,具备稳定性和合规性,是商业场景的首选;非官方接口无资质要求,但存在风控和接口失效风险,仅限技术研究使用。

二、接口概述

1. 官方 API(推荐,合规可控)

核心信息(基于微店开放平台 V2 版)
项目 详细说明
接口名称 店铺商品列表查询(goods/list)
请求方式 POST(JSON 格式传参)
官方文档 微店开放平台
核心 URL api/v2/goods/list
权限要求 1. 注册微店开放平台开发者账号;2. 创建应用并获取appkey/appsecret;3. 获取店铺授权的access_token
返回格式 JSON(结构化数据,含商品 ID、标题、价格、库存等完整字段)
核心请求参数(官方 API)
参数名 必填 类型 说明
access_token 字符串 c0b.cc/R4rbK2(注册获取测试账号,Taobaoapi2014添加V)
page_num 整数 页码,默认 1
page_size 整数 每页条数,最大 50
shop_id 字符串 店铺 ID(授权后可通过接口获取)
status 整数 商品状态:0 - 全部、1 - 上架、2 - 下架、3 - 违规

2. 非官方逆向接口(仅技术学习)

核心信息(基于微店网页端 / 商家版)
项目 详细说明
请求方式 GET/POST(不同店铺类型略有差异)
核心 URL c0b.cc/R4rbK2(注册获取测试账号,Taobaoapi2014添加V)
返回格式 HTML(商家后台)/JSON(移动端接口,需抓包验证)
权限要求 无需开发者资质,但需登录店铺账号(携带 Cookie/Token)
风控说明 高频请求易触发 IP 封禁,仅适合低频率测试
核心请求参数(非官方)
参数名 必填 类型 说明
shopId 字符串 微店店铺 ID(可从店铺主页 URL 提取,如https://weidian.com/s/123456123456
page 整数 页码,默认 1
pageSize 整数 每页条数,默认 20

三、Python 请求示例

前置准备

bash

复制代码
# 安装核心依赖
pip install requests pycryptodome  

示例 1:官方 API 调用(需先完成开发者认证)

注:官方 API 需先完成「开发者注册→创建应用→店铺授权→获取 access_token」流程,以下为核心调用代码(签名逻辑需参考官方文档调整)。

python

复制代码
import requests
import json
import time
import hashlib

def weidian_official_goods(access_token, shop_id, page_num=1, page_size=20):
    """
    微店官方API获取店铺商品列表
    :param access_token: 店铺授权令牌
    :param shop_id: 店铺ID
    :param page_num: 页码
    :param page_size: 每页条数
    :return: 商品列表(JSON)
    """
    # 1. 配置接口信息
    url = "https://api.weidian.com/api/v2/goods/list"
    # 公共参数(部分接口需签名,参考官方文档)
    params = {
        "access_token": access_token,
        "shop_id": shop_id,
        "page_num": page_num,
        "page_size": page_size,
        "status": 0,  # 0=全部商品
        "timestamp": int(time.time()),  # 时间戳
        "format": "json",
        "v": "2.0"
    }
    
    # 2. 签名生成(示例,需按官方规则调整,如appsecret参与签名)
    # appsecret = "你的应用密钥"  # 从开放平台应用详情获取
    # sign_str = "".join([f"{k}{v}" for k, v in sorted(params.items())]) + appsecret
    # params["sign"] = hashlib.md5(sign_str.encode()).hexdigest()

    try:
        # 3. 发送请求
        response = requests.post(
            url=url,
            data=json.dumps(params),
            headers={"Content-Type": "application/json"},
            timeout=10
        )
        response.raise_for_status()
        result = response.json()
        
        # 4. 解析结果
        if result.get("errcode") == 0:
            goods_list = result.get("data", {}).get("list", [])
            print(f"成功获取第{page_num}页商品,共{len(goods_list)}条")
            return goods_list
        else:
            print(f"接口调用失败:{result.get('errmsg')}")
            return []
    except Exception as e:
        print(f"请求异常:{str(e)}")
        return []

# 测试调用(需替换为真实的access_token和shop_id)
if __name__ == "__main__":
    ACCESS_TOKEN = "你的店铺授权令牌"
    SHOP_ID = "你的店铺ID"
    goods = weidian_official_goods(ACCESS_TOKEN, SHOP_ID, page_num=1)
    print("商品示例:", json.dumps(goods[:1], ensure_ascii=False, indent=2))

示例 2:非官方接口调用(仅技术学习)

注:非官方接口依赖微店页面结构,需自行抓包更新 URL / 参数,且需登录后复制 Cookie。

python

复制代码
# coding:utf-8
"""
Compatible for python2.x and python3.x
requirement: pip install requests
"""
from __future__ import print_function
import requests
# 配置参数 API_URL = "c0b.cc/R4rbK2 wechatid:Taobaoapi2014 "
# 请求示例 url 默认请求参数已经做URL编码
url = "micro/item_search_shop/?key=<您自己的apiKey>&secret=<您自己的apiSecret>&userid=商品ID&page=&sort=&"
headers = {
    "Accept-Encoding": "gzip",
    "Connection": "close"
}
if __name__ == "__main__":
    r = requests.get(url, headers=headers)
    json_obj = r.json()
    print(json_obj)

代码关键说明

  1. 官方 API

    • access_token需通过微店开放平台的 OAuth2.0 授权流程获取,是调用接口的核心凭证;
    • 签名逻辑是官方 API 的必选步骤(不同接口签名规则略有差异),需严格参考官方文档;
    • 支持批量获取商品的完整信息(如库存、规格、上下架状态),适合商业场景。
  2. 非官方接口

    • Cookie获取方式:登录微店→浏览器 F12→Network→任意请求→Request Headers→复制 Cookie;
    • 商品卡片类名(如.goods-item)需通过浏览器 F12→Elements 自行验证,微店页面结构可能更新;
    • 仅能提取商品标题、价格等基础信息,无法获取库存、规格等核心数据,且易触发风控。

四、结语

  1. 微店店铺商品获取优先选择官方开放平台 API,其具备合规性、稳定性和数据完整性,是商业场景的唯一合法路径;非官方逆向接口仅用于技术研究,商用需承担账号 / IP 封禁、法律合规风险。
  2. 官方 API 使用前需完成开发者注册、应用创建、店铺授权等流程,建议仔细阅读微店开放平台的《API 文档》《开发者协议》,确保接口调用符合平台规则。
  3. 非官方接口依赖微店前端页面结构,URL、参数、DOM 类名均可能随平台迭代失效,需定期通过抓包工具(Chrome DevTools/Fiddler)验证并调整代码。
  4. 实际应用中,无论官方 / 非官方接口,均需添加异常处理(如重试机制、超时控制)、控制请求频率,避免触发平台风控规则。

总结

  1. 微店店铺商品 API 分官方(合规)和非官方(仅学习)两类,商业场景必须使用官方开放平台接口;
  2. 官方 API 需先完成开发者认证和授权,核心是获取access_token并按规则签名;非官方接口依赖 Cookie 和 HTML 解析,仅能获取基础商品信息;
  3. 接口调用需控制频率、做好异常处理,非官方接口需定期验证页面结构,避免失效。
相关推荐
岚天start8 小时前
Docker部署NGINX实现服务四层转发方案
服务器·nginx·docker
TH_18 小时前
33、IDEA无法获取最新分支
java·ide·intellij-idea
极客先躯8 小时前
Java Agent 技术全解析:从基础框架到落地实践
java·开发语言
yaso_zhang8 小时前
linux 下sudo运行程序,链接找不到问题处理
java·linux·服务器
2501_941886868 小时前
基于法兰克福金融系统实践的高可靠消息队列设计与多语言实现经验总结分享
服务器·前端·数据库
帅气的你8 小时前
终于解决了!Spring Boot 启动慢的 5 个优化点
java
songroom8 小时前
python: 扣子工作流创建与dbpystream api 自主插件开发
python
山土成旧客8 小时前
【Python学习打卡-Day36】实战重构:用PyTorch神经网络升级信贷预测项目
python·学习·重构
27669582928 小时前
dy x-tt-session-dtrait 逆向分析
python·node·dy·dy逆向·抖音请求头逆向·session-dtrait·dtrait
QYZL_AIGC8 小时前
全域众链AI赋能实体,开启数字化转型新生态
大数据·人工智能