Skip to content

Goofish Client现代化的二手交易平台 Client

TypeScript 优先,功能强大,高度可扩展

Goofish Client

项目信息

Goofish Client

一个非官方的闲鱼客户端库,支持商品搜索等功能。

NPM Version GitHub Stars GitHub Forks GitHub Issues PRs Welcome Build Status

License TypeScript Node.js GitHub Last Commit Bundle Size NPM Downloads

🎯 快速上手

bash
npm install goofish-client
bash
yarn add goofish-client
bash
pnpm add goofish-client
typescript
import { Goofish, LogLevel } from "goofish-client";

// 创建客户端实例
const client = new Goofish({
  cookie: "cookie2=xxxx",
  level: LogLevel.INFO,
});

// 获取首页Feed数据
const feedData = await client.api.mtop.home.getFeed({
  pageSize: 20,
  pageNumber: 1,
});

console.log(`获取到 ${feedData.data.cardList.length} 个商品`);

// 搜索商品
const results = await client.api.mtop.search.search({
  keyword: "iPhone 14",
  pageNumber: 1,
  rowsPerPage: 20,
});

console.log(`找到 ${results.data.resultList.length} 个商品`);

// 获取商品详情
const itemDetail = await client.api.mtop.item.getDetail({
  itemId: "95xxxxxxxxx334",
});

console.log(`商品标题: ${itemDetail.data.itemDO.title}`);

// 获取收藏列表
const favorList = await client.api.mtop.favor.getAllFavorItems();

console.log(`收藏商品数量: ${favorList.data.items.length}`);

// 获取订单列表
const orderList = await client.api.mtop.order.getAllOrders();

console.log(`订单数量: ${orderList.data.items.length}`);

📚 核心功能

🏠 首页推荐

  • 个性化推荐:基于用户行为的智能 Feed 推荐
  • 分页加载:支持无限滚动和分页浏览
  • 实时更新:动态获取最新的商品推荐
  • 丰富标签:商品状态、卖家信用、价格标签等

🔍 智能搜索

  • 关键词搜索:支持复合关键词和模糊匹配
  • 高级筛选:价格区间、发布时间、商品状态等多维度筛选
  • 智能排序:按价格、时间、距离、信用等多种排序方式
  • 地理位置:基于 GPS 的附近商品搜索

📦 商品详情

  • 完整信息:获取商品的详细信息和属性
  • 卖家信息:卖家资料、信用等级、历史记录
  • 图片处理:高清图片获取和多尺寸支持
  • 实时数据:浏览量、收藏数、想要数等实时统计

❤️ 收藏管理

  • 收藏列表:获取用户收藏的所有商品信息
  • 分类筛选:支持全部、降价、有效、失效宝贝分类
  • 状态监控:实时监控收藏商品的价格变化和状态
  • 批量操作:支持分页加载和批量数据处理

📋 订单管理

  • 订单列表:获取用户买到的所有订单信息
  • 状态筛选:支持全部、待付款、待发货、待收货、待评价、退款中等状态分类
  • 详细信息:商品详情、卖家信息、价格、数量、物流等完整订单数据
  • 操作支持:查看可用操作(付款、确认收货、申请退款等)

🔐 身份认证

  • Cookie 认证:支持现有 Cookie 快速认证
  • 二维码登录:完整的扫码登录流程
  • 会话管理:自动 Cookie 更新和状态监控
  • 安全存储:Cookie 安全存储和加密传输

👤 用户管理

  • 用户信息:获取用户基本资料和状态
  • 导航数据:用户导航和菜单信息
  • 状态监控:实时监控登录状态和会话有效性

💬 IM 即时通讯

  • IM Token 获取:通过 Mtop 接口安全获取 IM 登录 Token
  • WebSocket 管理:内置 WsClient,支持自动重连、心跳保活、消息队列
  • 会话列表:基于 /r/Conversation/listNewestPagination 获取最新会话列表
  • 消息收发:支持按接收者范围发送消息、快捷发送文本消息
  • 消息解码与格式化:内置 MsgPack 解码与结构化格式化,直接拿到可用的消息结构

🔧 高级扩展

  • 自定义客户端:扩展 HTTP 客户端功能
  • 拦截器支持:请求/响应拦截和处理
  • 批量操作:支持批量搜索和数据处理
  • 性能监控:内置性能分析和监控工具

🚀 快速开始指南

1. 基础安装

bash
npm install goofish-client

2. 获取认证信息

选择以下任一方式获取认证:

typescript
import { Goofish, LogLevel } from "goofish-client";

// 方式1: 使用已有Cookie
const client = new Goofish({
  cookie: "your_existing_cookie",
});

// 方式2: 二维码登录
const client = new Goofish({});
const loginResult = await client.api.passport.qr.generate();
// 扫描二维码后获取Cookie...

3. 开始使用

typescript
// 获取首页推荐
const feedData = await client.api.mtop.home.getFeed({
  pageSize: 30,
  pageNumber: 1,
});

// 搜索商品
const products = await client.api.mtop.search.search({
  keyword: "MacBook Pro",
  filter: {
    priceRange: { from: 5000, to: 15000 },
  },
});

// 获取商品详情
const itemDetail = await client.api.mtop.item.getDetail({
  itemId: "95xxxxxxxxx334",
});

// 获取用户信息
const userInfo = await client.api.mtop.user.getUserNav();

// 获取收藏商品
const favorItems = await client.api.mtop.favor.getAllFavorItems();

// (可选)初始化 IM:获取 Token、连接 WebSocket 并注册
const tokenRes = await client.api.mtop.im.getLoginToken();
await client.wsClientIm.connect();
await client.api.im.auth.register({ token: tokenRes.data.accessToken });

// 监听格式化后的消息
client.api.im.message.onFormattedMessage((msg) => {
  console.log("收到 IM 消息:", msg);
});

📖 学习资源

🤝 加入社区

重要声明

本 Client 为第三方开发工具,仅供学习研究使用。使用前请确保遵守相关平台的服务条款。

TypeScript 类型定义主要覆盖成功响应场景,错误处理请参考官方文档。


基于 GPL-3.0 许可证发布