conflict-investigations/media-search-engine

GitHub: conflict-investigations/media-search-engine

一个聚合多个开源冲突情报数据库的地理定位搜索工具,支持通过社交媒体链接快速查询是否已有地理定位记录。

Stars: 112 | Forks: 11

# OSINT 地理定位数据库搜索 检查(社交)媒体帖子是否已经存在并已在 多个数据库(例如 Belllingcat、Cen4InfoRes、GeoConfirmed)中进行地理定位。 *现在支持通过 [leaflet.js](https://leafletjs.com/) 在地图上进行可视化* 同时提供**简单的 Web UI**、**API** 以及**命令行客户端**。 ### 安装说明 需要 Python、`pip` 和 `flask` 包(CLI 可以在不使用 `flask` 的情况下运行)。 用于数据提取的 [osint-geo-extractor](https://pypi.org/project/osint-geo-extractor/) 库。 ``` virtualenv .venv .venv/bin/activate pip install -e . ``` ### 用法 **命令行** ``` # 首次运行前:下载必要文件 media_search -o # 将数据导入 pre-formatted database,以便 web API 能够使用。 media_search -d # 以 JSON 格式打印 URL media_search -j # 搜索特定 URL media_search ``` ### 获取数据 `Belllingcat` 数据库来自他们的 [乌克兰平民伤害](https://ukraine.bellingcat.com/) 项目。 那里有一个“Export to JSON”按钮。 `Cen4InfoRes` 数据库来自信息韧性中心(Center for Information Resilience)的 [关注俄罗斯地图](https://eyesonrussia.org/)。 `GeoConfirmed` 数据库来自 [GeoConfirmed 地图](https://geoconfirmed.org/ukraine)。 *注意:由于数据格式更改,目前无法使用* `Reukraine` 数据库来自 [reukraine.shtab.net](https://reukraine.shtab.net)。 *注意:Beta 状态,目前未公开。* `Texty` 数据库来自 [Texty.org.ua](https://texty.org.ua/projects/107577/under-attack-what-and-when-russia-shelled-ukraine/)。 在原作者的善意许可下使用。 `media_search -o` 命令将代表您下载数据,并将其放入 `data/` 文件夹中。 ### API 和 Web UI 有一个带有纯 HTML+JS 前端的简单 `flask` 应用程序。 API 部分要求您事先对预格式化的数据库进行 dump。 在启动 API 服务器之前,请运行 `media_search -d`。 运行服务器: ``` $ flask --app 'media_search.web' run --port 8000 ``` 默认情况下,服务器将在 `http://localhost:8000/` 上运行。不建议在生产环境中运行 `flask` 开发服务器。 例如,使用 [gunicorn](https://flask.palletsprojects.com/en/2.2.x/deploying/gunicorn/): ``` $ gunicorn -w 2 media_search.web:app' ``` **可用路由** - `/`: Web UI - `/api/v1.1/export` - `GET` - 以 JSON 格式导出所有 URL - `/api/v1.1/query` - `GET`/`POST` - 检查 URL 是否存在于数据库中 **参数**: - `urls`: 要搜索的 URL 列表(作为 `POST` JSON 字符串数组,或以逗号分隔的 `GET` 参数) - `format`: `text`、`json` 或 `csv` - 在 Web UI 中显示结果 (`text`) 或强制下载为 `results.json` 或 `results.csv` 文件 **响应:** { "dataset": { "t.me/truexanewsua/57093": [ { "desc": "2022-08-15 - A naval mine exploded...", "id": "UW11823", "location": { "latitude": "46.0552", "longitude": "30.443433", "place_desc": "Ukraine - Odessa Oblast - Zatoka" }, "source": "CENINFORES", "unsanitized_url": "https://t.me/truexanewsua/57093" } ], "twitter.com/foo/bar": ["..."], "baz/bar": ["..."], }, "message": "Success! Url found in database", "success": true } 如果未找到条目,则 `success` 为 `false`。 - `/api/v1.1/query/csv` - `POST` - 检查上传的 `.csv` 文件中的所有链接 **参数:** 作为 `POST` 表单数据上传的文件,命名为 `file` **curl 示例:** ``` # POST curl 'http://localhost:8000/api/v1.1/query' \ -X POST \ -H 'Content-Type: application/json' \ --data-raw '{"urls":["https://twitter.com/RALee85/status/1497853526881546241"]}' # GET curl 'http://localhost:8000/api/v1.1/query?\ urls=https://twitter.com/RALee85/status/1497853526881546241,\ https://twitter.com/GeoConfirmed/status/1508518239567065090' ``` **Web UI 截图:** ![Web UI](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/889620daee075436.png) ### 示例 ``` $ media_search 'https://twitter.com/RedIntelPanda/status/1488569554028707847' Found URL https://twitter.com/RedIntelPanda/status/1488569554028707847 in 'CEN4INFORES' dataset Id: UW0067 Description: DATE: 01/01/2022 LINK: https://twitter.com/GirkinGirkin/status/1488544876908187650 GEOLOCATION: https://twitter.com/RedIntelPanda/status/1488569554028707847 BRIEF DESCRIPTION: Russian military equipment moving in Belarus COUNTRY: Belarus PROVINCE: DISTRICT: TOWN/CITY: Petrishki COORDINATES: 54.069385, 27.211645 ARMS/MUNITION: VIOLENCE LEVEL: 1 ENTRY: UW0067 ``` # 相关项目 另请参阅 [atlos.org](https://atlos.notion.site/Platform-Overview-46d4723f22ef420fb5ad0e07feba8d79), 它试图做类似的事情,但似乎主要用于非公开的调查。 信息韧性中心(Centre for Information Resilience)最近也加大了将其他来源整合到其[地图](https://eyesonrussia.org/)中的力度,因此这个原本打算作为过渡性工具的实用性正在进一步降低。 # 许可证 版权所有 2022-2023 conflict-investigations 团队。 采用 [MIT 许可证](https://mit-license.org/) Jack Moore 的 [autosize](https://www.jacklmoore.com/autosize/) 库,采用 MIT 许可证。 用于地图的 [leaflet](https://leafletjs.com/),采用 2-clause BSD 许可证: 标记 favicon 来自 [Leaflet 项目](https://leafletjs.com/),版权所有 (c) 2010-2022, Vladimir Agafonkin
标签:ESC4, Flask, OSINT, Python, Web可视化, 代码示例, 地理定位, 多模态安全, 数据分析, 数据可视化, 无后门, 网络测绘, 逆向工具