oscarjnz/hacking-archive

GitHub: oscarjnz/hacking-archive

一个按等级和领域组织的网络安全学习资源静态档案馆,提供渐进式阅读路线图与便捷的客户端检索体验。

Stars: 0 | Forks: 0

# hacking-archive 一个整洁、快速、静态生成的网络安全学习资源网络档案馆,按**级别**和**领域**(Linux、Redes、Seguridad、Reconocimiento、Pentesting、Malware、Binarios)以路线图形式组织。所有资源均托管在 `archive.org` 上,并在新标签页中打开。 - **技术栈:** Next.js 14 (App Router) · React 18 · TypeScript · Tailwind CSS - **输出产物:** 静态 HTML/CSS/JS (`output: "export"`)。无后端。 - **首次加载 JS:** ~93 kB(gzip 压缩后的分块)。 - **深色模式:** 默认。``,自定义调色板。 ## 项目结构 ``` . ├── app/ │ ├── globals.css # Tailwind + base styles │ ├── icon.svg # Favicon │ ├── layout.tsx # Root layout, metadata, viewport │ ├── not-found.tsx # 404 page │ └── page.tsx # Home + JSON-LD structured data ├── components/ │ ├── Archive.tsx # Top-level client component (state hub) │ ├── AreaFilter.tsx # Toggleable area filter chips │ ├── BookCard.tsx # Book row: title, area, copy + open │ ├── Footer.tsx │ ├── Header.tsx # Brand + counters │ ├── Icon.tsx # Inline SVG icons (no icon library) │ ├── LevelSection.tsx # Collapsible level group │ ├── SearchBar.tsx # Client-side search (⌘K / Ctrl+K) │ └── Sidebar.tsx # Sticky level navigation ├── data/ │ └── books.ts # Structured dataset + level metadata ├── lib/ │ └── utils.ts # cn() and normalize() ├── types/ │ └── index.ts # Book, Level, Area types ├── public/ │ └── robots.txt ├── next.config.mjs # `output: "export"` static build ├── tailwind.config.ts ├── postcss.config.mjs ├── tsconfig.json └── package.json ``` ### 关注点分离 - **数据** (`data/books.ts`) — 纯粹的、类型化的、声明式的数据集。唯一的真实数据来源。无 DOM,不依赖 React。 - **类型** (`types/index.ts`) — 共享的 `Book`、`Area`、`Level`、`LevelGroup`。 - **逻辑** (`components/Archive.tsx`) — 搜索、筛选、折叠和活动级别跟踪。全部在客户端进行。 - **UI** (`components/*.tsx`) — 纯展示,通过 props 提供数据。唯一需要 `"use client"` 的组件是那些需要交互的组件。 ### 为什么没有后端? 数据集是有限、不可变且公开的。静态生成带来了:更优的 TTFB,简便的 CDN 部署,零成本托管以及完全的可爬取性。引入数据库只会增加运维成本,而不会带来任何功能上的收益。 ## 数据模型 ``` type Level = 1 | 2 | 3 | 4 | 5; type Area = | "Linux" | "Redes" | "Seguridad" | "Reconocimiento" | "Pentesting" | "Malware" | "Binarios"; interface Book { id: string; // stable, derived from level + slug(title) level: Level; area: Area; title: string; url: string; // absolute archive.org URL } ``` 该数据集包含跨越 **5 个级别**和 **7 个领域**的 **18 本书**。 要添加资源,请在 `data/books.ts` 中追加一条 `book(level, area, title, path)` 记录。`path` 会追加到共享的 `ARCHIVE_BASE` 之后。 ## 功能 - **可折叠的级别章节**,带有各级别的计数器。 - **领域筛选器** — 多选标签,带有实时计数。 - **客户端搜索** — 搜索标题、领域和级别标签,不区分重音符号。快捷键:`⌘K` / `Ctrl+K` 聚焦,`Esc` 清除。 - 每个资源的**复制链接**,并带有可视化确认。 - **外部链接** 在新标签页中打开,并带有 `rel="noopener noreferrer"` 属性。 - **固定侧边栏**,通过 `IntersectionObserver` 驱动当前活动章节高亮。 - **响应式设计** — 侧边栏在 `lg` 断点以下折叠,头部统计数据在 `sm` 断点以下隐藏。 - **SEO** — 完整的 Open Graph + Twitter 元数据,图书的 JSON-LD `ItemList`。 - **A11y (无障碍)** — 语义化界标 (`header`、`main`、`nav`、`footer`、`section`),可折叠元素上的 `aria-expanded`/`aria-controls`,切换按钮上的 `aria-pressed`,可见的焦点环,`lang="es"`。 ## 环境配置 需要 **Node.js ≥ 18.17**。 ``` npm install ``` ## 开发 ``` npm run dev # http://localhost:3000 ``` ## 类型检查 ``` npm run typecheck ``` ## 代码检查 ``` npm run lint ``` ## 构建 (静态导出) ``` npm run build ``` 静态站点将被输出到 `out/` 目录。这是一组完全自包含的 HTML/CSS/JS 文件。 ### 静态构建的本地预览 ``` npx serve out # 或 python3 -m http.server --directory out 8080 ``` ## 部署 任何静态托管服务均可: - **Vercel** — `vercel deploy` (零配置;支持 `output: "export"`)。 - **Netlify** — 将发布目录设置为 `out`。 - **GitHub Pages** — 将 `out/` 目录下的内容推送到 `gh-pages` 分支。 - **Cloudflare Pages / S3 / Nginx** — 将 `out/` 作为文档根目录提供服务。 没有服务器运行时;仅有静态资源。 ## 性能说明 - 无 UI / 图标库。图标均为内联 SVG (`components/Icon.tsx`)。 - 未通过网络加载任何字体 — 仅使用系统字体栈。 - 筛选和搜索是使用 `useMemo` 的纯函数实现;不会在组件树中层叠引发重新渲染。 - Tailwind 的 JIT 模式结合 `output: "export"` 生成了最小的 CSS 包。 - 所有交互功能均并置在选择了启用 `"use client"` 的组件中;页面外壳是一个 Server Component。 ## 许可证与免责声明 资源链接指向托管在 `archive.org` 上的第三方副本。本项目仅供教育目的使用。维护者不托管或分发这些内容。
标签:DAST, Jamstack, Markdown, React, SEO优化, Syscall, Syscalls, Tailwind CSS, TypeScript, Web开发, 二进制漏洞利用, 学习路线图, 安全学习资源库, 安全插件, 安全攻防, 开源学习项目, 恶意软件分析, 数据展示, 暗黑模式, 白帽黑客, 红队, 纯静态部署, 网络安全, 网络安全书籍, 网络安全基础, 自动化攻击, 资源导航, 隐私保护, 静态网站生成