Skip to content

Liang-HZ/network-fingerprint-audit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

network-fingerprint-audit

一个面向 macOS / Windows 的本地审计工具,用来检查“网络出口、DNS、代理、语言环境、浏览器语言信号、浏览器侧 WebRTC / Header 暴露”是否彼此一致。

产品定位

这个仓库是 liangai.org 产品矩阵之一:一个“网络与浏览器环境一致性审计”CLI 工具,核心能力是把出口 IP/ASN、系统 DNS/代理/路由、语言环境、浏览器 Accept-Language/WebRTC 暴露等分散信号,采集成结构化的 JSON / Markdown / HTML 报告,用于排查“环境不一致”问题(详见上文“它解决什么问题”)。

产品形态与部署:

  • 无独立服务端部署,也不挂独立子域名;产品即“GitHub 开源仓库 + 本地 CLI”,用户 git clone 后直接在本机运行
  • 对应的落地页挂在主站 liangai.org 的 /products/network-audit 路径下(落地页内容由 liangai-web 仓库的其他任务维护,本仓库只负责工具本身和这份 README)

claude-code-trust-audit skill 的关系:

  • 本机已确认存在该 skill,路径为 ~/.codex/skills/claude-code-trust-audit/(这是 Codex CLI 侧的 skill,不在 ~/.claude/skills/ 下)
  • 关系是明确的“调用”而非单纯概念呼应:该 skill 的工作流第一步就是运行其 scripts/run_network_audit.py 下载并驱动本仓库(network_audit.py),推荐参数为 python3 network_audit.py --default-browser-tracking-probe --no-open
  • 该 skill 读取本仓库产出 JSON 中的 agent_brief 字段(风险等级、关键因素、证据路径、未完成检测)作为 Claude Code / Codex 账号信任与环境一致性诊断的输入,再结合对 ~/.claude 等本地配置的检查(需用户单独同意)产出审计报告
  • 简言之:本仓库是通用的网络/浏览器指纹采集器,claude-code-trust-audit skill 是面向“Claude Code 账号信任风险”场景的上层封装,二者是底层工具与场景化上层封装的关系,可以独立使用,也可以配合使用

关于作者

我是一个充满好奇心的 AI 应用从业者,关注 AI 产品、自动化工作流,以及把复杂系统整理成可实际落地的工具。

  • 联系方式:shineagentic@duck.com

它解决什么问题

很多“环境不一致”问题并不在单一代理节点,而是出在:

  • 系统 DNS 和实际出口不一致
  • 终端语言、系统语言、浏览器语言彼此打架
  • 浏览器 profile 还保留着旧的 Accept-Language
  • 浏览器侧 WebRTC 额外暴露了本地地址或另一条公网路径
  • 系统代理 / 自动代理发现让不同应用走了不同链路

这个项目的目标不是“伪装指纹”,而是把这些信号收集到一份结构化报告里,方便排查、复查和做前后差异对比。

功能

  • 检查公网出口 IP、ASN、地理位置、时区,并融合 ipapi.is / proxycheck.io / Cloudflare trace 等外部观测
  • 检查系统 DNS、当前活跃网络服务 DNS、默认路由、macOS utun / Windows 路由与监听端口、127.0.0.1:53/7890 监听
  • 检查系统代理、自动代理 URL、WPAD 自动代理发现
  • 检查 LANGLC_ALLAppleLanguagesAppleLocale
  • 检查 Chrome / Chromium / Microsoft Edge 各 profile 的 Accept-Language
  • 启动临时 headless Chrome / Chromium / Edge,检查浏览器实际发出的 Accept-Languagenavigator.language(s)、WebRTC 地址暴露
  • 可选打开用户默认浏览器,模拟“打开邮件即加载远程追踪资源”的场景,检查 1x1 像素、CSS 背景图、beacon/fetch 是否被拦截,以及服务端可见的请求头
  • 额外识别常见代理客户端进程 / 配置路径,并对 Clash Verge / Mihomo 等可读配置生成去敏摘要
  • 自动生成 JSON、中文 Markdown 和结构化 HTML 报告;JSON 内包含 agent_brief,方便 Agent 直接解读风险因素与证据字段

兼容范围

  • 核心检测依赖系统代理、DNS、路由、监听端口和浏览器探针,因此对大多数会影响这些信号的代理方案都适用。
  • 核心审计不绑定具体客户端:Clash/Mihomo、Surge、sing-box、V2Ray、Shadowsocks、Outline、Hiddify 等只要影响系统代理、TUN/VPN、DNS、路由、出口或浏览器,就会反映在通用检测结果里。
  • 当前会额外识别常见客户端的进程和配置路径;Clash Verge / Mihomo 等可读配置会提供去敏摘要,其他客户端先以“线索识别”为主,不强行读取订阅、节点或密钥内容。
  • 如果某个代理软件不写入系统代理、不走常见本地监听端口、只在单个 App 内手动配置,系统层和浏览器层结果可能仍可见,但不会保证能识别该客户端内部配置。

可靠性边界

这个项目定位为“审计 / 诊断工具”,不是“结果保证工具”。

相对可靠的部分

这些结果来自系统命令或浏览器实测,可信度相对高:

  • scutil --proxyscutil --dnsroutenetstatnetworksetup
  • defaults read -g AppleLanguagesdefaults read -g AppleLocale
  • 本地浏览器 profile 配置文件中的 Accept-Language
  • headless 浏览器真实发出的请求头和 WebRTC 地址暴露

启发式的部分

这些判断是“提示”,不是绝对结论:

  • “Datacenter egress detected” 优先基于 ipapi.is / proxycheck.io 的结构化风险字段;只有外部情报不可用时才退回 ASN / 主机名关键词
  • “China-oriented public resolvers” 基于常见公共 DNS 列表
  • “locale signals include Chinese” 基于本地语言字段的组合判断
  • 修复建议本质上是经验规则,不代表唯一正确做法

已知限制

  • 支持 macOS 和 Windows;Linux 暂不支持
  • 浏览器探针使用临时 headless profile,不等于完整复现你的日常浏览器
  • 浏览器探针依赖外网可访问;断网或严格拦截时只能拿到部分数据
  • 这不是反检测绕过工具,也不能证明某个目标站点一定“不会风控”

可靠性收口

当前实现包含几项关键的稳健性处理:

  • 不再把 networksetup 查询硬编码到 Wi-Fi,而是优先跟随默认路由对应的活跃网络服务
  • 出口风险不再只靠 ASN 关键词,新增 ipapi.is 和 proxycheck.io 两类外部情报源,并保留 Cloudflare trace 作为独立观测
  • 语言信号判断同时纳入 LANGLC_ALLAppleLanguagesAppleLocale
  • 增加 Microsoft Edge profile 语言扫描
  • 增加最小单元测试,覆盖网络服务解析和区域信号判断

依赖

  • macOS 自带:scutilnetworksetuproutenetstatdefaults
  • Windows 自带:ipconfigroutenetstatnetshregpowershelltzutil
  • python3
  • 可选:Chrome / Chromium / Edge,用于浏览器侧探针

快速开始

git clone https://github.com/Liang-HZ/network-fingerprint-audit.git
cd network-fingerprint-audit
./bin/audit-network

默认行为:

  • 采集本机信号
  • 生成报告到 reports/
  • 自动打开最新的 HTML 报告

如果你已经有本地仓库副本,直接在仓库根目录运行:

./bin/audit-network

常用参数

./bin/audit-network --skip-network
./bin/audit-network --skip-browser-probe
./bin/audit-network --default-browser-tracking-probe
./bin/audit-network --no-open
./bin/audit-network --output-dir ./reports
./bin/audit-network --browser-path "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"

--default-browser-tracking-probe 会显式打开系统默认浏览器,并在本机 127.0.0.1 启动一次性探针页面。它模拟邮件客户端打开或预览邮件时自动加载远程图片/CSS 资源的行为;用户不需要点击图片,资源请求只要被浏览器加载就会被记录。该探针不会上传数据,报告只保存在本地。

输出

每次运行会生成:

  • reports/audit-YYYYMMDD-HHMMSS.md
  • reports/audit-YYYYMMDD-HHMMSS.html
  • reports/audit-YYYYMMDD-HHMMSS.json

其中:

  • Markdown 适合快速看结论
  • HTML 适合按模块浏览和复查
  • JSON 适合做前后 diff 或接入 Agent 自动化;其中 agent_brief 会把原始检测压缩成账号信任 / 环境一致性诊断所需的风险等级、关键因素、证据路径、建议和未完成检测

Agent 解读模式

这个仓库可以作为 Agent skill 的本地采集器使用。推荐流程是:Agent 下载或更新仓库,运行 network_audit.py,读取最新 JSON,然后优先解释 agent_brief,必要时再回到原始字段核验证据。

agent_brief 的目标不是指导规避平台治理,而是帮助定位可能导致账号信任异常、误判或环境不一致的因素。Agent 输出建议时应引用 evidence_paths,并先说明 unverified_or_failed_checks 里哪些检测没有完成。

仓库本身不会读取 Claude Code 的本地配置或 session。agent_brief.manual_agent_checks 会提醒 Agent 在用户同意后检查 ~/.claude/settings.json、项目 .claude/settings*.json、相关 ~/.claude/projects/ session 和 ANTHROPIC_BASE_URL / ANTHROPIC_MODEL 等环境变量;对面向中国用户的账号信任诊断,未知中转站、共享订阅、非官方 baseURL 或非官方模型 ID 应视为高风险源,并建议先备份再清理。

HTML 报告结构

  • 左侧固定目录,便于在长报告里跳转
  • 顶部概览区,先看高 / 中 / 低风险分布
  • 主要发现 用表格集中展示问题和证据
  • 修复建议 给出按优先级排序的处理方向
  • 浏览器与 WebRTC网络与区域信号代理设置代理运行态快照 分模块展示

这份布局优先服务排障,而不是展示炫技 UI。

如何理解结果

  • 高风险:更可能导致“出口和环境看起来不像同一台机器/同一类用户”
  • 中风险:存在明显不一致,但未必单独触发问题
  • 低风险:会增加复杂性或不确定性
  • 信息:主要用于补全上下文,不一定需要处理

比较推荐的用法是:

  1. 修改一个变量,例如 DNS、代理或浏览器语言
  2. 重新运行审计
  3. 对比前后两份 JSON 报告

这样比只看单次结果更有价值。

隐私与安全

  • 脚本只抓取排障相关字段
  • 当前内置的代理客户端识别只保留进程名、配置路径和去敏后的关键片段,不会整段写入订阅或 token
  • 报告默认不再写入主机名、当前工作目录;家目录绝对路径会被脱敏成 ~
  • 浏览器探针在本地临时目录运行,结束后清理 profile
  • 默认浏览器追踪模拟只监听 127.0.0.1,用于记录本机默认浏览器是否自动加载类似邮件追踪的远程资源;远程服务在真实场景中看到的公网出口需结合报告里的公网 IP 情报判断
  • 生成的报告保存在本地 reports/,不会自动上传
  • reports/ 已被 .gitignore 忽略,不建议把生成报告公开发布

验证

当前仓库至少应通过:

python3 -m py_compile network_audit.py
python3 -m unittest discover -s tests -v
python3 network_audit.py --no-open
python3 network_audit.py --skip-network --no-open
python3 network_audit.py --skip-browser-probe --no-open

不在本项目目标内的内容

  • 不承诺“修复后一切站点都通过”
  • 不负责伪造完整浏览器指纹
  • 不尝试绕过站点风控策略
  • 不替代代理、DNS 或浏览器本身的正确配置

About

Audit macOS network, locale, proxy, and browser-side fingerprint signals in one report.

Topics

Resources

License

Stars

2 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors