nogits-noglory/data-breaker
GitHub: nogits-noglory/data-breaker
一款开源隐私保护工具包,帮助用户发现持有其个人信息的数据代理商并批量执行退出请求。
Stars: 0 | Forks: 0
# databroker-pipeline
一款开源工具包,助你摆脱数据代理商行业。你是
自己的代理:它在本地运行,针对项目自动构建并持续更新的代理商目录及其
经过验证的退出机制。
你可以根据自己想要的自动化程度来使用它:
- **Tier 0,手动。** 阅读 [`BROKERS.md`](BROKERS.md),这是一个可浏览的目录,
包含每个代理商及其退出方法。无需代码。
- **Tier 1,无 LLM。** `python cli.py remove --profile data/profile.yaml` 通过真实的浏览器重放
已记录的流程。确定性执行,无需 API key,零成本。
- **Tier 2,你自己的 LLM。** 一个 MCP server(计划中),将目录和
操作暴露给任何 MCP 客户端。
- **Tier 3,智能体。** 让编程智能体操作此代码仓库,并为你执行维护和移除任务。
在底层,它是一个异步 pipeline:发现(registry scrape + OSINT crawl)
填充候选存储,侦察器将候选数据转化为经过验证的退出机制,
移除智能体重放这些流程。各个阶段共享一个数据模型,并通过
durable queues 进行通信,从而可以同时运行。
```
registry ─┐
├─> CandidateStore ──> scout_q ──> [scout workers] ──> BrokerStore ──> BROKERS.md
crawler ─┘ │
v
your profile ──> actionable brokers ──> remove_q ──> [remove workers] ──> submitted / needs-human
```
## 目录结构
```
databroker/
core/
models.py BrokerRecord, Candidate, User, RemovalJob + status/method/job enums
domains.py canonical_domain (one source of truth)
recon.py cheap HTTP recon, fingerprinting, crt.sh siblings, screenshots
classify.py "is this a broker?" gate (keeps junk out of the scout)
store.py BrokerStore / CandidateStore -- the only writers of YAML
queue.py async Queue: InMemoryQueue + durable SqliteQueue
config.py paths, models, proxies, keys (env-driven)
stages/
registry.py 1. registry scraper (CA auto, VT/TX/OR via file)
crawler.py 2. OSINT discovery (crt.sh now; passive-DNS pluggable)
scout.py 3. recon-first scout; browser deep-scout behind a lazy seam
remover.py 5. removal agent: resolve recipe -> triage -> replay
orchestrator.py wires queues, runs worker pools concurrently
cli.py one entry point (scrape/crawl/discover/scout/remove/migrate/stats)
scripts/
migrate_yaml.py legacy brokers_scouted.yaml -> new schema (repairs recipes)
data/
brokers.yaml 4. the registry (the YAML)
candidates.yaml discovered, pre-scout
```
## 快速开始
```
pip install -e . # or: pip install pyyaml tldextract httpx mmh3
python cli.py stats # snapshot of the catalogue
python cli.py markdown # (re)generate BROKERS.md
# 选择退出 (Tier 1, 无 LLM)
cp data/profile.yaml.example data/profile.yaml # fill in your info
pip install playwright && playwright install chromium
python cli.py remove --profile data/profile.yaml # dry run: fills, doesn't submit
python cli.py remove --profile data/profile.yaml --live # actually submit
# 保持目录增长 (maintainers)
python cli.py discover # registries + crawler -> candidates
python cli.py scout # scout pending candidates -> brokers.yaml
```
你的 `data/profile.yaml` 始终保留在你的本地机器上。移除操作默认以 dry-run 方式进行,因此你
可以在实际提交之前观察流程重放。
## 内置功能与需自定义接入的部分
在此处构建并经过单元测试(无需 API key,无需浏览器):数据模型与迁移、
两个存储、两个队列、分类器、侦察(probe + fingerprint + crt.sh +
状态模型),以及移除智能体的 resolve/triage/replay 逻辑。`python
tests/test_pipeline.py` 执行了完整的 candidate -> scout -> store 路径。
需要在你的开发环境中补充的扩展点(接口已定义,驱动目前为 no-op):
- **浏览器深度侦察** (`stages/scout.py::_deep_scout`):延迟导入
`databroker.stages.browser_scout`。将你现有的 `broker_scout.py` 作为
该模块放入,并暴露一个 `scout_url(url, name, cfg) -> findings` 适配器。
- **移除驱动** (`stages/remover.py`):`NullBrowserDriver` / `NullMailDriver`
执行 dry run。实现 Playwright 重放(驱动已解析的步骤)和 SMTP 发送。
- **代理** (`core/config.py::proxies`):将一个支持代理的 fetcher 传递给侦察以处理
`blocked` 站点;在那里轮换住宅 IP。
- **被动 DNS** (`stages/crawler.py::SecurityTrailsSource`):添加该 API 调用。
- **用户 / 认证 / IDV**:orchestrator 中的 `get_user` 是一个 callable,你可以通过
你的数据库为其提供支持。`User.authorization_ref` / `idv_status` 指向已签名的 LPOA
和 IDV 供应商 token;原始 ID 材料绝不会进入此代码中。
## 建议的开发顺序
1. 执行迁移,运行 `stats`,查看 `data/brokers.yaml`。
2. 接入浏览器深度侦察适配器;在一小部分数据上运行 `scout`。
3. 实现 Playwright + SMTP 移除驱动;先进行 dry-run,然后在你本人身上进行真实运行。
4. 添加住宅代理;重新侦察 40 个 `blocked` 的代理商。
5. 使用 `--osint` 开启爬虫;当你拥有 key 时添加被动 DNS。
标签:ESC4, OSINT, RPA, 异步架构, 数字取证, 数据合规, 特征检测, 网络安全, 自动化脚本, 逆向工具, 隐私保护