Skip to content

About

小宝网盘搜索引擎:基于 PanHub(MIT)的自托管网盘搜索,检索夸克、阿里云盘、百度网盘、115、迅雷等公开分享链接。免登录、无广告,Docker 一键部署。Self-hosted netdisk search engine based on PanHub (MIT).

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

 
 

Latest commit

 

History

631 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

小宝网盘搜索引擎 · netdisk-search

自托管的网盘搜索引擎:检索夸克、阿里云盘、百度网盘、115、迅雷等平台的公开分享链接,免登录、无广告。

在线使用:https://pan.xbkjz.icu

本项目基于 PanHub 最后一个 MIT 许可版本(commit 5033c02,2026-08-20)二次开发,遵循 MIT 协议,原版权声明保留在 LICENSE。

与上游的主要区别

  • 去掉公众号登录、社交链接和悬浮组件,打开即用
  • 界面改为纯色风格,顶部导航接入小宝系列站点
  • 豆瓣榜单改为上一页 / 下一页翻页
  • 新增页脚免责声明

免责声明:本项目仅搜索互联网公开分享的链接,不存储、上传或制作任何文件,仅供学习交流。


✨ 核心特性

🔍 智能搜索

  • 多源聚合:同时搜索 Telegram 80+ 频道 + 20+ 第三方插件
  • 优先级调度:高优先级频道优先返回,首屏结果提速 50%+
  • 批量并发:独立配置优先/普通频道并发数,充分利用网络带宽
  • 暂停/继续:搜索过程可随时暂停,断点续跑不丢结果
  • 插件熔断:失败插件自动降级 5 分钟,避免拖慢整体搜索
  • 请求超时取消:AbortController 真正取消超时请求,不泄漏连接
  • 智能缓存:LRU 淘汰 + 内存监控 + 过期清理

📊 豆瓣影视榜单

  • 12 个分类:Top250、剧情、喜剧、动作、爱情、科幻、动画、悬疑、犯罪、战争、纪录片、电视剧
  • JSON API 驱动:使用豆瓣内部 API 获取结构化数据,无需解析 HTML(Top250 除外)
  • 24 小时缓存:每个分类一天只请求一次,减少对豆瓣的压力
  • 无限滚动:滚动到底部自动加载更多内容
  • 一键搜索:点击任意影视,自动发起网盘搜索

🔗 链接有效性检测(服务端探活)

  • 自动标记失效链接:搜索结果中的失效链接自动加删除线 + 红色"已失效"角标,需密码的标橙色"需密码"
  • 服务端探活:无需安装任何扩展,服务端直连各网盘匿名分享 API 判定,零安装成本
  • 平台适配:夸克、阿里、百度、115、天翼、迅雷、123、UC、移动云盘
  • 分级缓存:ok 24h / 失效 6h / 需密码 12h,同一链接不重复探活,并发池限流防被网盘接口封禁

🔥 热门搜索

  • 实时热搜:展示其他用户搜索词,点击即可搜索
  • 数据持久化:Turso(libSQL,Worker/Docker/本地统一存储,唯一真源)
  • 搜索统计:实时展示热搜榜使用次数

🎨 用户体验

  • 深色模式:完整支持深色主题,自动跟随系统偏好
  • 响应式设计:完美适配桌面、平板、手机
  • 密码门:可配置 SEARCH_PASSWORD,密码爆破防护(5 次失败锁定)
  • 优雅降级:单个插件/频道失败不影响整体

🛡️ 安全与稳定性

  • 限流防护:API 路由限流 + unlock 密码爆破防护
  • SSRF 防护:图片代理白名单 + URL 严格校验
  • 输入校验:关键词长度限制、并发数范围校验
  • 错误处理:统一的 createError 错误响应
  • 125+ 测试用例:核心逻辑全覆盖

🚀 快速开始

Docker 部署(推荐)

git clone https://github.com/HenryYannis/netdisk-search.git
cd netdisk-search
docker compose up -d --build

服务默认只监听本机 127.0.0.1:4000(见 docker-compose.yml),需通过 Cloudflare Tunnel 或 Nginx 等反向代理对外提供访问;本机可用 curl http://127.0.0.1:4000/api/health 自检。热搜数据保存在 ./data。

由于开启了 TRUST_PROXY=1(信任 CF-Connecting-IP 头做限流),请不要把 4000 端口直接暴露到公网,否则客户端可伪造该头绕过限流。若不经过代理、需要直接用 IP 访问,请同时把端口改回 "4000:4000" 并删除 TRUST_PROXY。

搜索依赖抓取 Telegram 频道,服务器需要能直接访问 Telegram(一般部署在海外服务器)。

本地开发

npm install
npm run dev      # 开发服务器
npm test         # 运行测试
npm run build    # 构建生产版本

📖 使用指南

搜索流程

  1. 输入关键词并回车开始搜索
  2. 快速结果:优先频道先返回(~50ms)
  3. 深度结果:剩余频道继续加载
  4. 自动合并:结果去重、按时间排序、分类型展示

链接有效性检测

搜索结果加载后,服务端自动对当前可见链接探活(异步,不阻塞搜索):

  • 失效链接:红色"已失效"角标 + 删除线
  • 需密码链接:橙色"需密码"角标
  • 探活结果有分级缓存,同一链接不会重复请求

设置面板

右上角设置按钮可配置:

  • 插件管理:启用/禁用第三方搜索插件
  • TG 频道:配置优先/普通频道列表
  • 性能参数:并发数(1-16)、超时时间(1000-60000ms)

⚙️ 环境变量

变量名 默认值 说明
LOG_LEVEL info 日志级别(debug/info/warn/error),支持白名单校验
NITRO_PRESET auto-detect 部署预设(vercel/cloudflare/node-server)
PORT 4000 服务端口
SEARCH_PASSWORD 空 非空时启用密码门,搜索时需输入密码(5 次失败锁定 5 分钟)
TURSO_URL / TURSO_AUTH_TOKEN 空 热搜存储(Turso libSQL,必配)。未配置时热搜功能不可用(接口报错,不降级)

部署差异说明

特性 Docker/Node CF Workers / Vercel
进程内缓存 ✅ 持久 ❌ 每个 isolate 独立
热搜数据持久化 ✅ Turso ✅ Turso(需配 TURSO_URL,未配则热搜不可用)
插件健康状态 ✅ 持久 ❌ 每次冷启动重置
链接有效性检测 ✅ 持久缓存 ✅(探活缓存按实例独立)

🏗️ 技术架构

前端技术栈

  • 框架:Nuxt 4 + Vue 3
  • 样式:原生 CSS(无框架依赖)
  • 状态管理:Vue Composition API
  • 类型安全:TypeScript

后端技术栈

  • 运行时:Nitro(Nuxt 内置)
  • HTML 解析:Cheerio(TG 频道 + 插件)
  • HTTP 客户端:ofetch
  • 并发控制:p-limit
  • 数据库:Turso(libSQL,热搜持久化,HTTP 驱动跨部署通用)
  • 测试框架:Vitest

核心模块

server/core/
├── services/
│   ├── searchService.ts    # 搜索编排器(熔断器 + AbortController + 缓存)
│   ├── tg.ts               # TG 频道抓取
│   ├── doubanHotService.ts # 豆瓣榜单(JSON API + 24h 缓存)
│   ├── hotSearchService.ts # 热搜持久化
│   └── ...
├── cache/
│   └── memoryCache.ts      # LRU 缓存
├── plugins/                # 20+ 搜索插件
│   ├── manager.ts          # 插件注册
│   ├── pluginHealth.ts     # 熔断器
│   └── ...
└── utils/
    ├── fetch.ts            # 网络请求(重试 + 超时)
    ├── errors.ts           # 错误分类
    ├── searchKeyword.ts    # CJK 关键词变体
    └── logger.ts           # 日志

server/api/
└── check.post.ts           # 链接有效性检测(服务端探活)

composables/
└── useLinkCheck.ts         # 前端异步懒查(角标渲染)

📦 支持的网盘平台

平台 图标 说明
阿里云盘 ☁️ 支持分享链接解析
夸克网盘 🔎 支持分享链接解析
百度网盘 🧰 支持分享链接解析
115网盘 📦 支持分享链接解析
迅雷云盘 ⚡ 支持分享链接解析
UC网盘 🧭 支持分享链接解析
天翼云盘 ☁️ 支持分享链接解析
123网盘 # 支持分享链接解析
移动云盘 📱 支持分享链接解析
磁力链接 🧲 支持 magnet 提取

🤝 贡献指南

欢迎提交 Issue 和 Pull Request!

开发规范

  • 使用 TypeScript 编写
  • 核心功能必须包含单元测试(TDD 优先)
  • 提交前运行 npm test
  • 遵循 Conventional Commits

测试

# 运行所有测试(125+ 测试用例)
npm test

# 监听模式
npm test:watch

# 生成覆盖率报告
npm test:coverage

🛡️ 免责声明

  • 本项目仅用于技术学习与搜索聚合演示
  • 不存储、不传播任何受版权保护的内容
  • 所有资源链接来自公开网络(Telegram 频道、第三方网站)
  • 请遵守当地法律法规与平台使用条款
  • 下载后请于 24 小时内删除,支持正版
  • 侵权问题请联系源站处理,或联系本站删除相关搜索结果

📄 许可证

MIT License


🙏 鸣谢


在线使用:https://pan.xbkjz.icu

About

小宝网盘搜索引擎:基于 PanHub(MIT)的自托管网盘搜索,检索夸克、阿里云盘、百度网盘、115、迅雷等公开分享链接。免登录、无广告,Docker 一键部署。Self-hosted netdisk search engine based on PanHub (MIT).

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages