使用文档

面向当前可运行的本地开发原型。本文档不提供尚未实现的被控端安装、远程设备配对或系统级访问拦截步骤。

本地开发原型

快速开始

当前项目面向 Windows 本地授权测试。管理端编辑 SQLite 策略;代理只接受显式配置的 HTTP/HTTPS CONNECT 流量,且仅监听本机回环地址。

这不是安装版,也不是被控端部署指南。项目没有自动修改系统代理、DNS、防火墙或其他网络设置。请只使用你有权管理的设备和测试规则。

准备环境

  • Windows 与 .NET SDK 9.0(构建解决方案)。
  • .NET Framework 4.8(运行当前原型;Legacy Windows 7 目标不能依赖 4.8.1)。
  • 首次构建需访问 NuGet 以还原参考程序集和 SQLite 依赖。

构建并运行测试

PowerShell · 仓库根目录
dotnet build .\NetWard.sln --configuration Release
.\scripts\test.ps1

测试脚本会构建、运行策略/SQLite/代理集成测试并执行代理 CLI 冒烟测试;测试网络使用本机回环服务。

启动显式代理

PowerShell · 测试策略示例
.\src\WebBlocker.ProxyHost\bin\Release\net48\NetWard.ProxyHost.exe `
  --mode allowlist `
  --rule subdomains:example.com `
  --database "$env:TEMP\NetWard\netward-dev.db"
1

确认代理监听地址

启动后应看到代理正在监听 127.0.0.1:18080。若端口被占用,可使用 --port 0 让系统选取可用端口。

预期结果:控制台显示实际监听端口和策略版本。

2

仅为测试应用设置代理

在一个可配置代理的测试应用中手动填入本机代理地址。不要假定所有应用会自动使用代理。

预期结果:该应用发出的 HTTP 或 CONNECT 请求进入本地代理。

3

启动管理端并选择同一数据库

另开 PowerShell 窗口,启动管理端,传入与代理相同的数据库路径。

.\src\WebBlocker.Administrator\bin\Release\net48\NetWard.Administrator.exe `
  --database "$env:TEMP\NetWard\netward-dev.db"

预期结果:可编辑规则、配置限时类别并查看本地事件。

4

保存后重启代理

管理端保存策略后,已运行的代理不会热更新。结束代理进程并重新启动,以加载保存的策略。

预期结果:代理启动时报告新策略版本。

系统要求与兼容性

项目已知信息状态
构建环境Windows、.NET SDK 9.0、NuGet 还原能力当前开发环境已用于构建
当前原型运行时.NET Framework 4.8;若以 Windows 7 SP1 为目标,Legacy 版本线必须保持此基线目标要求,未通过 Windows 7 实机验收
Legacy 管理端 / 被控端最低目标 Windows 7 SP1;保留当前桌面 UI 风格;.NET Framework 4.8 在微软文档中列为可安装,但项目产品行为未验证版本线尚未实现,未通过实机验收
Modern 管理端 / 被控端计划采用 WinUI 3;最低 Windows 版本与 Windows App SDK / 运行时需在选型后确认尚未实现,未验证
Windows 10 / Windows 11目标版本需按 Legacy 与 Modern 分别声明并验证;当前开发环境不代表完整兼容性结论项目兼容性矩阵尚未完成
CPU / 内存 / 管理员权限尚无经验证的最低规格;本地原型不要求安装服务或驱动不作未证实承诺

Windows 7 SP1 仅是 Legacy 版本线的规划兼容目标,不是测试通过声明;不得将其扩展到 Modern 版本线。WinUI 3 的操作系统底线要依据选定的 Windows App SDK 实际核实。浏览器 kiosk 功能也没有实现;Edge、Chrome 或默认浏览器的 kiosk 兼容性尚未验证。

首次配置与运行

首次设置策略

新数据库首次启动代理时,需明确提供白名单/黑名单模式与至少一条域名规则。例如,白名单模式、允许根域及其子域:

--mode allowlist --rule subdomains:example.com

若确实要使用空规则集,需显式追加 --allow-empty-rules。白名单空规则会默认拒绝所有未匹配主机;黑名单空规则会默认允许未匹配主机,请谨慎确认。

选择数据库

默认数据库位于 %LOCALAPPDATA%\WebBlocker\proxy.db。可用 --database <path> 指定路径。管理端和代理需指向同一数据库才能共享本地策略与日志。SQLite 数据包含敏感 HTTP 查询参数,应由设备管理员按组织要求保护并备份。

停止和重新加载

在代理宿主的控制台按 Ctrl+C 正常停止。管理端写入的新策略只在代理下一次启动时加载。

当前不存在管理端/被控端安装向导、Windows 服务、自动启动、远程同步或正常卸载程序。不要按预期目标想象尚未提供的安装步骤。

访问规则

规则仅比较规范化后的主机名,不支持通配符、完整 URL 路径或查询串规则。精确规则匹配主机本身;“包含子域名”还匹配以点号边界结束的子域名,例如 www.example.com,但不匹配 notexample.com。

策略模式命中启用规则未命中启用规则
白名单允许访问默认拒绝
黑名单拒绝访问默认允许

限时类别

限时规则叠加在基础策略上:基础策略先判定,只有基础策略允许的主机才会消耗匹配类别的每日窗口。首次匹配请求启动连续墙钟倒计时;关闭浏览器不暂停;最迟到当地次日零点重置。它不是活跃标签页时长统计。

生效条件与刷新

  • 只有手动配置为使用代理的应用请求会进入判断。
  • 管理端保存策略后需重启代理,现阶段没有热同步。
  • VPN、直连、其他代理、DoH、QUIC/HTTP/3 等路径可能绕过或隐藏请求。
  • 分类网站页目前只有禁用状态的类别占位,不参与判定。

访问日志

管理端“访问日志”页支持域名搜索、仅查看拒绝/拦截异常、分页查询。时间以 UTC 显示。策略结果表示代理的决策,不证明目标网页最终成功加载。

字段当前记录情况
访问时间UTC 时间
主机名、请求方式代理可见并记录
策略结果、匹配规则、策略版本本地可用时记录
HTTP 完整请求网址记录路径及查询参数;查询参数可能是敏感信息
HTTPS CONNECT 目标只能记录主机名与端口;加密路径和查询不可见
客户端 IP、交互式 Windows 用户名、浏览时长当前未实现

访问事件超过 30 天后会在代理启动时和运行期间每小时清理;管理端启动时也会清理。当前没有远程日志同步或日志导出功能。在线 SQLite 备份可使用 --backup-to <destination>,目标文件必须不存在。

HTTPS 不解密。不能将 CONNECT 目标写成已采集的“完整 HTTPS 网址”;代理回环连接也不提供设备真实网络 IP。

设备配对与多设备

尚未实现

当前没有被控端 Agent、配对码、远程管理端监听器或设备注册表。管理端是读取本地 SQLite 数据库的本地 WinForms 工具,不连接局域网中的其他计算机。

未来的设备通信目标包括所有者同意、一次性配对凭据、认证加密传输、设备身份撤销、每设备策略隔离、明确的在线/离线状态、断线重试和日志确认。具体方案和状态见架构说明与产品需求。

故障排查

管理端无法连接被控端

当前没有远程连接或配对功能,因此不存在可工作的连接码流程。管理端只打开本地数据库。确认两个程序使用同一 --database 路径,不要关闭防火墙来尝试实现尚不存在的功能。

连接码失效或配对失败

连接码配对尚未实现。请勿寻找默认连接码或通过关闭 Windows 安全功能绕过。

访问规则没有生效

确认测试应用显式使用代理地址;代理是否运行;请求是否经过 HTTP 代理或 CONNECT;代理启动时加载的数据库/策略是否正确。策略保存后需重启代理。直连或其他网络路径不受当前原型控制。

访问被错误允许或阻止

检查所选模式、主机名拼写和是否启用子域名匹配。白名单未命中默认拒绝;黑名单未命中默认允许。当前不匹配 URL 路径或查询参数。请先使用本地测试域名,并检查代理访问日志。

拦截页没有显示

只有被代理拒绝的 HTTP 请求可返回本地 HTML。HTTPS CONNECT 拒绝时返回 HTTP 403;浏览器不会看到本地拦截 HTML。确认 HTTP 测试请求经过代理,且构建输出中包含 index.html。

代理或管理端启动失败

使用 .\scripts\test.ps1检查构建和回归测试。确认 .NET Framework 4.8 可用、数据库目录可写、端口未被占用,并查看程序显示的错误。不要把整个系统安全防护关闭。

Windows 防火墙影响通信怎么办

当前代理仅绑定回环,不提供远程局域网监听;不要为它开放入站 LAN 端口。测试应用访问公共网络失败时,按组织策略检查该应用和网络环境,不要将防火墙整体关闭。

程序升级后策略或日志异常

先停止程序并用 SQLite 在线备份命令备份数据库。旧数据库由应用执行顺序迁移;比应用支持版本更新的数据库会被拒绝。保留完整错误信息及升级前数据库副本,勿手动删除数据库来掩盖问题。

常见问题

NetWard 能拦截设备上的所有网站吗?

不能。当前代理是可绕过的显式本地代理,只过滤主动配置使用它的应用请求,不是系统级访问控制。

NetWard 会解密 HTTPS 或看到完整 HTTPS URL 吗?

不会。TLS 未解密,代理仅能看到 CONNECT 主机名和端口。路径、查询内容不可见。

拒绝 HTTPS 后能显示 NetWard 拦截页吗?

当前不能。新 CONNECT 返回代理 403;已有的独立 HTML 不能替换加密连接内页面。

申请访问会通知管理员吗?

不会。拦截页有表单 UI,但提交尚未发送或保存,也没有 Windows 通知、审批或忽略去重流程。

支持 Windows 7、10、11 吗?

Windows 7 SP1 是 Legacy 版本线(管理端和被控端)的最低规划目标,.NET Framework 4.8 可安装于 Windows 7 SP1;项目仍需真实环境验证。Modern 版计划使用 WinUI 3,最低 Windows 版本需依所选 Windows App SDK 确认。两条版本线的兼容性都尚未完成验收。

有正式下载、版本或许可证吗?

目前没有正式 Release,也没有指定开源许可证。可在 GitHub 查看公开源码;仓库公开不等于存在已授予的开源复用许可证。

是否使用摄像头或截屏取证?

不会。项目所有者已明确不使用摄像头;当前产品原型没有摄像头或屏幕图像采集功能。不得将提示页面中的文案理解为已实际采集图像。