PanCheck 是一个功能强大的网盘链接有效性检测系统,支持批量检测多种主流网盘平台的分享链接是否有效。
- 🔍 多平台支持:支持检测 9 种主流网盘平台的链接
- ⚡ 高性能检测:支持并发检测,可配置检测频率和超时时间
- 📊 数据统计:提供详细的检测统计和数据分析
- 🔄 定时任务:支持创建定时检测任务,自动检测链接有效性
- 💾 数据持久化:使用 MySQL 存储检测记录,Redis 缓存失效链接
- 🎨 现代化界面:基于 React + TypeScript 的现代化管理后台
- 🐳 容器化部署:提供 Docker Compose 一键部署方案
- 夸克网盘
- UC网盘
- 百度网盘
- 天翼云盘
- 123网盘
- 115网盘
- 阿里云盘
- 迅雷云盘
- 中国移动云盘
- Docker 和 Docker Compose
- 或 Go 1.23+ 和 Node.js 18+(本地开发)
docker-compose.yml
services:
pancheck:
image: lampon/pancheck:latest
container_name: pancheck
ports:
- "6080:6080"
environment:
- SERVER_PORT=6080 # 服务端口
- 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:6080/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_data:/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:/data
restart: unless-stopped
command: redis-server --appendonly yes
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 3s
retries: 3
volumes:
redis-data:
mysql_data:
driver: local主要配置项说明:
# 服务器配置
SERVER_PORT=6080 # 服务端口
SERVER_MODE=release # 服务模式(release/debug)
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 配置(可选)
REDIS_ENABLED=true # 是否启用 Redis
REDIS_HOST=redis # Redis 地址
REDIS_PORT=6379 # Redis 端口
REDIS_PASSWORD= # Redis 密码(可选)
REDIS_INVALID_TTL=168 # 失效链接缓存时间(小时)
# 管理员密码配置
ADMIN_PASSWORD=admin123 # 后台管理密码(请修改)服务启动后,访问 http://localhost:6080 即可使用。
- 安装依赖
go mod download- 配置数据库
创建 MySQL 数据库,并配置 .env 文件中的数据库连接信息。
- 运行服务
go run cmd/api/main.go- 安装依赖
cd frontend
pnpm install- 开发模式运行
pnpm run dev- 构建生产版本
pnpm run build构建后的文件会输出到 frontend/dist 目录。
接口地址: POST /api/v1/links/check
请求头:
Content-Type: application/json
请求体:
{
"links": [
"https://pan.baidu.com/s/1example",
"https://www.aliyundrive.com/s/2example"
],
"selectedPlatforms": ["baidu", "aliyun"] // 可选,指定要检测的平台
}参数说明:
links(必需): 要检测的链接数组,每行一个链接selectedPlatforms(可选): 指定要检测的平台数组,如果为空或未提供则检测所有平台
selectedPlatforms 可选值:
| 参数值 | 对应网盘平台 |
|---|---|
quark |
夸克网盘 |
uc |
UC网盘 |
baidu |
百度网盘 |
tianyi |
天翼云盘 |
pan123 |
123网盘 |
pan115 |
115网盘 |
aliyun |
阿里云盘 |
xunlei |
迅雷云盘 |
cmcc |
中国移动云盘 |
示例:
{
"links": [
"https://pan.baidu.com/s/1example",
"https://www.aliyundrive.com/s/2example",
"https://pan.quark.cn/s/3example"
],
"selectedPlatforms": ["baidu", "aliyun", "quark"] // 只检测这三个平台
}响应示例:
{
"submission_id": 1,
"valid_links": [
"https://pan.baidu.com/s/1example"
],
"invalid_links": [
"https://www.aliyundrive.com/s/2example"
],
"pending_links": [],
"total_duration": 2.5
}响应字段说明:
submission_id: 提交记录 IDvalid_links: 有效链接列表invalid_links: 失效链接列表pending_links: 待检测链接列表(可能因频率限制等原因延迟检测)total_duration: 检测总耗时(秒)
使用示例(cURL):
curl -X POST http://localhost:6080/api/v1/links/check \
-H "Content-Type: application/json" \
-d '{
"links": [
"https://pan.baidu.com/s/1example",
"https://www.aliyundrive.com/s/2example"
]
}'使用示例(JavaScript):
const response = await fetch('http://localhost:6080/api/v1/links/check', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
links: [
'https://pan.baidu.com/s/1example',
'https://www.aliyundrive.com/s/2example'
],
selectedPlatforms: ['baidu', 'aliyun'] // 可选
})
});
const result = await response.json();
console.log('有效链接:', result.valid_links);
console.log('失效链接:', result.invalid_links);-
在浏览器中访问:
http://localhost:6080/admin/login -
输入管理员密码(默认密码在
.env文件中的ADMIN_PASSWORD配置,默认值为admin) -
登录成功后,可以访问以下功能:
- 仪表盘 (
/admin/dashboard): 查看检测统计、数据概览 - 设置 (
/admin/settings): 配置检测频率、Redis 缓存等 - 定时任务 (
/admin/scheduled-tasks): 创建和管理定时检测任务
- 仪表盘 (
修改 .env 文件中的 ADMIN_PASSWORD 配置项,然后重启服务:
docker-compose restart pancheck或在 docker-compose.yml 中直接修改 ADMIN_PASSWORD 环境变量。
可以在管理后台的设置页面配置各平台的检测参数:
- 并发数 (Concurrency): 同时检测的链接数量
- 请求延迟 (Request Delay): 每次请求之间的延迟(毫秒)
- 每秒最大请求数 (Max Requests Per Second): 限制请求频率
- 缓存 TTL (Cache TTL): 失效链接缓存时间(小时)
启用 Redis 可以缓存失效链接,避免重复检测,提高性能。在 .env 文件中配置:
REDIS_ENABLED=true
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=your_redis_password
REDIS_INVALID_TTL=168 # 失效链接缓存 168 小时(7天)- 检查网络连接是否正常
- 某些平台可能有频率限制,适当调整检测频率配置
- 查看后台日志了解详细错误信息
- 确认服务已正常启动
- 检查防火墙设置
- 确认访问地址正确:
http://localhost:6080/admin/login