flowsint
学习必须与实干相结合——泰戈尔
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,这个词说起来简单,真正做起来却很难。
因为图谱并不是把节点画成圆点、把关系画成线,就算完成任务了。真正有价值的图谱式调查平台,必须同时做好三件事:
- 能让你看清复杂关系
- 能让你沿着关系继续调查
- 能不断长出新的能力,而不是用几次就到头
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 | flowsint-app |
这个层次结构像一条干净的河流,从界面到类型,水是顺着逻辑往下流的。对于开发者来说,这种清晰的边界非常宝贵,因为扩展能力时不会轻易牵一发而动全身。
它对“可扩展”这件事,是认真的
很多工具口头上都说自己 extensible,结果扩展一个能力要改半个仓库,读三天代码,最后还得祈祷不要把老逻辑搞坏。
Flowsint 在 README 里把开发工作流说得很直接:
- 添加新 types 去 flowsint-types
- 添加新 enrichers 去 flowsint-enrichers
- 添加新 API endpoint 去 flowsint-api
- 添加新 utilities 去 flowsint-core
这其实是在告诉开发者:你想给我长新本事,可以,但请有秩序地来。
这种分层意味着项目不是靠“记忆力”维护,而是靠结构维护。新人进来不必一头扎进迷宫,而能顺着功能类型找到该落脚的位置。一个调查平台如果想活得久,扩展机制必须像脊柱一样挺直。Flowsint 看起来已经有了这个意识。
它很在意现代部署体验,不想让你刚认识它就先被安装劝退
很多优秀工具,死在第一步安装。
不是功能不行,而是第一次见面就让用户摔了个跟头。环境变量、依赖地狱、构建失败、平台兼容性、端口冲突,哪一样都可能把热情浇灭。
Flowsint 在 README 的 Get started 部分明显下了功夫,它几乎是用一种“别紧张,我带你走”的口吻,把 Linux/macOS、Windows、网络部署都写得很清楚。
Linux / macOS 快速启动
前提非常直接:
- Docker
- Make
启动方式也很干脆:
1 | git clone https://github.com/reconurge/flowsint.git |
这类命令的优点在于,几乎没有多余绕路。像是在对用户说:来,先坐下,我帮你把大部分事情收拾好。
Windows 也照顾到了
很多开源项目嘴上说跨平台,实际只对类 Unix 世界温柔。Flowsint 这点做得不错,README 专门给了 Windows 在 cmd 和 PowerShell 下的步骤,而且特别说明不需要 Make。
1 | git clone https://github.com/reconurge/flowsint.git |
然后启动:
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 | git clone https://github.com/reconurge/flowsint.git |
部署之后,局域网中的用户可以通过 http://<server-ip>:5173 访问。
不过 Flowsint 并没有因为“能跑起来”就装作万事大吉,它还认真提醒了在暴露到网络之前需要更换默认 secrets,包括:
AUTH_SECRETMASTER_VAULT_KEY_V1NEO4J_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 | flowsint.example.com { |
读到这里你会感觉,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 | docker compose -f docker-compose.dev.yml up -d --build |
本地开发访问地址为:
1 | http://localhost:5173 |
项目测试也按模块拆开:
1 | cd flowsint-core |
这类结构不一定意味着它已经“完善无缺”,但至少说明它正在朝着一个可持续协作的项目形态前进。特别是对于想参与贡献的开发者来说,这种模块化布局和相对明确的工作流,会大幅降低理解成本。
它像一个还在长身体的年轻调查员,步子不一定每一步都踩得完美,但方向感是有的,骨架也是正的。
为什么我会觉得 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 | git clone https://github.com/reconurge/flowsint.git |
Windows 启动
1 | git clone https://github.com/reconurge/flowsint.git |
开发模式
1 | make dev |
或者 Windows 下:
1 | docker compose -f docker-compose.dev.yml up -d --build |
首次访问
1 | http://localhost:5173/register |
API 模块单独运行
1 | uv sync |
前端模块单独运行
1 | npm install |
最后想说
Flowsint 像一位刚刚走进聚光灯下的调查平台。
它年轻,仍在成长;
它坦率,知道自己还需要社区;
它警觉,强调伦理和合法边界;
它灵活,愿意把能力拆成模块;
它现代,不想让复杂调查只能在混乱和迟滞中进行;
它最吸引人的地方,是试图把公开情报世界里那些零散、漂浮、互相牵连的线索,重新编织成一张可以被人理解、被人追踪、被人验证的关系网。
如果传统 OSINT 工具像一排排冷冰冰的档案柜,那么 Flowsint 更像一间亮着灯的调查室。你带着问题走进去,它不会立刻替你宣布真相,而是安静地把墙上的线索一根根连起来,让你看见那些原本埋在公开信息深处的呼应、影子与路径。
在这个信息越来越多、关系越来越复杂的时代,能够帮人“看见关系”的工具,往往比单纯“给出结果”的工具更珍贵。
而 Flowsint,正在努力成为这样的工具。
