基于 FastAPI + React + MySQL + Redis + Playwright 的闲鱼多账号自动化系统。
主系统负责账号管理、消息收发、自动回复、自动发货、商品发布与后台管理;promotion 子项目负责返佣账号、选品规则、素材库、发布规则、删除规则和相关修复任务。
🔴 诚邀各位开发者提交pr,完善系统
🔴 承接各类项目定制,各类项目均可,有需要可联系,另外我菜,不一定都会
🔴 我用夸克网盘给你分享了「自动发货」,点击链接或复制整段内容,打开「夸克网盘APP」即可获取。
🔴 /
79313YhCQU:/
| 微信群 | 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 | 前端静态资源与反向代理 |
- Python 3.11+
- Node.js 18+
- MySQL 8.0+
- Redis 6+
- Chromium / Chrome(Playwright 相关功能)
- Docker 20.10+
- Docker Compose 2.0+
- 最低 2 核 CPU / 4GB 内存
- 推荐 4 核 CPU / 8GB 内存
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)
├── 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 依赖链:mysql/redis → backend-web → websocket → scheduler;frontend → backend-web
服务器已安装 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$//' | bashgit clone https://github.com/zhinianboke/xianyu-auto-reply.git
cd xianyu-auto-reply
bash deploy.sh- 首次运行会自动生成
.env配置文件和docker-compose.deploy.yml - 从阿里云镜像仓库拉取预构建镜像并启动
- 如果检测到加密版容器会自动清理(保留数据卷)
- 部署完成后默认访问地址:
- 前端:
http://服务器IP:9000 - API 文档:
http://服务器IP:8089/docs - 默认账号:
admin/admin123
- 前端:
后续更新:
bash update.shbash 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.pycd 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/admin123 - 返佣系统启动时执行独立的数据库自检
- 返佣系统表统一使用
fy_前缀 - 不依赖外键约束,关系由代码维护
- 所有时间统一使用北京时间(
Asia/Shanghai)
后端采用统一响应包装,业务异常也返回 HTTP 200:
{
"success": true,
"code": 200,
"message": "操作成功",
"data": {}
}| 脚本 | 平台 | 作用 |
|---|---|---|
deploy.sh |
Linux | 生成远程镜像版 compose 并拉取镜像启动(首次部署) |
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 |
- JWT 认证:主系统与返佣系统都使用 JWT 做登录态控制
- 密码存储:密码使用哈希方式保存
- SQL 注入防护:数据库访问使用参数化查询
- XSS 防护:前端输入与展示做好校验与转义
- CORS 控制:生产环境应限制到明确域名
- 立即修改默认管理员密码
- JWT 密钥由数据库统一托管,首次启动自动生成强随机密钥(无需手动设置)
- 设置正确的
BACKEND_WEB_PUBLIC_URL与反向代理地址 - 为外网入口配置 HTTPS
- 定期备份 MySQL 与静态资源目录
- 确保 Playwright 浏览器已正确安装
当前 docker-compose.yml 只覆盖主系统。返佣系统需要单独启动。
在对应 Python 环境执行:python -m playwright install chromium。Docker 环境依赖各服务 Dockerfile 内已安装的浏览器。
修改根目录 .env 中的端口配置后重新部署。
脚本文件包含 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) 开源协议。
本项目仅供技术学习和研究使用,使用者需自行承担使用风险。请遵守相关平台的使用条款和法律法规。
- 本项目不对使用本系统造成的任何后果负责
- 请勿用于违反闲鱼平台规则的行为
- 请勿用于商业用途
- 使用本系统可能存在账号风险,请谨慎使用
本项目参考了以下开源项目:
- XianYuApis - 提供了闲鱼API接口的技术参考
- XianyuAutoAgent - 提供了自动化处理的实现思路
- myfish - 提供了扫码登录的实现思路
感谢这些优秀的开源项目为本项目的开发提供了宝贵的参考和启发!




