NguyenTriBaoThang/Childsafenet

GitHub: NguyenTriBaoThang/Childsafenet

基于机器学习的儿童上网保护平台,整合 Chrome 扩展实时过滤、家长仪表盘和自动化模型重训练,实现智能内容拦截。

Stars: 2 | Forks: 0

ChildSafeNet

ChildSafeNet

通过 AI 驱动、家长控制的浏览安全机制保护儿童免受有害内容侵害

Docs CI Status GitHub stars

面向儿童的 AI 驱动互联网安全系统
Chrome 扩展 + Web 仪表盘 + .NET API + FastAPI AI 服务(可选:周期性训练)

浏览网站 »

🐛 报告 Bug | 🚀 请求新功能 | 💬 支持 | 🔐 安全

.NET 8 React 18 TypeScript FastAPI SQL Server MIT

Preview ## 最终提交版本

2026 年网站与 AI 创新大赛 – 板块 B(进阶赛道)

**目标:** 通过**检测并警告/拦截**危险网站(如 **成人 (18+) / 赌博 / 钓鱼 / 恶意软件**),保护 18 岁以下儿童的上网安全。 **亮点功能(可选 — 周期性训练):** - ✅ 将 Web/扩展收集的 URL 汇总到 **Dataset (待审核)** - ✅ **管理员审核**(批准/拒绝)以防止“脏数据” - ✅ **周期性训练**(后台任务)→ 生成新模型(版本控制) - ✅ 仪表盘监控日志、Dataset 和训练任务 - ✅ 家长个性化策略:年龄 / 模式 / 开关 / 白名单 / 黑名单 ## 截图
Web 仪表盘 管理员 Dataset 审核 Chrome 扩展
## 为什么选择 ChildSafeNet? 儿童越来越多地接触到有害的网络内容。 传统的黑名单系统是静态的,很容易被绕过。 ChildSafeNet 引入了: - AI 驱动的 URL 分类 - 按年龄和模式进行的策略个性化 - 周期性重训练流水线 - 管理员控制的 Dataset 验证 这创建了一个半自动化的审核循环,而非静态黑名单。 ## 功能特性 ### 👪 家长 - **扫描 URL** (Web) + 查看 **扫描日志** - **设置** - 儿童年龄 (1–18) - 模式:严格 / 均衡 / 宽松 - 规则开关:拦截成人内容 / 拦截赌博 / 拦截钓鱼 / 警告可疑内容 - 白名单域名(始终允许) - 黑名单域名(始终拦截) - **配对 Chrome 扩展**:Web 发送 token 给扩展 → 扩展使用 API 进行扫描 ### 🛡️ 管理员 - **管理员 Dataset**:查看收集的 URL(待审核/已批准/已拒绝),导出 CSV - **管理员训练任务**:触发训练任务,监控状态/版本 - (可选)漂移监控 / 模型健康度(未来扩展) ### 🧩 Chrome 扩展 - 启用/禁用扩展 - 自动扫描当前标签页,调用 `/api/scan` 端点 - 根据策略执行拦截/警告(必要时显示拦截页面) ## 系统架构 System Architecture **总体流程:** 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/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 ## 依赖关系图 Dependency Graph ## 未来改进 - 实时模型漂移检测 - 联邦学习方法 - 多语言 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安全, 儿童网络安全, 内容审查, 图像识别, 安全插件, 实时过滤, 家庭安全, 家长控制, 数据集管理, 文本分类, 有害内容屏蔽, 机器学习, 浏览器扩展, 网络保护, 网络安全教育, 自动化重训练, 蓝队分析, 请求拦截, 青少年保护