Sign inSign up

dangerwolf/langrisser-code-scraper

By dangerwolf

•Updated 6 months ago

Image
0

186

dangerwolf/langrisser-code-scraper repository overview

⁠Langrisser-Code-Scraper (梦幻模拟战兑换码自动抓取与兑换助手)

Docker Image Size TypeScript React

这是一个基于 React (Vite) + Express + Puppeteer 构建的轻量级全栈应用。它能够自动从《梦幻模拟战》哔哩哔哩 Wiki 抓取最新的礼包兑换码,并支持多角色批量自动兑换。

通过高度优化的多阶段 Docker 构建(基于 Alpine Linux),该应用的运行环境与庞大的前端构建工具完全解耦,镜像体积极小,资源占用极低,非常适合在个人轻量级服务器(NAS/VPS)上长期挂机运行。

⁠🔗 相关链接


⁠📂 项目结构与具体文件作用

本项目采用了前后端同构(在一个仓库中)的架构设计:

Langrisser-Code-Scraper/
├── src/                  # ���端 React 源代码目录,使用 Vite 构建现代化单页应用 (SPA)。
├── server.ts             # 后端核心引擎:包含 Express API 路由、Puppeteer 无头浏览器爬虫以及定时任务 (Cron) 逻辑。
├── Dockerfile            # 极致优化的多阶段构建脚本。通过剥离冗余依赖,将镜像大小从 2.5GB 压缩至 1.2GB 左右。
├── docker-compose.yml    # 容器编排配置文件,定义了服务启动方式、端口映射、环境变量以及数据卷挂载。
├── package.json          # Node.js 依赖及脚本配置文件。
└── used_codes.json       # 运行时挂载的数据持久化文件,用于记录已经成功兑换的礼包码,防止重复请求。

⁠⚙️ 相关设置及如何动态调整

本应用将核心配置全部抽离为环境变量,你可以在部署前直接修改 docker-compose.yml 中的参数,而无需修改任何源代码或重新编译。

⁠1. 调整访问端口 (避免冲突)

如果你宿主机的 3000 端口已被其他服务占用,可以直接修改 docker-compose.yml 里的 ports 映射:

ports:
  - "8888:3000"  # 左侧为你的外网访问端口,右侧为容器内部端口。修改左侧即可(例如改为 8888)。
⁠2. 动态调整抓取频率 (Cron Schedule)

默认情况下,爬虫每 15 分钟执行一次。你可以通过修改环境变量 CRON_SCHEDULE 来动态调整(使用标准的 Cron 表达式):

environment:
  - CRON_SCHEDULE=*/30 * * * *  # 修改为每 30 分钟执行一次
  # - CRON_SCHEDULE=0 * * * *   # 或者修改为每小时执行一次
⁠3. 数据持久化保护 (极其关键)

为防止容器重启后“已使用兑换码”的历史记录丢失,docker-compose.yml 中配置了 volume 映射:

volumes:
  - ./used_codes.json:/app/used_codes.json

注意:部署前必须在宿主机手动创建好这个空文件(见下方部署指南),否则 Docker 会错误地创建一个同名文件夹。


⁠🚀 极速部署指南 (基于 Docker Compose)

请确保你的服务器已安装 Docker 和 Docker Compose。

⁠步骤 1: 拉取项目配置

如果你直接使用 Docker Hub 的镜像,只需在服务器新建一个目录,并创建 docker-compose.yml 文件(内容参考本项目中的配置)。如果基于源码部署,请 git clone 本仓库并进入根目录。

⁠步骤 2: 初始化持久化文件 (必做)

在包含 docker-compose.yml 的目录下,执行以下命令创建一个空的 JSON 文件,用于存储已兑换的记录:

echo "[]" > used_codes.json
⁠步骤 3: 一键启动服务

使用以下命令在后台启动服务:

选项 A: 直接使用线上镜像 (推荐,最快) 在 docker-compose.yml 的 services.langrisser-scraper 下添加 image: dangerwolf/langrisser-code-scraper:latest 并删除 build: .,然后运行:

docker-compose up -d

选项 B: 基于源码本地构建镜像

# 第一次构建并启动
docker-compose up -d --build
⁠步骤 4: 查看运行状态

你可以通过以下命令实时查看爬虫在后台的抓取日志与工作状态:

docker logs -f langrisser-scraper

现在,打开浏览器访问 http://你的服务器IP:你设置的端口 即可进入可视化管理界面!


⁠👨‍💻 技术栈

  • Frontend: React 19, Vite, TailwindCSS, Motion
  • Backend: Node.js, Express, Puppeteer (Headless Web Scraping)
  • Infrastructure: Docker, Alpine Linux, Docker Compose

Tag summary

Content type

Image

Digest

sha256:0d765ead9…

Size

447.3 MB

Last updated

6 months ago

docker pull dangerwolf/langrisser-code-scraper:1.1.1