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 截图:**

### 示例
```
$ 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可视化, 代码示例, 地理定位, 多模态安全, 数据分析, 数据可视化, 无后门, 网络测绘, 逆向工具