网盘链接检测系统PanCheck

简介

什么是 PanCheck ?

PanCheck 是一个网盘链接有效性检测系统,专为用户提供批量检测多种主流网盘平台分享链接的有效性。它能够快速确认链接是否仍然可用,从而帮助用户管理和维护网盘资源。

主要特点

  • 🔍 多平台支持:支持检测 9 种主流网盘平台的链接
  • ⚡ 高性能检测:支持并发检测,可配置检测频率和超时时间
  • 📊 数据统计:提供详细的检测统计和数据分析
  • 🔄 定时任务:支持创建定时检测任务,自动检测链接有效性
  • 💾 数据持久化:使用 MySQL 存储检测记录,Redis 缓存失效链接
  • 🎨 现代化界面:基于 React + TypeScript 的现代化管理后台
  • 🐳 容器化部署:提供 Docker Compose 一键部署方案

支持 9 种网盘

  • 夸克网盘
  • UC网盘
  • 百度网盘
  • 天翼云盘
  • 123网盘
  • 115网盘
  • 阿里云盘
  • 迅雷云盘
  • 中国移动云盘

总之,PanCheck 是一个高效、方便的工具,能够帮助用户轻松管理和检查网盘分享链接的有效性,适用于广泛的场景和用户需求。

安装

在群晖上以 Docker 方式安装。

采用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
services:
pancheck:
image: lampon/pancheck:latest
container_name: pancheck
ports:
- "8774:8080"
environment:
- SERVER_PORT=8080 # 服务端口
- SERVER_MODE=release # 服务模式
- SERVER_CORS_ORIGINS=* # 跨域请求允许的源
- DATABASE_TYPE=mysql # 数据库类型
- DATABASE_HOST=db # 数据库地址
- DATABASE_PORT=3306 # 数据库端口
- DATABASE_USER=root # 数据库用户名
- DATABASE_PASSWORD=your_password # 数据库密码
- DATABASE_DATABASE=pancheck # 数据库名称
- DATABASE_CHARSET=utf8mb4 # 数据库字符集
- CHECKER_DEFAULT_CONCURRENCY=5 # 默认并发数
- CHECKER_TIMEOUT=30 # 超时时间(秒)
- REDIS_ENABLED=true # 是否启用Redis
- REDIS_HOST=redis # Redis地址
- REDIS_PORT=6379 # Redis端口
- REDIS_USERNAME= # Redis用户名
- REDIS_PASSWORD= # Redis密码
- REDIS_INVALID_TTL=168 # 失效链接缓存时间(小时)
- ADMIN_PASSWORD=admin123 # 后台管理密码
volumes:
- ./data:/app/data
restart: unless-stopped
depends_on:
- db
- redis
healthcheck:
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:8080/api/v1/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s

db:
image: mysql:8.0
container_name: pancheck-db
environment:
- MYSQL_ROOT_PASSWORD=your_password
- MYSQL_DATABASE=pancheck
- MYSQL_CHARACTER_SET_SERVER=utf8mb4
- MYSQL_COLLATION_SERVER=utf8mb4_unicode_ci
volumes:
- ./mysql:/var/lib/mysql
restart: unless-stopped
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p$$MYSQL_ROOT_PASSWORD"]
interval: 10s
timeout: 5s
retries: 5

redis:
image: redis:latest
container_name: pancheck-redis
# ports:
# - "6379:6379"
volumes:
- ./redis:/data
restart: unless-stopped
command: redis-server --appendonly yes
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 3s
retries: 3

关于环境变量的简单说明

容器 环境变量 默认值 说明
PanCheck 主服务 SERVER_PORT 8080 服务使用的端口。
SERVER_MODE release 服务运行模式,如 releasedebug
SERVER_CORS_ORIGINS * 允许的跨域请求源,* 表示允许所有源。
DATABASE_TYPE mysql 使用的数据库类型。
DATABASE_HOST db 数据库地址,Docker 中使用服务名。
DATABASE_PORT 3306 数据库端口。
DATABASE_USER root 连接数据库的用户名。
DATABASE_PASSWORD your_password 数据库的用户密码,建议更改为安全的密码。
DATABASE_DATABASE pancheck 数据库名称。
DATABASE_CHARSET utf8mb4 数据库字符集。
CHECKER_DEFAULT_CONCURRENCY 5 默认并发检测数。
CHECKER_TIMEOUT 30 链接检测的超时时间(秒)。
REDIS_ENABLED true 是否启用 Redis 缓存。
REDIS_HOST redis Redis 服务器地址。
REDIS_PORT 6379 Redis 端口。
REDIS_USERNAME Redis 用户名(可选)。
REDIS_PASSWORD Redis 密码(可选)。
REDIS_INVALID_TTL 168 失效链接在 Redis 缓存中的存活时间(小时)。
ADMIN_PASSWORD admin123 后台管理界面的密码,建议修改为更安全的密码。
MySQL 数据库 MYSQL_ROOT_PASSWORD your_password MySQL root 用户的密码。
MYSQL_DATABASE pancheck 默认创建的数据库名称。
MYSQL_CHARACTER_SET_SERVER utf8mb4 数据库字符集。
MYSQL_COLLATION_SERVER utf8mb4_unicode_ci 数据库排序规则。
Redis (无) Redis 配置不需要额外环境变量,使用默认设置。

然后通过 SSH 登录到您的群晖,执行下面的命令:

1
2
3
4
5
6
7
8
9
10
# 新建文件夹 pancheck 和 子目录
mkdir -p /volume1/docker/pancheck/{data,mysql,redis}

# 进入 pancheck 目录
cd /volume1/docker/pancheck

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

初始化的时间有点长

在浏览器中输入 http://群晖IP:8774 就能看到主界面

丟入一个链接,很快就能检测出结果

整合到 OmniBox

OmniBox 的管理后台,设置 网盘检测

启用 网盘检测后,前端进行搜索的时候会启用 PancCheck 应用进行无效链接过滤

而未启用 网盘检测 时,可以搜到更多结果

从数量上看,多了 4 个,说明有 4 个链接是无效的

后台服务

在浏览器中输入 http://群晖IP:8774/admin/login 就能看到登录界面

密码为环境变量 ADMIN_PASSWORD 中设定的值

登录成功后的主界面,失效链接数符合我们在前端看到的结果

PanCheck 还提供 API 接口检测网盘链接,有兴趣可以看官方的详细说明

参考文档

Lampon/PanCheck
地址:https://github.com/Lampon/PanCheck