# crawl-res
**Repository Path**: elfbobo_admin_admin/crawl-res
## Basic Information
- **Project Name**: crawl-res
- **Description**: 触探 (Crawl-Res) 是一款基于 Django + Scrapy + Celery 开发的全流程自动化资源检索系统,采用“配置即爬虫”的插件化设计,支持多站点异步并行抓取、智能链接提取与邮件自动推送,无需编写代码即可快速适配全网资源站。
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2026-01-05
- **Last Updated**: 2026-01-05
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README

# 触探 (Crawl-Res)
**全网资源异步检索与自动化通知系统**
[](LICENSE)
[](https://www.python.org/)
[](https://www.postgresql.org/)
[](https://redis.io/)
[](https://www.djangoproject.com/)
[]()
在线演示 •
核心亮点 •
部署指南 •
提交Bug
触探是一款专为资源站长、情报员打造的**全流程自动化检索工具**。
**核心能力**:通过在后台数据库配置站点规则,即可像“安装插件”一样快速适配全网资源站,实现“配置化爬虫 -> 异步并行检索 -> 智能链接提取 -> 邮件自动推送”的闭环。
---
## 🌐 在线演示 (Demo)
* **🔍 搜索前端**:[https://crawl.ucmao.cn](https://crawl.ucmao.cn) (极简搜索入口,体验异步推送逻辑)
* **⚙️ 管理后台**: [https://crawl.ucmao.cn/admin](https://crawl.ucmao.cn/admin)
* **管理账号**: `admin` | **管理密码**: `admin123`
---
## ✨ 核心亮点
* **🧩 插件化配置引擎**:**无需编写一行代码!** 采用“配置即爬虫”的设计理念,通过定义站点采集规则,支持在后台可视化增删改查,实现分钟级快速适配新站点。
* **🚀 万能匹配协议**:支持 GET/POST 请求、自定义 Headers 伪装、动态变量提取(如 CSRF Token 自动流转)及双级跳转解析,能够兼容大部分资源网站。
* **📧 智能通知闭环**:任务异步执行,完成后自动通过邮件将资源链接发送至用户邮箱,支持结果持久化与 CSV 导出。
* **🛡️ 完善的管理系统**:内置邮箱黑白名单规则、系统级限流策略(分钟/小时/天)、任务缓存机制,确保系统在高并发下的稳定性。
---
## 🏗️ 技术架构
### 架构流转图
```text
Web 前端 (提交关键词)
→ Django 后端 (任务分发)
→ Redis 队列 (消息中转)
→ Celery Worker (驱动 Scrapy 引擎)
→ 目标资源站 (根据配置动态匹配)
← 提取资源链接
← 邮件/系统通知 (异步回传)
```
### 技术栈矩阵
| 维度 | 技术选型 |
| --- | --- |
| **核心框架** | Django 4.2 |
| **任务调度** | Celery + Redis |
| **爬虫引擎** | Scrapy |
| **数据存储** | PostgreSQL 12+ |
| **前端 UI** | Tailwind CSS + SweetAlert2 |
---
## 💾 支持站点矩阵
> **特性**:通过后台简单配置,您可以快速将任何资源网站转化为系统的“搜索插件”。
| 站点 Key | 站点名称 | 状态 | 站点 Key | 站点名称 | 状态 |
| --- | --- | --- | --- | --- | --- |
| **ptger** | PTGer | ✅ | **zy6789o** | 资源云 | ✅ |
| **ahfi** | Ahfi短剧 | ✅ | **lbbb** | LBBB短剧 | ✅ |
| **ycubbs** | YCU影视 | ✅ | **kuleu** | 酷乐鱼 | ✅ |
| **gogopanso** | GoGo盘搜 | ✅ | **funletu** | 趣乐兔 | ✅ |
| **so252035** | 252035搜索 | ✅ | **uuxiao** | 悠悠小站 | ✅ |
| **jikepan** | 即刻盘 | ✅ | **jutoushe** | 剧透社 | ✅ |
| **feikuai** | 飞快TV | ✅ | **dyyjmax** | 电影云集 | ✅ |
| **duanjugou** | 短剧狗 | ✅ | **aliupan** | 阿里U盘 | ✅ |
| **daishu** | 袋鼠短剧网 | ✅ | **ash** | ASH搜剧助手 | ✅ |
| **ajie** | A姐分享 | ✅ | **cilixiong** | 磁力熊 | ✅ |
> **提示**:以上仅为部分展示,另有 30+ 站点正陆续适配中。
---
## ⚙️ 系统配置参数 (SystemConfig)
系统内置邮件发送限流(分钟 / 小时 / 天多级控制)、关键词与任务缓存机制、资源广场展示与过期策略,以及爬虫任务超时与结果有效期控制,所有参数均可按需调整以平衡性能、稳定性与资源消耗。
---
## 🚀 快速开始
### 1. 环境准备
* **Python**: 3.8+ | **PostgreSQL**: 12+ | **Redis**: 5.0+缓存与消息中间件
### 2. 环境变量配置
项目通过 `.env` 文件配置环境变量,把项目根目录`.env.example` 重命名为 `.env` 文件:
```bash
# 数据库配置
DB_ENGINE=django.db.backends.postgresql
DB_NAME=crawl_res_db
DB_USER=postgres
DB_PASSWORD=your_password
DB_HOST=localhost
DB_PORT=5432
# Redis 配置(Celery 和缓存)
CELERY_BROKER_URL=redis://localhost:6379/0
CELERY_RESULT_BACKEND=django-db
CACHE_BACKEND=redis
CACHE_URL=redis://localhost:6379/1
# REDIS_URL=redis://localhost:6379/0 # 可选,用于限流功能
# 站点配置
# SITE_BASE_URL 用于:1.邮件中的链接生成 2.自动配置 ALLOWED_HOSTS 和 CSRF_TRUSTED_ORIGINS
# 如果使用 Nginx 反向代理,请配置为对外访问的域名(标准端口可不写端口号)
SITE_BASE_URL=http://your-domain:5008
# 邮件配置(假设是163邮箱,用于发送通知邮件)
EMAIL_HOST=smtp.163.com
EMAIL_PORT=465
EMAIL_USE_SSL=true
EMAIL_HOST_USER=your_email@163.com
EMAIL_HOST_PASSWORD=your_email_password
EMAIL_FROM=your_email@163.com
```
**验证服务状态**:
```bash
# 检查 PostgreSQL
pg_isready -h localhost -p 5432
# 检查 Redis
redis-cli ping
# 应该返回: PONG
```
### 3. 部署步骤
```bash
# 获取源码
git clone https://github.com/ucmao/crawl-res.git && cd crawl-res
# 初始化环境
python3 -m venv venv && source venv/bin/activate
pip install -r requirements.txt
# 数据库迁移与初始化
# 注意:执行以下命令前,请确保 PostgreSQL 服务已启动
# 如果 PostgreSQL 未启动,会提示连接错误
python manage.py migrate
python manage.py createsuperuser # 创建管理员账号(用于登录管理后台)
# 注意:执行以下命令前,请确保 Redis 服务已启动
# 如果 Redis 未启动,会提示连接错误
python manage.py init_system_configs
python manage.py import_sites_yaml # 从 config/sites.yaml 导入预设站点
# 生产环境:收集静态文件(logo.png、favicon.ico 等)
# 执行此命令后,所有静态文件会收集到 staticfiles/ 目录
python manage.py collectstatic --noinput
```
**静态文件说明**:
- 开发环境(DEBUG=True):Django 会自动提供静态文件
- 生产环境(DEBUG=False):需要运行 `collectstatic` 命令收集静态文件到 `staticfiles/` 目录
- 如果使用 Nginx 等 Web 服务器,建议配置 Nginx 直接提供静态文件,性能更好
### 4. 启动指令
**重要提示**:启动前请确保以下服务正在运行:
- ☑️ PostgreSQL 数据库服务
- ☑️ Redis 服务(用于 Celery 任务队列和缓存)
**开发模式(前台运行)**:
```bash
# 启动 Web 服务 (终端1)
python manage.py runserver
# 启动 Celery Worker (终端2)
celery -A scraper.celery worker --loglevel=info
```
**生产模式(后台常驻)**:
```bash
# 启动 Web 服务(后台运行,所有日志统一保存到 logs/crawl_res.log)
nohup python manage.py runserver > /dev/null 2>&1 &
# 启动 Celery Worker(后台运行,所有日志统一保存到 logs/crawl_res.log)
nohup celery -A scraper.celery worker -l info > /dev/null 2>&1 &
```
> **提示**:日志配置已统一保存到 `logs/crawl_res.log`,包含 Django 框架、Celery 任务、应用代码等所有日志。
---
## 📂 项目结构
```text
crawl-res/
├── apps/search/ # Django 主应用(核心业务)
│ ├── models.py # 数据模型(任务/结果/站点配置)
│ ├── views.py # 视图(前端页面 + 管理后台)
│ ├── tasks.py # Celery 异步任务(爬取/邮件)
│ ├── templates/ # 前端/后台模板文件
│ └── management/commands/ # 自定义管理命令(导入配置/初始化)
├── scraper/ # Scrapy 爬虫模块
│ ├── spiders/
│ │ └── universal.py # 通用爬虫引擎(核心)
│ ├── pipelines.py # 爬虫数据入库管道
│ └── settings.py # Scrapy 配置
├── config/ # 配置文件目录
│ ├── sites.yaml # 站点配置模板
│ └── rules.yaml # 网盘识别规则
├── static/ # 静态资源(图片/图标)
├── manage.py # Django 管理脚本
├── requirements.txt # 项目依赖
├── LICENSE # MIT 许可证
└── README.md # 项目文档
```
---
## 📩 联系作者
如果您在安装、使用过程中遇到问题,或有定制需求,请通过以下方式联系:
* **微信 (WeChat)**:csdnxr
* **QQ**:294323976
* **邮箱 (Email)**:leoucmao@gmail.com
* **Bug反馈**:[GitHub Issues](https://github.com/ucmao/crawl-res/issues)
---
## ⚖️ 开源协议 & 免责声明
1. 本项目基于 **[MIT LICENSE](LICENSE)** 协议开源。
2. **免责声明**:本工具仅供技术交流学习,请勿用于非法抓取及侵权行为。因使用本工具造成的任何法律风险,均与原作者无关。
**触探 Crawl-Res** - 洞察全网资源,检索快人一步。
---