学习必须与实干相结合——泰戈尔

https://github.com/reconurge/flowsint

Flowsint:当开源情报开始长出一张会思考的关系网

有些工具,像一把扳手,拿起来就知道它是干什么的。

有些工具,则更像一个安静但警觉的调查员。你递给它一个域名、一个邮箱、一个钱包地址、一个组织名称,它不会急着下结论,而是把线索一根一根接起来,把关系一层一层铺开,最后在你眼前展开一张会“说话”的图谱。

Flowsint 就是这样一个存在。

它不是那种只会把结果一页页罗列给你的传统 OSINT 工具,也不是一个只擅长单点查询的情报脚本集合。它更像是一位坐在你身边的数字侦查搭档:擅长观察,耐心梳理,懂得把零散线索重新组织成一幅有方向感的调查地图。

根据仓库的描述,Flowsint 是一个现代化的平台,主打可视化、灵活性和可扩展性,采用基于图的调查方式,面向网络安全分析师和调查人员。README 里则进一步把它的气质讲得更清楚:这是一个开源的 OSINT 图谱探索工具,强调 ethical investigation、transparency 和 verification。换句话说,它不是为了制造信息焦虑而来,而是为了帮助人们更负责、更清晰地理解公开信息世界。

如果你一直在找一款“既能看见关系,又能承载调查流程,还足够现代”的 OSINT 平台,那么 Flowsint 值得认真看看。


它不是在展示数据,它是在组织线索的呼吸

很多人第一次接触情报工具时,都会经历一个相似的过程:

查域名,得到一堆 IP。
查 IP,又出来 ASN、地理位置、历史解析。
查网站,再拉出链接、文本、追踪器。
查用户名,社交平台又散成另一摊信息。

查着查着,浏览器开了十几个标签页,终端滚过去上百行输出,脑子里却只有一个问题:

我现在到底看到了什么,它们之间又是什么关系?

Flowsint 的可贵之处,就在于它没有把“更多信息”误认为“更好的调查”。它把重点放在关系上,放在图谱上,放在“从一个点出发,如何看见一张网”这件事上。

在它的世界里,域名不是一行字符串,IP 也不是冰冷数字,邮箱、组织、个人、社交账号、钱包地址都不是孤零零的碎片。它们更像是一群彼此牵引的人物角色,站在同一张调查舞台上,等待你把灯光打过去。只要一个节点被点亮,相关的边和实体就会逐渐浮现,像故事人物彼此登场一样,把原本沉默的信息世界组织出结构感。

于是,调查不再是机械地“查到了什么”,而变成了更像推理过程的“它为什么会和那个东西相连”。

这也是图谱式调查真正迷人的地方。


Flowsint 最动人的地方,是它把 OSINT 变得“可看、可走、可扩展”

README 里把 Flowsint 定义为 graph-based investigation tool,这个词说起来简单,真正做起来却很难。

因为图谱并不是把节点画成圆点、把关系画成线,就算完成任务了。真正有价值的图谱式调查平台,必须同时做好三件事:

  1. 能让你看清复杂关系
  2. 能让你沿着关系继续调查
  3. 能不断长出新的能力,而不是用几次就到头

Flowsint 恰恰就是朝这个方向设计的。

它有一个现代化的前端界面,强调 UI 友好,并且明确提到即使面对成千上万个节点也不会卡顿。这个细节非常重要,因为很多图谱工具一旦数据量上来,交互体验立刻就像背着沙袋跑步,拖拽困难、缩放发抖、节点混乱,最后用户不是在调查,而是在和界面较劲。

Flowsint 显然不想当那个让人皱眉的家伙。它想做的是:你把线索交给它,它帮你稳稳接住;你放大一片关系网,它尽量让你看得清;你不断扩展调查范围,它也尽量跟得上你的节奏。

这种体验上的现代感,恰恰是很多安全工具稀缺的东西。


它像一位多面情报员,见什么都想替你追一下

如果说图谱是 Flowsint 的骨架,那么 enrichers 就是它真正奔跑起来的肌肉。

README 中列出的 Available Enrichers 非常丰富,覆盖了域名、IP、ASN、CIDR、社交媒体、组织、加密货币、网站、邮箱、电话、个人,甚至还有与 N8n 的集成能力。这个列表一拉开,就能感受到它不是只想做一个“查 DNS 的小工具”,而是想成为调查流程中的一座能力中枢。

我们不妨把这些 enrichers 想象成 Flowsint 养在身边的一群信息侦察员。

面对域名,它会像个老练的网络档案管理员

你给它一个 domain,它不会只回你一句解析结果就转身离开。它会继续追:

  • 这个域名指向了哪些 IP
  • 有没有反向 DNS 关系
  • 它有哪些子域名
  • WHOIS 信息里藏着什么
  • 它能不能进一步映射到网站实体
  • 它属于哪个根域
  • 背后有没有关联 ASN
  • 历史上发生过哪些变化

这时候你会发现,Flowsint 不太像个“查询框”,更像一个会主动补问细节的调查搭档。你刚说了一句“我想看一下这个域名”,它已经把袖子卷起来,准备沿着这个点向外扩展一圈又一圈。

面对 IP,它像一个沉默但可靠的地理与网络线索员

一个 IP 在普通工具里,可能只是地理位置和运营商信息。

可在 Flowsint 这里,IP 更像一扇半开的门。它既可以带你走向 geolocation 和 network details,也可以进一步连到 ASN。换句话说,一个数字地址不会停在数字本身,而是会被纳入更大的关系结构里。

面对组织与个人,它又忽然像个企业关系分析师

组织可以映射到 ASN,可以查组织信息,可以找拥有的域名。个人则能和组织发生连接,也能和域名关联起来。

这意味着 Flowsint 并不把“技术资产”和“现实主体”割裂开来。它试图让基础设施、身份线索、组织关系处在同一张图里。这一点,对于威胁情报、品牌风险分析、诈骗调查、资产归属判断,都非常有价值。

面对邮箱、电话、社交账号,它像一个擅长拼接身份碎片的人

邮箱可以去找 Gravatar,查 breaches,也能关联到 domains。电话也可以对接 breach 线索。社交媒体方面则提供了 Maigret 这样的用户名搜索能力。

这类能力最迷人的地方在于,它们经常不是“直接给答案”,而是提供一串可供验证和延展的线索。真正的调查从来不是一道选择题,而更像一条不断分岔的小路。Flowsint 做的,就是把这些小路尽可能整齐地铺在你脚下。

面对加密货币世界,它又像一个会读链上足迹的观察者

钱包到交易历史、钱包到 NFT,这类 enrichers 让它不仅停留在传统网络资产层面,也能触碰链上世界的公开痕迹。

这意味着你在处理某些新型诈骗、链上行为分析、数字资产关联调查时,不必把工具链完全切断重来,Flowsint 有机会继续把这些线索收进同一张图里。

面对网站,它像一个愿意走进去逛一圈的爬虫侦察兵

Website Crawler、Website to Links、Website to Domain、Website to Webtrackers、Website to Text,这些能力组合在一起,其实已经很像一位能“进屋看看”的调查员了。

它不仅站在门口看门牌号,还愿意往里走,看看里面有什么链接、什么文字、挂了哪些追踪脚本。网站不再只是 URL,而像一个可被拆解、提取和重新组织的现场。


它的架构也很像一支纪律分明的小队

一个项目是否值得长期关注,不只看它现在能做什么,还要看它的内部结构是否足够清晰。

Flowsint 在 README 里把整个项目拆成了多个自治模块:

  • flowsint-core
  • flowsint-types
  • flowsint-enrichers
  • flowsint-api
  • flowsint-app

这个结构很讨喜,因为它不是把所有逻辑都炖进一锅巨大的汤里,而是明确分工、层层递进。

如果用拟人的方式来形容,这几个模块几乎像是一支各司其职的调查小队。

flowsint-types 像档案室

这里放着各种 Pydantic 数据模型和类型定义。域名、IP、ASN、CIDR、个人、组织、邮箱、电话、网站、社交资料、凭证、加密钱包、交易、NFT 等等,像一份份编号清晰的档案,被它认真归类收纳。

它不喧哗,但没有它,大家说话就会各说各话。

flowsint-enrichers 像外勤组

它们负责跑出去采集、处理、补充信息。你给一个输入,它们就带着任务出门,把可用线索一件件带回来。域名调查、IP 分析、社交搜索、邮箱泄露、链上查询,都是这支队伍的日常。

flowsint-core 像总指挥部

这里掌管数据库连接、编排器、vault、Celery 任务、认证授权、日志事件、配置管理、基础类和工具函数。它不像聚光灯下最显眼的人,但它决定了整支队伍是否能稳定行动。

说白了,flowsint-core 就是那个坐在中控室里,看着地图、调度每一路调查资源的人。

flowsint-api 像前线联络官

它提供 FastAPI 服务、API 路由和 schema,负责把前端的请求和后端的能力接起来。它懂得如何和外界说话,也懂得如何把命令准确传回内部系统。

flowsint-app 像展示调查全局的作战桌

这是用户真正看见和操作的地方。README 里提到它使用了 Vite、React、TanStack Query、TanStack Router、XYflow、react-force-graph。你几乎能想象到它想呈现的气质:快、现代、交互顺滑、图谱能力强。

整个依赖链条也很清楚:

1
2
3
4
5
6
7
8
9
flowsint-app

flowsint-api

flowsint-core

flowsint-enrichers

flowsint-types

这个层次结构像一条干净的河流,从界面到类型,水是顺着逻辑往下流的。对于开发者来说,这种清晰的边界非常宝贵,因为扩展能力时不会轻易牵一发而动全身。


它对“可扩展”这件事,是认真的

很多工具口头上都说自己 extensible,结果扩展一个能力要改半个仓库,读三天代码,最后还得祈祷不要把老逻辑搞坏。

Flowsint 在 README 里把开发工作流说得很直接:

  1. 添加新 types 去 flowsint-types
  2. 添加新 enrichers 去 flowsint-enrichers
  3. 添加新 API endpoint 去 flowsint-api
  4. 添加新 utilities 去 flowsint-core

这其实是在告诉开发者:你想给我长新本事,可以,但请有秩序地来。

这种分层意味着项目不是靠“记忆力”维护,而是靠结构维护。新人进来不必一头扎进迷宫,而能顺着功能类型找到该落脚的位置。一个调查平台如果想活得久,扩展机制必须像脊柱一样挺直。Flowsint 看起来已经有了这个意识。


它很在意现代部署体验,不想让你刚认识它就先被安装劝退

很多优秀工具,死在第一步安装。

不是功能不行,而是第一次见面就让用户摔了个跟头。环境变量、依赖地狱、构建失败、平台兼容性、端口冲突,哪一样都可能把热情浇灭。

Flowsint 在 README 的 Get started 部分明显下了功夫,它几乎是用一种“别紧张,我带你走”的口吻,把 Linux/macOS、Windows、网络部署都写得很清楚。

Linux / macOS 快速启动

前提非常直接:

  • Docker
  • Make

启动方式也很干脆:

1
2
3
git clone https://github.com/reconurge/flowsint.git
cd flowsint
make prod

这类命令的优点在于,几乎没有多余绕路。像是在对用户说:来,先坐下,我帮你把大部分事情收拾好。

Windows 也照顾到了

很多开源项目嘴上说跨平台,实际只对类 Unix 世界温柔。Flowsint 这点做得不错,README 专门给了 Windows 在 cmd 和 PowerShell 下的步骤,而且特别说明不需要 Make。

1
2
3
4
5
6
7
git clone https://github.com/reconurge/flowsint.git
cd flowsint

copy .env.example .env
copy .env.example flowsint-api\.env
copy .env.example flowsint-core\.env
copy .env.example flowsint-app\.env

然后启动:

1
docker compose -f docker-compose.prod.yml up -d

它甚至还补了一句:这里会直接从 GitHub Container Registry 拉取预构建镜像,不需要本地构建。

这就很像一个有经验的项目维护者在提前替你扫雷:我知道你最怕哪一步出问题,所以我先把最容易卡住的地方替你讲明白。

首次登录也很清楚

启动之后,去本地地址注册账户即可,没有默认账号密码。这一点也很符合现代应用习惯,不神神秘秘,不让人猜。

README 里还有一句非常能代表 Flowsint 气质的话:OSINT investigations need a high level of privacy. Everything is stored on your machine.

这句话读起来很轻,但分量很重。

它像是在告诉你:做调查这件事,本来就应该谨慎,数据、上下文、过程、痕迹,都不该轻易漂在别人的云上。把一切尽可能留在本机,不只是技术实现,更是一种对调查工作本身的尊重。


如果你想把它部署给团队,它也准备好了成年人的用法

一个只适合个人玩具式体验的项目,和一个真正能走进团队场景的平台,差别往往出现在网络部署这一步。

Flowsint README 里明确提到,同样的部署方式可以直接放到服务器上,前端会同时提供 UI 并代理所有 API 请求,客户端不需要额外配置。这一点非常实用,因为它减少了部署复杂度,也让团队接入更轻。

服务端部署示例同样很顺:

1
2
3
4
git clone https://github.com/reconurge/flowsint.git
cd flowsint
cp .env.example .env
docker compose -f docker-compose.prod.yml up -d

部署之后,局域网中的用户可以通过 http://<server-ip>:5173 访问。

不过 Flowsint 并没有因为“能跑起来”就装作万事大吉,它还认真提醒了在暴露到网络之前需要更换默认 secrets,包括:

  • AUTH_SECRET
  • MASTER_VAULT_KEY_V1
  • NEO4J_PASSWORD

甚至还给了生成示例命令。

1
openssl rand -hex 32
1
python3 -c "import os, base64; print('base64:' + base64.b64encode(os.urandom(32)).decode())"

这类细节很能体现项目态度。它不是只顾展示能力,不顾使用边界;而是在告诉你:调查平台可以很锋利,但它自己的门锁也得拧紧。

README 还提到只有 5173 端口会暴露到网络,其余 PostgreSQL、Redis、Neo4j 和 API 都绑定在服务器的 127.0.0.1,由前端代理访问。这种设计对于降低直接暴露面非常友好。

如果需要 HTTPS,还推荐在 5173 前面放反向代理,比如 Caddy:

1
2
3
flowsint.example.com {
reverse_proxy 127.0.0.1:5173
}

读到这里你会感觉,Flowsint 并不只是个“能启动的仓库”,它已经在努力成长为一个可以认真部署、认真使用、认真维护的平台。


它不只在意功能,也在意边界

在今天这个时代,任何和 OSINT、调查、数据关联有关的工具,只要稍微有点能力,就绕不开一个问题:

工具该如何面对伦理边界?

Flowsint 在 README 中对此态度非常明确。它强调这是一个为 lawful、ethical investigation 和 research purposes 设计的平台,适用对象包括:

  • 网络安全研究人员和分析师
  • 记者和 OSINT 调查员
  • 执法或反欺诈调查团队
  • 进行内部威胁情报或数字风险分析的组织

同时,它也清楚列出了不允许的使用方向,例如未经授权的入侵、监控、数据收集,骚扰、开盒、针对个人的攻击,政治操纵、虚假信息传播或侵犯隐私法律等。

这类声明不是装饰。

对一个 OSINT 工具而言,伦理不是 README 角落里的礼仪性句子,而应该是写进产品气质里的底线。Flowsint 至少在文档层面,把这条线画得很直白,也很认真。

这反而让我觉得它更可信。

真正成熟的调查工具,不会鼓励操作者兴奋地越界,而是会提醒使用者,信息能力越强,越需要自我约束。一个懂得说“不”的平台,通常比一个只会炫耀“我什么都能查”的平台更值得被带进正式场景。


它的开发体验,也透露出一种“我还年轻,但我想长成体系”的野心

README 里毫不掩饰地说,Flowsint 仍处于早期开发阶段,非常需要社区帮助。

这句话很诚实。

有些项目明明还在快速变化期,却偏要把自己包装得像一块打磨到没有棱角的工业制品。Flowsint 没有这么做。它承认自己还在成长,也欢迎 issue、feature proposal 和社区参与。

从开发说明来看,它已经有了相当清楚的工程组织方式。

开发环境运行很简单:

Linux / macOS:

1
make dev

Windows:

1
2
docker compose -f docker-compose.dev.yml up -d --build
docker compose -f docker-compose.dev.yml logs -f

本地开发访问地址为:

1
http://localhost:5173

项目测试也按模块拆开:

1
2
3
4
5
6
7
8
9
10
11
cd flowsint-core
uv run pytest

cd ../flowsint-types
uv run pytest

cd ../flowsint-enrichers
uv run pytest

cd ../flowsint-api
uv run pytest

这类结构不一定意味着它已经“完善无缺”,但至少说明它正在朝着一个可持续协作的项目形态前进。特别是对于想参与贡献的开发者来说,这种模块化布局和相对明确的工作流,会大幅降低理解成本。

它像一个还在长身体的年轻调查员,步子不一定每一步都踩得完美,但方向感是有的,骨架也是正的。


为什么我会觉得 Flowsint 让人兴奋

因为它踩中了一个很关键的点:

它不是把 OSINT 当作一堆查询接口的排列组合,而是试图把调查过程本身产品化。

这两者的区别非常大。

前者是工具箱思维:给你很多刀、钳子、锤子,至于怎么拼,靠你自己。
后者是调查流思维:给你一张工作台,让你能围绕线索持续推进、持续验证、持续扩展。

Flowsint 的“graph-based investigations”本质上就是在回答这个问题:调查不仅仅是获取信息,更是理解关系、保留上下文、建立路径、验证推断。

这也是为什么它的名字里有一种流动感。Flowsint 这个名字本身就像在暗示:情报不是静止的点,而是流;调查不是一次性动作,而是流程;关系不是表格里的死链接,而是一张会不断延展的网络。

当一个项目开始试图承载“调查过程”,而不只是“查询结果”时,它就已经和很多脚本工具拉开差距了。


适合谁去使用它

如果你是下面这些角色中的一种,Flowsint 很可能会让你产生兴趣:

网络安全分析师

当你面对域名、IP、基础设施、组织归属、可疑资产扩散路径时,Flowsint 的图谱思维会比纯文本结果更有助于判断。

OSINT 调查员

当公开信息跨越多个维度,网页、身份、邮箱、社交账号、组织和历史关系交织在一起,图形化调查会让你更容易保留上下文,不至于在多个页面之间丢线。

记者与研究者

当你需要对公开世界中的实体关系进行验证,而不是只想快速抓一条结果,Flowsint 这种强调 transparency 和 verification 的定位会很契合。

反欺诈、风控、威胁情报团队

当线索不是单点存在,而是成网扩散,图谱式工具天然更适合发现关联和异常。

喜欢折腾开源情报平台的开发者

如果你不仅想用,还想扩展 enrichers、改 API、接新数据源、补新类型,那么 Flowsint 的模块化设计会比那些糊成一团的大项目更友好。


一个项目真正迷人的时刻,是它开始拥有“平台感”

我看 Flowsint 时,最强烈的感受不是“它已经把所有事情做到极致了”,而是“它已经长出了平台的轮廓”。

这个轮廓包括:

  • 清晰的定位
  • 现代的前端体验
  • 图谱式调查范式
  • 丰富的 enricher 能力
  • 相对明确的模块边界
  • 支持本地私有化运行
  • 可进入团队部署场景
  • 对伦理和合法使用的明确强调

这些东西组合在一起,就会形成一种平台感。

平台感意味着什么?

意味着它不是一时兴起的 demo,不是只为某个截图而生的外壳,也不是一堆功能勉强拼起来的样板间。它已经在尝试成为一个可以被真正使用、被真正扩展、被真正带入工作流的系统。

这很难得。

尤其在 OSINT 和安全工具领域,很多项目要么技术强但体验粗糙,要么界面好看但底子空心。而 Flowsint 给人的第一印象是,它在努力把“现代产品感”和“调查专业性”放到一张桌子上谈。


快速上手命令整理

如果你只是想先把它跑起来,下面这些命令已经足够你开始接触 Flowsint。

Linux / macOS 生产启动

1
2
3
git clone https://github.com/reconurge/flowsint.git
cd flowsint
make prod

Windows 启动

1
2
3
4
5
6
7
8
9
git clone https://github.com/reconurge/flowsint.git
cd flowsint

copy .env.example .env
copy .env.example flowsint-api\.env
copy .env.example flowsint-core\.env
copy .env.example flowsint-app\.env

docker compose -f docker-compose.prod.yml up -d

开发模式

1
make dev

或者 Windows 下:

1
2
docker compose -f docker-compose.dev.yml up -d --build
docker compose -f docker-compose.dev.yml logs -f

首次访问

1
http://localhost:5173/register

API 模块单独运行

1
2
uv sync
uv run uvicorn app.main:app --host 0.0.0.0 --port 5001 --reload

前端模块单独运行

1
2
npm install
npm run dev

最后想说

Flowsint 像一位刚刚走进聚光灯下的调查平台。

它年轻,仍在成长;
它坦率,知道自己还需要社区;
它警觉,强调伦理和合法边界;
它灵活,愿意把能力拆成模块;
它现代,不想让复杂调查只能在混乱和迟滞中进行;
它最吸引人的地方,是试图把公开情报世界里那些零散、漂浮、互相牵连的线索,重新编织成一张可以被人理解、被人追踪、被人验证的关系网。

如果传统 OSINT 工具像一排排冷冰冰的档案柜,那么 Flowsint 更像一间亮着灯的调查室。你带着问题走进去,它不会立刻替你宣布真相,而是安静地把墙上的线索一根根连起来,让你看见那些原本埋在公开信息深处的呼应、影子与路径。

在这个信息越来越多、关系越来越复杂的时代,能够帮人“看见关系”的工具,往往比单纯“给出结果”的工具更珍贵。

而 Flowsint,正在努力成为这样的工具。