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, 异步架构, 数字取证, 数据合规, 特征检测, 网络安全, 自动化脚本, 逆向工具, 隐私保护