OSINTCabal/Contact-Analyzer
GitHub: OSINTCabal/Contact-Analyzer
一款基于可见浏览器会话的 OSINT 社交关系收集与去重工具,无需官方 API 即可采集跨平台的联系人关系数据。
Stars: 0 | Forks: 0
# Contact Analyzer
**作者:[OSINT Cabal](https://osintcabal.org)**
Contact Analyzer 通过由你控制的可见 Google Chrome 或 Chromium 会话收集社交资料关系。它会打开渲染好的关系列表,对其进行滚动或分页,在有用时读取浏览器生成的网络响应,并保存规范的资料 URL。
它不需要官方的社交网络 API、开发者账户、API token 或复制的 cookie。
Contact Analyzer 专为授权的 OSINT 研究而构建,适用于调查人员需要进行可重复的联系收集、清晰的来源关系,以及在平台未暴露完整列表时进行如实报告的情况。
## 功能
* 收集 `followers`、`following` 和 `friends`
* 使用你可见且已认证的浏览器会话
* 支持 Google Chrome 和 Chromium
* 在 SQLite 中去除重复的规范资料 URL
* 保留关系来源,不重复添加联系人
* 生成适配 Obsidian 的 Markdown 和 JSON
* 为未完成的运行保存检查点和诊断信息
* 将被阻止、失败和待审查的结果排除在持久联系人集合之外
* 使用 Codex 进行有限的页面分析和可选的诊断审查
* 无需官方平台 API 密钥
## 工作原理
1. 你创建一个主题并添加已知的资料 URL。
2. Contact Analyzer 连接到专用浏览器,地址为 `http://127.0.0.1:9222`。
3. 收集器会打开你的账户可见的关系列表。
4. 它会读取已渲染的行以及浏览器生成的 XHR 或 fetch 响应。
5. 平台适配器会拒绝帖子、媒体、搜索页、群组、代码库、标签和其他导航 URL。
6. 被接受的资料会被规范化为标准的资料 URL。
7. SQLite 会记录唯一的联系人及其源关系边。
8. 导出器会写入当前联系人集合、运行历史和诊断信息。
如果平台报告了数量但暴露的唯一资料较少,则运行保持未完成状态。Contact Analyzer 不会将部分列表转换为完整列表。
## 支持的系统
Contact Analyzer 支持以下系统的当前桌面版本:
* Fedora Linux
* Debian
* Ubuntu
* Linux Mint
* Kali Linux
* macOS
需要 Python 3.10 或更新版本。Linux 需要 Python `venv` 模块。
推荐使用 Google Chrome。Chromium 作为备选受支持。
Linux 安装程序可识别 Fedora、Debian、Ubuntu、Linux Mint 和 Kali。
当缺少 Python 或浏览器要求时,它会打印正确的包安装命令。
有关特定发行版的命令,请参见 [Linux 安装](docs/LINUX_INSTALL.md)。
## 安装说明
首先安装并验证 OpenAI Codex CLI:
```
curl -fsSL https://chatgpt.com/codex/install.sh | sh
codex --version
codex login
```
你也可以使用 npm 安装 Codex:
```
npm install -g @openai/codex
codex login
```
克隆 Contact Analyzer 并运行安装程序:
```
git clone https://github.com/OSINTCabal/Contact-Analyzer.git
cd Contact-Analyzer
./install.sh
hash -r
```
安装程序在复制应用程序之前会检查 Codex、Python、`venv` 和 pip。它会为当前用户安装 Contact Analyzer 并创建:
```
~/.local/share/contact-analyzer
~/.local/bin/contactanalyzer
~/.local/bin/contactanalyzer-browser
```
请勿使用 `sudo` 运行安装程序。
要在不安装任何内容的情况下打印软件包要求:
```
./install.sh --system-requirements
```
## 浏览器设置
启动专用浏览器:
```
contactanalyzer-browser
```
启动器会查找 Google Chrome 或 Chromium,创建一个单独的浏览器配置文件,并仅在 `127.0.0.1:9222` 上启用 Chrome DevTools。
手动登录你计划收集的平台。将此配置文件与你的日常浏览器配置文件保持独立。
验证连接:
```
contactanalyzer doctor
```
Chrome 136 及更新版本要求远程调试使用独立的用户数据目录。内置的启动器会自动处理此问题。Ubuntu Chromium Snap 安装会在 `~/snap/chromium/common/` 内部使用一个配置文件,以便浏览器能够对其进行写入。
有关手动命令和故障排除,请参见[浏览器设置](docs/BROWSER_SETUP.md)。
## 运行说明
打开交互式主题菜单:
```
contactanalyzer
```
创建主题并粘贴资料 URL:
```
here's my next subject Example Person
https://www.instagram.com/example
https://x.com/example
https://bsky.app/profile/example.bsky.social
https://github.com/example
DONE
```
Contact Analyzer 会识别平台,查找可用的关系控制选项,并仅收集规范的资料 URL。
## 命令
| 命令 | 用途 |
| --- | --- |
| `contactanalyzer` | 打开交互式主题菜单 |
| `contactanalyzer subjects` | 列出已保存的主题 |
| `contactanalyzer new` | 通过粘贴的 URL 创建并运行一个主题 |
| `contactanalyzer add "Example Person" --run` | 添加资料 URL 并进行收集 |
| `contactanalyzer run "Example Person"` | 运行或恢复已保存的资料 |
| `contactanalyzer platforms` | 显示平台覆盖情况 |
| `contactanalyzer discover URL` | 检查可见的关系控制选项 |
| `contactanalyzer export "Example Person"` | 刷新 JSON 和 Markdown 导出 |
| `contactanalyzer audit "Example Person"` | 检查数据库和导出完整性 |
| `contactanalyzer codex "Example Person"` | 使用 Codex 审查最新运行情况 |
| `contactanalyzer doctor` | 检查浏览器、数据库、vault 和 Codex |
| `contactanalyzer config --vault PATH` | 更改输出 vault |
| `contactanalyzer --version` | 打印已安装的版本 |
更多示例可在[使用与配置](docs/USAGE.md)中找到。
## 输出
默认的 vault 是:
```
~/Documents/Contact-Analyzer/
```
输出是普通的 Markdown 和 JSON:
```
Contact-Analyzer/
├── .contactanalyzer/
│ └── contactanalyzer.sqlite3
└── Subjects/
└── example-person/
├── Summary.md
├── Master Contacts.md
├── master_contacts.json
├── platforms/
└── runs/
└── YYYYMMDD-HHMMSS/
├── Run Summary.md
├── run.json
└── platform/profile-id/
├── followers.json
├── followers.checkpoint.json
└── diagnostics/
```
联系人的唯一性取决于主题、平台和规范的资料 URL。一个联系人可以保留多个来源关系,同时在主导出中只出现一次。
## Codex 集成
Codex 以两种有限的方式使用。
首先,可以使用 JSON schema 和只读沙箱根据渲染的浏览器证据来分析通用网站页面。
其次,你可以要求 Codex 审查最新的运行诊断信息:
```
contactanalyzer run "Example Person" --with-codex
contactanalyzer run "Example Person" --with-codex-exec
contactanalyzer codex "Example Person"
contactanalyzer codex "Example Person" --exec
```
生成的案例包存储在 `codex_cases/` 下,并被 Git 忽略。在分享之前请先审查它们。
## 注意事项
* 仅对你有权访问的账户和数据使用 Contact Analyzer。
* 遵守适用的法律、平台条款、速率限制和组织政策。
* 可见的关系并不能保证完整列表可用。
* 私有列表、平台上限、挑战和速率限制将在最终状态中保持明确标示。
* 切勿发布专用浏览器配置文件、vault、数据库、屏幕截图、渲染后的 HTML、捕获的响应或诊断包。
* 收集完成后请关闭专用浏览器。
Chrome DevTools 端点可以控制专用配置文件可见的所有内容。Contact Analyzer 将其绑定到环回接口,并拒绝外部地址。
在报告漏洞之前,请阅读[安全策略](SECURITY.md)。
## 开发说明
```
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -r requirements.txt
python -m unittest discover -s tests -v
bash -n install.sh contactanalyzer scripts/launch-chrome.sh
```
测试套件使用合成夹具,并且不需要活动的浏览器。
请参见[贡献指南](CONTRIBUTING.md)和[发布检查清单](docs/PUBLISHING.md)。
## 许可证
Contact Analyzer 基于 [MIT 许可证](LICENSE) 提供。
为 OSINT Cabal 社区而构建。
标签:ESC4, Homebrew安装, OSINT, URL抓取, 代码示例, 数据分析, 数据去重, 数据抓取, 浏览器自动化, 逆向工具, 防御加固