一、前言
闲鱼作为阿里巴巴旗下的二手交易平台,暂未对外开放官方的商品列表查询 API。本指南基于对闲鱼网页端 / 移动端网络请求的逆向分析,提供非官方的商品列表数据获取思路及 Python 实现方案,仅用于技术学习与研究。
二、接口概述
1. 核心接口信息
项目详细说明
适用场景按关键词、地区、价格、排序方式筛选闲鱼商品列表
请求方式网页端:GET(参数拼接在 URL 后);移动端:POST(参数多为 JSON 格式)
核心 URL网页端:https://2.taobao.com/item/list.htm(返回 HTML);
移动端:URL 随版本迭代频繁,需自行抓包验证
返回格式网页端:HTML(需解析 DOM 元素);移动端:JSON(易解析,但需登录态)
权限要求无需开发者认证,未登录状态下仅能获取少量数据,登录后(携带 Cookie)可获取完整数据
2. 核心请求参数(网页端)
参数名必填类型说明
keyword是字符串商品搜索关键词(如 “二手 iPad”,需 URL 编码避免中文乱码)
page否整数页码,默认 1,每页约 20 条商品
sort否字符串排序方式:default(默认)、price_asc(价格升序)、price_desc(价格降序)
region否字符串地区筛选(如 “深圳”,需匹配平台内部地区编码,可通过抓包获取)
_input_charset否字符串编码格式,固定为utf8
三、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 = "goodfish/item_get/?key=<您自己的apiKey>&secret=<您自己的apiSecret>&num_iid=750828541223" headers = { "Accept-Encoding": "gzip", "Connection": "close" } if __name__ == "__main__": r = requests.get(url, headers=headers) json_obj = r.json() print(json_obj)
代码关键说明
URL 编码:通过urllib.parse.quote()处理中文关键词,避免请求参数乱码;
风控规避:time.sleep(2)控制请求频率,是避免 IP 被封的核心措施;
容错处理:每个字段提取都做if判断,防止因闲鱼页面结构微调导致程序崩溃;
Cookie 获取:登录闲鱼后,在浏览器 F12→Network→任意请求的 Request Headers 中复制 Cookie,添加后可获取更完整数据;
DOM 适配:若解析不到数据,需打开浏览器 F12→Elements,重新定位商品卡片的类名(如.item-mod可能更新)。
四、结语
本指南的接口为非官方实现,其 URL、请求参数、页面结构均可能随闲鱼平台迭代失效,需定期通过抓包工具(如 Chrome DevTools、Fiddler)验证并调整代码;
移动端接口虽返回 JSON 格式更易解析,但需处理登录态、签名验证等复杂逻辑,新手建议先从网页端接口入手;
实际应用中,需完善异常处理(如 IP 代理池、重试机制),进一步降低风控风险,保障程序稳定性。