基于 FastAPI + React + MySQL + Redis + Playwright 的闲鱼多账号自动化系统。
主系统负责账号管理、消息收发、自动回复、自动发货、商品发布与后台管理;promotion 子项目负责返佣账号、选品规则、素材库、发布规则、删除规则和相关修复任务。
🔴 诚邀各位开发者提交pr,完善系统
🔴 承接各类项目定制,各类项目均可,有需要可联系,另外我菜,不一定都会
🔴 我用夸克网盘给你分享了「自动发货」,点击链接或复制整段内容,打开「夸克网盘APP」即可获取。
🔴 /~79313YhCQU~:/
🔴 链接:https://pan.quark.cn/s/af567356cba7
| 微信群 | QQ群 | 微信公众号 | Telegram | 赞赏支持 |
|---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
| 扫码加入微信交流群 | 扫码加入QQ交流群 | 关注公众号发送"最新源码"获取最新代码 | 扫码加入Telegram群 | 如果觉得好用,请作者喝杯咖啡 |
如群二维码过期,请关注公众号获取最新群链接。
| 模块 | 说明 |
|---|---|
| 多账号管理 | 支持多个闲鱼账号登录、状态切换、Cookie 维护与登录续期 |
| 自动回复 | 支持文本关键词、图片关键词、默认回复、商品专属回复 |
| AI 回复 | 支持大模型上下文对话与智能回复 |
| 自动发货 | 支持卡券、虚拟商品、自动补发、发送结果记录 |
| 在线聊天 | 支持会话列表、消息收发、聊天联动 |
| 商品发布 | 支持素材库、地址库、单品发布、批量发布、发布日志 |
| 订单与评价 | 订单拉取、自动评价、求小红花、状态跟踪 |
| 商品采集与分销 | Goofish 采集、货源管理、对接记录、结算链路 |
| 通知与风控 | 支持消息通知、风控日志、系统反馈与公告管理 |
| 模块 | 说明 |
|---|---|
| 返佣账号 | 返佣账号登录、状态管理、Cookie 维护 |
| 选品规则 | 按规则抓取候选商品并自动写入素材库 |
| 素材库 | 管理标题、图片、详情、淘口令、短链、库存、发布状态 |
| 发布规则 | 定时发布返佣商品,复用公共发布能力 |
| 删除规则 | 定时删除已发布商品 |
| 补偿任务 | 已发布商品 ID 回写、短链修复、卡券补偿等 |
| 技术 | 说明 |
|---|---|
| FastAPI | 主系统与返佣后端 API 服务 |
| SQLAlchemy 2.0 | ORM 与数据库访问 |
| MySQL 8.0 | 主数据存储 |
| Redis 7 | 缓存、会话与任务辅助 |
| Playwright | 登录、Cookie 刷新、发布等浏览器自动化 |
| APScheduler | 定时任务调度 |
| Loguru | 日志管理 |
| 技术 | 说明 |
|---|---|
| React 18 + TypeScript | 主系统与返佣前端 |
| Vite | 开发与构建 |
| TailwindCSS | 主系统 UI 样式 |
| Zustand | 状态管理 |
| Lucide React | 图标体系 |
| 技术 | 说明 |
|---|---|
| Docker / Docker Compose | 容器化部署 |
| Nginx | 前端静态资源与反向代理 |
xianyu-auto-reply/
├── backend-web/ # 主 Web API 服务(端口 8089)
├── websocket/ # 闲鱼连接与消息处理服务(端口 8090)
├── scheduler/ # 定时任务服务(端口 8091)
├── common/ # 主系统与返佣系统共享模块
├── frontend/ # 主系统前端(端口 9000)
├── launcher/ # Windows 桌面启动器(Nuitka 打包为 EXE)
├── promotion/
│ ├── backend/ # 返佣后端(端口 8092)
│ └── frontend/ # 返佣前端(端口 9001)
├── scripts/ # CI/CD 与工具脚本
├── docker/frontend/ # 前端 Dockerfile 与 Nginx 配置
├── docker-compose.yml # 本地源码构建编排
├── deploy.sh # 一键部署脚本(自动生成远程镜像版 compose)
├── deploy_remote.sh # 远程 MySQL/Redis 一键部署脚本(自动生成 docker-compose.remote.yml)
├── update.sh # 一键更新脚本(拉取最新远程镜像)
├── build.sh # 本地源码全量构建脚本
├── build_frontend.sh # 单独构建并重启 Frontend
├── build_backend_web.sh # 单独构建并重启 Backend-Web
├── build_websocket.sh # 单独构建并重启 WebSocket
├── build_scheduler.sh # 单独构建并重启 Scheduler
├── EXE打包构建.bat # Windows 桌面启动器打包脚本
├── 离线依赖打包.bat # Windows 离线依赖打包脚本
└── README.md
| 服务 | 默认端口 | 说明 |
|---|---|---|
frontend |
9000 | 主系统前端 |
backend-web |
8089 | 主系统 API 网关、业务接口 |
websocket |
8090 | 闲鱼 WebSocket、消息收发、登录与订单联动 |
scheduler |
8091 | 定时任务执行器 |
promotion/backend |
8092 | 返佣后端 API |
promotion/frontend |
9001 | 返佣前端 |
frontend 负责界面与交互backend-web 负责大部分业务 APIwebsocket 负责闲鱼实时连接、扫码登录、消息处理scheduler 负责自动发货、评价、订单拉取、Cookie 刷新等定时任务common 提供模型、数据库、自检、公共服务与工具promotion/ 目录,前后端独立,当前不在根目录 Docker Compose 编排内/health 健康检查接口服务器已安装 Docker 与 Docker Compose 后,直接执行一键部署脚本即可:
curl -fsSL https://xy-update.zhinianboke.com/deploy.sh | sed 's/\r$//' | bash
该脚本会自动完成部署所需的配置生成、镜像拉取、旧容器清理与服务启动。
更新版本,直接执行一键更新脚本即可:
curl -fsSL https://xy-update.zhinianboke.com/update.sh | sed 's/\r$//' | bash
git clone https://github.com/zhinianboke/xianyu-auto-reply.git
cd xianyu-auto-reply
bash deploy.sh
.env 配置文件和 docker-compose.deploy.ymlhttp://服务器IP:9000http://服务器IP:8089/docsadmin / admin123后续更新:
bash update.sh
当 MySQL 和 Redis 由外部(如云数据库 RDS、独立服务器或已有实例)提供时,可使用 deploy_remote.sh。
该脚本不内置 mysql/redis 容器,仅拉取并启动 4 个应用服务(frontend / backend-web / websocket / scheduler),
数据库连接信息通过 .env.remote 配置。与方式一相同,直接远程拉取脚本执行即可:
# 1) 首次运行:自动生成 .env.remote 后退出,提示填写远程连接信息
curl -fsSL https://xy-update.zhinianboke.com/deploy_remote.sh | sed 's/\r$//' | bash
# 2) 编辑 .env.remote,填写真实的远程地址(勿填 localhost)
# MYSQL_HOST / REDIS_HOST 等
vim .env.remote
# 3) 再次运行:校验配置 → 自动生成 docker-compose.remote.yml → 拉取镜像 → 启动
curl -fsSL https://xy-update.zhinianboke.com/deploy_remote.sh | sed 's/\r$//' | bash
已克隆仓库的也可改用本地脚本:
bash deploy_remote.sh(首次生成配置后退出,填好.env.remote再次执行)。
.env.remote,每次运行自动生成 docker-compose.remote.yml,均不影响根目录原有的 .env / docker-compose.yml / docker-compose.deploy.ymlxianyu-backend-web / xianyu-websocket / xianyu-scheduler / xianyu-frontend),与方式二/方式四属于同一套部署,二者只需选其一,不要同时启动xianyu_data)并授权部署机 IP 远程访问,应用启动时会自动建表与补齐字段host.docker.internal 或宿主机内网 IP,不要填 localhost / 127.0.0.1bash build.sh rebuild
常用命令:
| 命令 | 说明 |
|---|---|
bash build.sh rebuild |
删除旧容器与镜像,重新构建并启动 |
bash build.sh start |
启动服务 |
bash build.sh stop |
停止服务 |
bash build.sh restart |
重启服务 |
bash build.sh logs |
查看实时日志 |
bash build.sh status |
查看服务状态 |
单独重建某个服务(不影响其他服务):
bash build_frontend.sh # 重建前端
bash build_backend_web.sh # 重建 Backend-Web
bash build_websocket.sh # 重建 WebSocket
bash build_scheduler.sh # 重建 Scheduler
可以使用本机 MySQL / Redis,也可以仅用 Docker 启动基础设施:
docker compose up -d mysql redis
主系统常用 .env 配置示例:
ENVIRONMENT=development
MYSQL_HOST=127.0.0.1
MYSQL_PORT=3306
MYSQL_USER=root
MYSQL_PASSWORD=root
MYSQL_DATABASE=xianyu_data
REDIS_HOST=127.0.0.1
REDIS_PORT=6379
REDIS_PASSWORD=
REDIS_DB=0
CORS_ORIGINS=*
BACKEND_WEB_PORT=8089
WEBSOCKET_PORT=8090
SCHEDULER_PORT=8091
WEBSOCKET_SERVICE_URL=http://127.0.0.1:8090
SCHEDULER_SERVICE_URL=http://127.0.0.1:8091
BACKEND_WEB_SERVICE_URL=http://127.0.0.1:8089
STATIC_DIR=static
TZ=Asia/Shanghai
# Backend-Web 服务
cd backend-web
python -m venv .venv
# Windows: .venv\Scripts\activate
# Linux/macOS: source .venv/bin/activate
pip install -e .
python -m playwright install chromium
python main.py
# WebSocket 服务
cd websocket
python -m venv .venv
# Windows: .venv\Scripts\activate
# Linux/macOS: source .venv/bin/activate
pip install -e .
python -m playwright install chromium
python main.py
# Scheduler 服务
cd scheduler
python -m venv .venv
# Windows: .venv\Scripts\activate
# Linux/macOS: source .venv/bin/activate
pip install -e .
python -m playwright install chromium
python main.py
cd frontend
npm install
npm run dev
# 返佣后端
cd promotion/backend
pip install -e .
python main.py
# 返佣前端
cd promotion/frontend
npm install
npm run dev
| 变量 | 说明 |
|---|---|
MYSQL_HOST / MYSQL_PORT / MYSQL_USER / MYSQL_PASSWORD / MYSQL_DATABASE |
MySQL 连接 |
REDIS_HOST / REDIS_PORT / REDIS_PASSWORD / REDIS_DB |
Redis 连接 |
JWT_SECRET_KEY |
JWT 密钥,由数据库统一托管(首次启动自动生成并持久化),无需手动配置 |
BACKEND_WEB_PORT / WEBSOCKET_PORT / SCHEDULER_PORT |
各服务端口 |
WEBSOCKET_SERVICE_URL / SCHEDULER_SERVICE_URL / BACKEND_WEB_SERVICE_URL |
服务间调用地址 |
BACKEND_WEB_PUBLIC_URL |
对外访问地址,用于生成文件 URL |
CORS_ORIGINS |
CORS 白名单 |
BROWSER_HEADLESS |
Playwright 是否无头运行 |
admin / admin123fy_ 前缀Asia/Shanghai)后端采用统一响应包装,业务异常也返回 HTTP 200:
{
"success": true,
"code": 200,
"message": "操作成功",
"data": {}
}
| 脚本 | 平台 | 作用 |
|---|---|---|
deploy.sh |
Linux | 生成远程镜像版 compose 并拉取镜像启动(首次部署) |
deploy_remote.sh |
Linux | 使用远程 MySQL/Redis 部署,生成 docker-compose.remote.yml 与 .env.remote 并启动应用服务 |
update.sh |
Linux | 拉取最新远程镜像并重建应用容器(后续更新) |
build.sh |
Linux | 从源码全量构建所有 Docker 镜像并启动 |
build_frontend.sh |
Linux | 单独重建并重启 Frontend 服务 |
build_backend_web.sh |
Linux | 单独重建并重启 Backend-Web 服务 |
build_websocket.sh |
Linux | 单独重建并重启 WebSocket 服务 |
build_scheduler.sh |
Linux | 单独重建并重启 Scheduler 服务 |
EXE打包构建.bat |
Windows | 使用 Nuitka 打包桌面启动器 EXE |
离线依赖打包.bat |
Windows | 打包所有 Python 依赖供离线安装 |
scripts/Pipeline脚本-xianyu-auto-reply.groovy |
Jenkins | CI/CD 流水线,构建多架构镜像并推送到阿里云 ACR |
BACKEND_WEB_PUBLIC_URL 与反向代理地址当前 docker-compose.yml 只覆盖主系统。返佣系统需要单独启动。
在对应 Python 环境执行:python -m playwright install chromium。Docker 环境依赖各服务 Dockerfile 内已安装的浏览器。
修改根目录 .env 中的端口配置后重新部署。
/bin/bash^M: 坏的解释器?脚本文件包含 Windows 换行符(CRLF),Linux 无法识别。解决方法:
# 方法一:用 sed 去除 \r 后执行
sed -i 's/\r$//' deploy.sh
bash deploy.sh
# 方法二:通过管道执行(推荐远程脚本使用)
curl -fsSL https://xy-update.zhinianboke.com/deploy.sh | sed 's/\r$//' | bash
本项目采用 GNU Affero General Public License v3.0 (AGPL-3.0) 开源协议。
⚠️ 禁止商业用途:本项目仅供学习研究使用,严禁任何形式的商业用途。
本项目仅供技术学习和研究使用,使用者需自行承担使用风险。请遵守相关平台的使用条款和法律法规。
本项目参考了以下开源项目:
感谢这些优秀的开源项目为本项目的开发提供了宝贵的参考和启发!
$ claude mcp add xianyu-auto-reply \
-- python -m otcore.mcp_server <graph>