NguyenTriBaoThang/Childsafenet
GitHub: NguyenTriBaoThang/Childsafenet
基于机器学习的儿童上网保护平台,整合 Chrome 扩展实时过滤、家长仪表盘和自动化模型重训练,实现智能内容拦截。
Stars: 2 | Forks: 0
ChildSafeNet
通过 AI 驱动、家长控制的浏览安全机制保护儿童免受有害内容侵害
面向儿童的 AI 驱动互联网安全系统
Chrome 扩展 + Web 仪表盘 + .NET API + FastAPI AI 服务(可选:周期性训练)
浏览网站 »
🐛 报告 Bug
|
🚀 请求新功能
|
💬 支持
|
🔐 安全
## 最终提交版本
2026 年网站与 AI 创新大赛 – 板块 B(进阶赛道)
**目标:** 通过**检测并警告/拦截**危险网站(如 **成人 (18+) / 赌博 / 钓鱼 / 恶意软件**),保护 18 岁以下儿童的上网安全。 **亮点功能(可选 — 周期性训练):** - ✅ 将 Web/扩展收集的 URL 汇总到 **Dataset (待审核)** - ✅ **管理员审核**(批准/拒绝)以防止“脏数据” - ✅ **周期性训练**(后台任务)→ 生成新模型(版本控制) - ✅ 仪表盘监控日志、Dataset 和训练任务 - ✅ 家长个性化策略:年龄 / 模式 / 开关 / 白名单 / 黑名单 ## 截图
Web 仪表盘
|
管理员 Dataset 审核
|
Chrome 扩展
|
**总体流程:**
1. 扩展/Web 发送 URL → **ASP.NET Core API** (`/api/scan`)
2. API 调用 **AI Service (FastAPI)** (`/predict`)
3. API 应用 **用户设置 + 允许/拦截列表** → 返回操作 ALLOW/WARN/BLOCK
4. API 记录 **ScanLogs** + 更新 **UrlDataset (Pending)**
5. 后台任务定期训练 → 导出新模型版本 → AI 服务重新加载
## 系统设计亮点
- 清晰的分层:API / AI Service / Web / 扩展
- 带有模型版本控制的后台训练
- Dataset 审核工作流(待审核 → 已批准 → 训练)
- 在最终操作(ALLOW/WARN/BLOCK)之前的策略引擎层
## 关键技术决策
- **为什么选择 FastAPI 进行 AI 推理?** → 极速、异步、自动生成文档、易于进行模型版本控制
- **为什么使用后台任务进行训练?** → 避免阻塞 API,支持模型版本控制和回滚
- **为什么扩展使用 Manifest V3?** → 面向未来,更好的安全性和性能
- **为什么选择 scikit-learn 而不是深度学习?** → 轻量级,本地机器上推理速度快,可解释性强
## 仓库结构
```
ChildSafeNet/
│
├── src/ # Main application source code
│ │
│ ├── api/ # ASP.NET Core 8 Web API (Backend)
│ │ ├── Controllers/ # REST API endpoints
│ │ ├── Services/ # Business logic & background jobs
│ │ ├── Data/ # EF Core DbContext & migrations
│ │ ├── Models/ # Entities, DTOs, request/response models
│ │ ├── Middlewares/ # Custom middleware (Auth, Logging...)
│ │ ├── Background/ # Periodic training & scheduled tasks
│ │ └── Program.cs # Application entry point
│ │
│ ├── web/ # React + TypeScript Dashboard (Vite)
│ │ ├── src/
│ │ │ ├── pages/ # Main pages (Scan, Dashboard, Settings, Admin)
│ │ │ ├── components/ # Reusable UI components
│ │ │ ├── api/ # Axios API client & request wrappers
│ │ │ ├── hooks/ # Custom React hooks
│ │ │ ├── context/ # Global state / auth context
│ │ │ └── utils/ # Helper utilities
│ │ ├── public/
│ │ └── vite.config.ts
│ │
│ ├── ai-service/ # FastAPI AI Inference Service
│ │ ├── app.py # FastAPI entry point
│ │ ├── model/ # Trained models (.pkl, .joblib)
│ │ ├── training/ # Training pipeline scripts
│ │ ├── dataset/ # Optional datasets used for training
│ │ └── requirements.txt
│ │
│ └── chrome-extension/ # Chrome / Edge Extension (Manifest V3)
│ ├── manifest.json # Extension configuration
│ ├── service-worker.js # Background service worker
│ ├── content-script.js # Page interaction script
│ ├── popup.html
│ ├── popup.js # Extension popup UI logic
│ └── block.html # Page displayed when a site is blocked
│
├── docs-site/ # Docusaurus documentation website
│ ├── docs/ # Technical documentation pages
│ ├── src/ # Custom UI components & styles
│ ├── static/ # Static assets
│ └── docusaurus.config.js
│
├── assets/ # Visual assets for README/docs
│ ├── banner.jpg
│ ├── screenshots/ # UI screenshots
│ ├── diagrams/ # Architecture / CI-CD diagrams
│ └── images/ # Logos and other images
│
├── .github/ # GitHub configuration
│ ├── workflows/ # GitHub Actions CI/CD pipelines
│ ├── ISSUE_TEMPLATE/ # Issue templates
│ └── PULL_REQUEST_TEMPLATE.md # Pull request template
│
├── docker-compose.yml # Local development environment (API + AI + Web)
│
├── CONTRIBUTING.md # Contribution guidelines
├── CODE_OF_CONDUCT.md # Community rules
├── SECURITY.md # Security policy
├── SUPPORT.md # Support information
├── LICENSE # MIT license
└── README.md # Project overview
```
## 技术栈
- **前端:** React + TypeScript + Vite
- **后端:** ASP.NET Core 8, EF Core, JWT Auth, Background Services
- **数据库:** SQL Server (LocalDB / SQL Server local)
- **AI 服务:** FastAPI + scikit-learn (RF / Pipeline joblib)
- **扩展:** Chrome/Edge MV3 (service worker + content script)
## 入门指南
### 🧰 前置条件
- .NET SDK **8.0**
- Node.js **18+**
- Python **3.10–3.12**
- SQL Server 本地版(或 LocalDB)
- Docker Desktop(推荐用于最简单的设置和演示)
### Docker 快速启动(推荐用于测试和演示)
```
# Clone 仓库
git clone https://github.com/NguyenTriBaoThang/ChildSafeNet.git
cd ChildSafeNet
# 启动所有服务 (API + AI Service + Web Dashboard)
docker-compose up -d --build
```
一切就绪后(首次构建可能需要几分钟):
- **Web 仪表盘**: http://localhost:5173
- **API Swagger**: http://localhost:7047/swagger
- **FastAPI 文档/健康检查**: http://localhost:8000/docs 或 http://localhost:8000/health
- **数据库**: SQL Server 将通过 migrations 自动初始化
**停止运行:**
```
docker-compose down
```
### 手动设置(不使用 Docker)
### 1) 后端
```
cd src/api
dotnet restore
dotnet ef database update
dotnet run
```
- Swagger UI: `https://localhost:7047/swagger`(或您的实际端口)
### 2) AI Service (FastAPI)
```
cd src/ai-service
python -m venv .venv
# Windows
.\.venv\Scripts\activate
# macOS/Linux
# source .venv/bin/activate
pip install -r requirements.txt
python -m uvicorn app:app --host 0.0.0.0 --port 8000
```
- 健康检查: `http://localhost:8000/health`
### 3) 前端
```
cd src/web
npm install
npm run dev
```
- Web 应用: `http://localhost:5173`
### 4) Chrome 扩展(解压加载)
1. 打开 `chrome://extensions`(Edge 浏览器则为 `edge://extensions`)
2. 启用 **开发者模式**
3. 点击 **加载已解压的扩展程序** → 选择文件夹 `src/chrome-extension`
4. 打开 Web 仪表盘 → **Dashboard** → “Connect Extension”
## 演示流程
### A) Web 扫描
1. 以家长身份登录
2. 前往 **Scan** 页面,输入 URL → 接收 ALLOW/WARN/BLOCK 结果
3. 在 **Dashboard** → Scan Logs 中查看历史记录
### B) 扩展配对 + 自动扫描
1. 在 Web 上以家长身份登录
2. Dashboard → “Connect Extension”(配对 token)
3. 打开任意标签页 → 扩展自动调用 `/api/scan`
4. 如果是 BLOCK → 重定向到自定义 `block.html` 页面
### C) 可选周期性训练
1. 新 URL → 添加到 **UrlDataset (Pending)**
2. 管理员 → **AdminDataset** → 批准/拒绝
3. 管理员 → **AdminTrainJobs** → 触发训练任务(后台)
4. AI 服务重新加载新模型版本
## 环境变量
### API (`src/api/appsettings.json`)
- `ConnectionStrings:Default`
- `Jwt:Key`, `Jwt:Issuer`, `Jwt:Audience`
- `AiService:BaseUrl` (例如: `http://localhost:8000`)
### Web (`src/web/.env`)
```
VITE_API_BASE=https://localhost:7047
```
### 扩展
- 通过消息从 Web 接收配对 token,保存到 chrome.storage
## CI/CD
- **CI:** lint + test + build (API/Web/AI)
- **CD (可选):** 构建镜像 + 发布制品
### CI/CD 流水线
1. 开发者将代码推送到 GitHub
2. GitHub Actions 触发 CI 流水线
3. 构建和测试 (API + Web)
4. 静态代码分析
5. Docker 镜像构建
6. 推送镜像到 Registry
7. 部署到服务器 (ASP.NET + React + AI Service)
8. 服务连接到 SQL Server
## 依赖关系图
## 未来改进
- 实时模型漂移检测
- 联邦学习方法
- 多语言 URL 内容分析
- 云部署
- 家长分析仪表盘
## 贡献
- 请参阅:**[CONTRIBUTING.md](./CONTRIBUTING.md)**
- 行为准则:**[CODE_OF_CONDUCT.md](./CODE_OF_CONDUCT.md)**
- 报告 Bug / 建议功能:`.github/ISSUE_TEMPLATE/*`
## 安全
请阅读 **[SECURITY.md](./SECURITY.md)** 并**不要**在公开的 issues 中报告安全漏洞。
## 许可证
MIT 许可证 — 详情请见 **[LICENSE](./LICENSE)** 文件。
### 致谢
**团队:** TKT Team
**贡献者:**
- Nguyen Tri Bao Thang
- Le Trung Kien
- Vo Thanh Trung
用 ❤️ 构建,旨在为儿童提供更安全的互联网体验。标签:AI内容过滤, Apex, API服务, AV绕过, FastAPI, .NET Core, React, SQL Server, Syscalls, TypeScript, Web安全, 儿童网络安全, 内容审查, 图像识别, 安全插件, 实时过滤, 家庭安全, 家长控制, 数据集管理, 文本分类, 有害内容屏蔽, 机器学习, 浏览器扩展, 网络保护, 网络安全教育, 自动化重训练, 蓝队分析, 请求拦截, 青少年保护
Web 仪表盘
管理员 Dataset 审核
Chrome 扩展