atakanelik34/clawifi

GitHub: atakanelik34/clawifi

面向 AI 智能体的自托管互联网网关,将网页抓取、搜索、浏览器会话、OSINT、学术文献和结构化提取整合为统一的 REST 与 MCP 接口。

Stars: 0 | Forks: 0

# Clawifi **AI 智能体的自托管互联网网关。将 REST、MCP、浏览器会话、结构化提取和 OSINT 整合在同一接口中。**

Clawifi architecture diagram showing an AI agent calling the Clawifi Gateway Service through REST and MCP, then routing to web fetch, search, browser sessions, academic papers, GitHub, PyPI, social, OSINT, structured extraction, async jobs, diagnostics, and artifacts.

Python 3.11+ License: MIT Version Tests MCP tools Connectors

Clawifi 为智能体提供了一个感知源的互联网层:搜索、抓取、浏览、提取、阅读论文、检查代码仓库、查询 PyPI、读取 Reddit/X、运行被动域名 OSINT,以及通过统一的标准化 API 接口管理浏览器会话。 无需为每个智能体接入十几个 API 和爬虫,只需运行一个本地网关并调用 REST 或 MCP 即可。 ``` git clone https://github.com/atakanelik34/clawifi.git cd clawifi uv sync cp .env.example .env uv run clawifi-api ``` ``` curl http://localhost:8000/health # {"status":"ok"} ``` ## 为什么选择 Clawifi 智能体访问互联网通常意味着编写大量粘合代码: - 一个用于搜索的库 - 一个用于动态网站的浏览器技术栈 - 一个用于网页的爬虫 - 一个用于 GitHub/PyPI 的客户端 - 一个用于 arXiv/Semantic Scholar/OpenAlex 的通道 - 一套用于 Reddit/X 会话的临时方案 - 一套用于域名、DNS、SSL、子域名、IP 和用户名的 OSINT 工具链 - 还要在这一切之上实现自定义重试、缓存、速率限制、诊断和响应规范化 Clawifi 将这些整合为一个网关。 ## 功能矩阵 | 功能 | 接口 | 说明 | | --- | --- | --- | | 网页抓取 | REST + MCP | 静态页面、动态页面、屏幕截图、批量抓取 | | 搜索 | REST + MCP | DuckDuckGo、Google、Yandex 及其回退机制 | | 浏览器会话 | REST + MCP | 仅限本地的配置文件、TTL 会话、可选的屏幕截图/产物 | | 结构化提取 | REST + MCP | 选择器、JSON-LD、meta 标签、正则提示、嵌套对象、表格、预设 | | 学术论文 | REST + MCP | arXiv、PubMed、Semantic Scholar、OpenAlex 信息丰富 | | 代码/包情报 | REST + MCP | GitHub 仓库/代码搜索、PyPI 包 | | 社交读取 | REST + MCP | Reddit 帖子/个人主页,X/Twitter 读取辅助工具 | | 社交写入 | REST + MCP | X/Twitter 写入工具,具备明确的会话/账户风险边界 | | 域名 OSINT | REST + MCP | WHOIS、DNS、SSL、CT 子域名、暴力枚举子域名、Shodan InternetDB,以及可选的 VirusTotal | | 异步任务 | REST + MCP | 抓取、批量抓取、提取、DNS 任务,支持轮询/取消 API | | 诊断 | REST + MCP | 强类型错误、可重试性、证据、建议重试路径、敏感信息脱敏 | ## REST 快速示例 ``` # 搜索 POST /search {"query": "LLM reasoning", "source": "ddg"} # 获取页面并转换为 clean markdown + metadata POST /fetch {"url": "https://example.com/article"} # 使用 schema hints 提取结构化数据 POST /extract { "url": "https://example.com/pricing", "preset": "pricing_page" } # 阅读学术论文 POST /academic/paper {"id_or_url": "2401.12345", "enrich": true} # 运行被动域名侦察 POST /osint/domain {"domain": "example.com"} # 创建异步任务 POST /jobs {"operation": "fetch", "payload": {"url": "https://example.com"}} GET /jobs/{job_id} ``` ## 用于智能体的 MCP ``` uv run clawifi-mcp ``` 将兼容 MCP 的智能体指向该服务器。它将获得 43 个工具,涵盖抓取、批量抓取、浏览器会话、提取、任务、学术搜索、GitHub/PyPI、Reddit/X、域名 OSINT、用户名搜索以及诊断。 ## 产品文档 - [安装设置](docs/SETUP.md) — 本地、Docker、环境配置、初步检查 - [API 参考](docs/API_REFERENCE.md) — REST 封装、抓取、批量处理、提取、任务、搜索、OSINT - [MCP 用法](docs/MCP_USAGE.md) — 43 个 MCP 工具、示例、任务工具、浏览器配置文件/会话工具、最佳实践、OSINT 工具 - [智能体文档索引](llms.txt) — 简明的 LLM 入口,涵盖工具、路由、安全和测试命令 - [完整智能体快照](llms-full.txt) — 生成的智能体可读产品文档包 - [架构](docs/ARCHITECTURE.md) — GatewayService、连接器、FetchEnvelope、ExtractResponse、JobManager、SmokeResult - [运维](docs/OPERATIONS.md) — 验证门控、仅限必选的冒烟测试、真实场景冒烟测试矩阵、严格模式 - [故障排除](docs/TROUBLESHOOTING.md) — 诊断、可重试性、无敏感信息证据策略 - [连接器矩阵](docs/CONNECTORS.md) — 来源功能和回退链 - [会话管理](docs/SESSION_MANAGEMENT.md) — Cookie 导入/状态/删除 - [类别对比](docs/COMPARISON.md) — 跨智能体网络访问产品的公开安全定位 - [基准测试报告](docs/BENCHMARK_REPORT.md) — Web Access Bench 基线、注意事项和复现命令 ## 规范化输出 Clawifi 不会返回随机的连接器负载。网关响应通过强类型封装进行规范化: - `FetchEnvelope` — 内容、markdown、元数据、标头、最终 URL、链接、屏幕截图、诊断信息 - `ExtractResponse` — 符合 schema 的数据、证据路径、置信度、验证错误、局部失败 - `JobStatus` — 已排队/运行中/已成功/已失败/已取消、进度、强类型结果或强类型错误 - `Diagnostics` — 可能的封锁状态、封锁类型、证据、可重试性、建议的重试选项 - `Artifacts` — 屏幕截图、PDF、导出文件以及按需生成的文件 ## 架构 ``` AI Agent ├─ REST /v1/* └─ MCP stdio/SSE │ ▼ Clawifi Gateway Service ├─ auth, API keys, rate limits ├─ request routing and source hints ├─ async orchestration and job lifecycle ├─ cache and fallback policy ├─ connector diagnostics and normalization └─ artifact handling │ ├─ Web fetch / batch fetch / browser render ├─ Search: DuckDuckGo, Google, Yandex ├─ Academic: arXiv, PubMed, Semantic Scholar, OpenAlex ├─ Code: GitHub, PyPI ├─ Social: Reddit, X/Twitter ├─ OSINT: WHOIS, DNS, SSL, subdomains, IP intel, username search └─ Extraction: selectors, JSON-LD, recipes, presets ``` ## 验证基线 ``` # Clawifi Web Access Bench:需要严格的发布门槛 .venv/bin/python -m benchmarks.clawifi_web_access.runner --required-only --strict --json # 要求严格:15 个任务中 156/156 # 完整的非严格评分卡 .venv/bin/python -m benchmarks.clawifi_web_access.runner --json # 完整非严格:60 个任务中 606/606 ``` 该基准测试不会调用模型、不会调用付费提供商,也不会执行任何写入操作。可选的薄弱环节已记录在 [基准测试报告](docs/BENCHMARK_REPORT.md) 中。 ## 安全与隐私边界 - API 密钥通过显式配置接收,而非通过隐藏的全局状态。 - 浏览器配置文件是仅限本地的命名槽,位于配置的运行时目录下。 - API/MCP 响应绝不会返回配置文件路径、Cookie、localStorage 或会话存储。 - 除非提供商可以暴露安全的本地端点,否则 CDP URL 将保持为 `null`。 - 诊断负载在展示证据之前会对类似密钥的敏感信息进行脱敏处理。 - 社交写入工具受会话绑定,并明确承认账户风险。 ## 开发 ``` uv sync --extra dev cp .env.example .env uv run pytest tests/ -x --ignore=tests/browser uv run pytest tests/ -x make lint make fmt # 产品冒烟测试:非变更、secret-safe、直接的 GatewayService 检查 .venv/bin/python scripts/live_product_smoke.py --required-only --json # 真实冒烟矩阵 .venv/bin/python scripts/live_product_smoke.py --matrix config/live_smoke_targets.yaml --required-only --json .venv/bin/python scripts/live_product_smoke.py --matrix config/live_smoke_targets.yaml --json .venv/bin/python scripts/live_product_smoke.py --matrix config/live_smoke_targets.yaml --strict --json # 仅限免费的产品评分卡 .venv/bin/python -m benchmarks.clawifi_web_access.runner --required-only --json .venv/bin/python -m benchmarks.clawifi_web_access.runner --json ``` ## 社区 Clawifi 是开源的,由社区驱动。 - 缺少某个连接器?[提出 Issue](https://github.com/atakanelik34/clawifi/issues)。 - 构建了有用的东西?在 [Discussions](https://github.com/atakanelik34/clawifi/discussions) 中分享。 - 发现了 Bug?提交 PR。 ## 许可证 MIT。随意 Fork、发布、破坏并修复。请参阅 [LICENSE](LICENSE)。
标签:API网关, BeEF, ESC4, GitHub, Github监控, MCP, OSINT, Python, REST API, SOC Prime, Web搜索, 中间件, 互联网网关, 人工智能, 代码示例, 命令控制, 多源数据, 大模型工具, 学术论文搜索, 实时处理, 开发工具, 开源, 数据分析, 数据采集, 无后门, 浏览器会话, 爬虫, 特征检测, 用户模式Hook绕过, 社交媒体监控, 结构化数据提取, 网络安全, 网络调试, 自动化, 自托管, 请求拦截, 逆向工具, 隐私保护, 领域搜索引擎