开源调查 收集信息追踪钱的轨迹OSINT基础和一个Timeline示例

本博客会陆续演示一些开源调查的案例,以演示其技巧。

osint

(Open-source intelligence) OSINT 是从公开可用的来源收集数据的调查。OSINT 不同于一般的调查研究(Research),它是为特定的个人或团队量身定制的特的情报处理工作,以支持其必须做出的特定决策,不论是情报机构、调查性新闻记者还是民间独立组织

想必绝大多数人在阅读巴拿马文件或有关贪腐的法庭文件后只把它们当成了新闻,对挖掘感兴趣的人还是太少。但的确是有的,当然技能也是个关键。

通过阅读法庭文件,你是否想知道该如何查看一些公司所经历的事件的时间表?被税务人员追赶后,他们是否改变了公司结构?你该怎么做才能清楚地看到这些信息?

许多 OSINT 调查涉及到公司,他们的结构,当然还有他们的董事。这里面会需要一些工具,比如 OpenCorporates 就是个非常不错的帮手,TimelineJS 也是一个强大的工具,对于深入调查来说很有效,调查性记者都应该会用。

本文先介绍一些基础知识和简单步骤,然后使用一个实例来展示使用 TimelineJS 做出的调查。

OpenCorporates API 教程

你现在的目标是拥有一个工具,可以打入公司名称和管辖区(2个字母的国家代码)并让它自动返回该公司的所有公司文件。第一步是解决 API 中的公司记录。你可以在这里看到一些文档。看起来你需要使用两个端点:

  1. GET companies/search — 需要一个 q 参数的查询字符串和一个你正在搜索的管辖区(国家/地区)的 jurisdiction_code。
  2. GET companies/jurisdiction_code/company_number/filings — 再次使用 jurisdiction_code 从原始的企业搜索 API 调用返回的公司编号。

这两个小的 API 调用可以为我们提供有关公司的大量信息,但是我们也可以将许多其他 API 调用在 OSINT 目的上(如果您想到的话欢迎在留言板提出建议)。现在我们需要弄清楚如何将这些数据放到时间线上。

与 TimelineJS 连接

正如之前提到的,TimelineJS 是一个了不起的工具,它可以获取一些标准化数据并创建非常漂亮的时间线可视化,其中包括推文,YouTube 视频,并具有极大的灵活性。

如果你希望非常快速地完成,那么查看他们的电子表格格式最好。TimelineJS 允许您执行的操作是以特定格式创建 Google 电子表格,将该电子表格发布到 Web,然后 TimelineJS 将自动读取数据并根据数据创建时间线。

现在我只是打开了这个模板,并从电子表格中复制出所需的标题行,以便我可以用 Python 写出来。我们的脚本只会使用此格式输出 CSV,然后就可以将结果上传到 Google 云端硬盘并开始浏览数据。十分简单。

开始编码

好啦,开始工作。打开 Python 编辑器并开始编写以下代码:

1

OK, 这是设置代码,我们只是设置导入以引入我们需要使用的模块,创建一些可以传入的命令行参数,并定义一些全局变量来存储命令行信息。现在开始构建公司名称搜索功能:

2

这里稍微复杂一点点,来深入了解一下:

  • 第 23 行: 定义了 corporate_search 函数,该函数接收将成为我们正在搜索的公司的公司参数以及作为双字母国家/地区代码的 jurisdiction 。
  • 第 25–26 行: 构建 API URL,传递 URL 编码的公司名称(25),然后将 jurisdiction_code 参数添加到 URL 以缩窄结果(26)。
  • 第 28–32 行: 发送请求(28),如果我们收到有效的响应(30),处理收到的JSON(32)。
  • 第 34–38 行: 迭代返回的所有匹配项(34),然后检查是否与我们传入脚本的公司名称完全匹配(36),如果有完全匹配,会返回公司编号和公司名称(38)。

好,下一步,让它提取该公司的文件。

3

  • 第 46 行: 定义了 corporate_filings 函数,以接受从公司搜索返回的 corporation_id 参数,当然还有 jurisdiction。
  • 第 48 行: 在这里正在构建我们的 API url,它将告诉 OpenCorporates 回复申请结果的第一页。
  • 第 58 行: 从搜索结果中获取结果并将其存储在文件变量中,该变量将包含所有公司文件。
  • 第 61–62 行: 由于我们只能从 API 检索 30 个结果,获取总页数(61)然后初始化计数器(62),以便我们可以继续调用 OpenCorporates 来检索所有记录。
  • 第 64–76 行: 继续将页面参数添加到申请请求中(66),发送请求(68),解析(72)和存储结果(74),然后递增页面计数器(76)并继续,直到检索了所有的文件。

一旦完成了所有可用的文件就会返回列表。现在我们有了一份文件清单,需要将它们按到一个 CSV 文件中,该文件符合 TimelineJS 正在寻找的适当结构。现在实现这个功能:

4

  • 第 87 行: 在这里定义 build_timeline 函数,以获取文件列表,和它们所关联的公司名称。
  • 第 89–93 行: 这是从 TimelineJS 电子表格模板中复制的大字段列表,这些是您的时间线能正确呈现所必需的。
  • 第 95–98 行: 这里只是检查目标 CSV 文件的存在。如果该文件不存在,我们将编写电子表格标题,如果存在,开始将记录添加到电子表格的末尾。
  • 第 100–105 行: 打开输出文件(100),然后初始化 CSV 编写(102),传入文件句柄和字段列表(102)。正如此前提到的,如果这是一个新文件(104),在电子表格(105)中写出标题行。
  • 第 109–123 行: 循环遍历每个文件(109),拆分以 YYYY-MM-DD 格式存储的日期字段(111),然后用我们想要在时间线中显示的所有信息填充字典。最后一步是将数据写入电子表格(123)。

剩下要做的唯一事就是将函数调用添加到脚本的底部,以完成所有操作:

5

好啦,看看运行下会发生什么。

这里有三个公司,它们都位于非常适合避税的马恩岛(国家代码为 im)。

  • Lochside Limited
  • Korderry Limited
  • Ogral Company Limited

所以你的命令行参数看起来像这样:

# python followthemoney. py -c“Lochside Limited”-j im -t cbcstory.csv

# python followthemoney. py -c“Korderry Limited”-j im -t cbcstory.csv

# python followthemoney. py -c“Ogral Company Limited”-j im cbcstory.csv

现在转到 Google 云硬盘,创建新的电子表格,转到“文件”菜单并选择“导入”,然后使用“更换当前工作表”选项。

转到此处的 TimelineJS 页面,然后按照其步骤发布时间轴电子表格,并生成预览。完成后,你应该能够浏览数据,甚至将其嵌入到自己的网站中。

非常整洁的东西。如果你有大量记录可能会想要把它放大。并且你还可以使用 OpenCorporates API 做更多的事,嗯你懂的。

— — 数据集 — —

以下提供一些数据集,根据你希望调查的内容,应该知道在哪里能找到。

> World Bank Open Data(https://data.worldbank.org/ ):涵盖世界各地的金融、服务指标等数据。

> IMF Economic Data(https://www.imf.org/en/Data ):这是一个非常有用的信息源,包括全球金融稳定报告、地区经济报告、国际金融统计数据、汇率、贸易方向等。

> UN Comtrade Database(https://comtrade.un.org/ ):用户可以以可视化的形式免费访问详细的全球贸易数据。它是国际贸易组织统计数据和相关分析表的官方资源库。

> Global Financial Data(https://www.globalfinancialdata.com/ ):涵盖超过 6 万家公司的数据,时间跨度为 300 年左右,为分析全球经济的变化提供了独特的来源。

> Google Finance(https://finance.google.com/finance ):包括实时股票报价和图表、财经新闻、外汇汇率、投资组合等。

> Google Public Data Explorer(https://www.google.com/publicdata/directory ):提供来自世界银行、OECD、欧盟统计局和丹佛大学等一系列国际组织和学术机构的公开数据和预测。这些数据可以以曲线图、条形图、横截面图的形式显示,也可以在地图上显示。

> Financial Data Finder at OSU(https://guides.osu.edu/c.php?g=280921&p=2281286 ):这里提供一切与金融相关的数据的链接,包括在线世界发展指标(World Development Indicators Online)、世界银行公开数据(World Bank Open Data)、全球金融数据(Global Financial Data)、国际货币基金组织统计数据(International Monetary Fund Statistical Databases)和 EMIS 情报。

>AmazonAPI(https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html :可以按分类浏览 AWS 上的公共数据集,获取大量信息。

> American Society of Travel Agents(https://www.asta.org/ ):ASTA 是世界上最大的旅游协会。该网站提供旅游代理信息,还提供旅游、邮轮、酒店、租车等产品信息。

> Social Mention(https://socialmention.com/ ): Social Mention 是一个社交媒体搜索和分析平台,它将来自世界各地的用户产生的内容聚合成单一信息流。

> Google Trends(https://trends.google.com/trends/ ):展示了在世界上不同地区,特定的搜索词出现的频率。

> Facebook API(https://developers.facebook.com/?locale=en_US ):大家可以学习如何利用 Graph API 发布和检索数据。

> Twitter API(https://developer.twitter.com/en/docs ):利用 Twitter 平台,大家可以在 Twitter 上接入网站或应用程序。

> Instagram API(https://www.instagram.com/developer/ ):大家可以利用 Instagram API 平台构建非自动化的、真实的、高质量的应用和服务。

> Foursquare API(https://developer.foursquare.com/ ):支持访问 Foursquare 数据库,能与 Foursquare 上的用户和商家进行互动。

> HubSpot(https://www.hubspot.com/marketing-statistics ):大型市场数据库。你可以在这里找到最新的市场统计数据和趋势。这里也为社交媒体营销、内容管理、网页分析、登陆页面和搜索引擎优化提供相关工具。

> Moz(https://moz.com/ ):关于 SEO 的相关见解,包括关键词研究、链接建设、网站审计和页面优化,可以帮助公司直接地分析他们在搜索引擎上的位置,改进排名。

> Content Marketing Institute(https://contentmarketinginstitute.com/):关于内容营销的最新新闻、专著和研究。

> Associated Press API(https://developer.ap.org/ap-content-api ):无需访问美联社站点,该 API 支持大家用自己的编辑工具搜索和下载内容。大家可以下载美联社、网站成员和来自第三方的图片,还可以下载美联社和选定的第三方制作的视频。

> Google Books Ngram Viewer(https://books.google.com/ngrams ):在线搜索引擎,提供谷歌文本语料库在 1500–2008 年间的 n-gram 数据。可以以图例的形式显示查询词在这些年间出现频率的变化情况。

> Wikipedia Database(https://en.wikipedia.org/wiki/Main_Page ):向用户免费提供平台上的所有数据。

> FiveThirtyEight(https://fivethirtyeight.com/ ):它是一个关注民意调查分析、政治、经济和体育的网站。Github 上的数据和代码基于 FiveThirtyEight 上的故事和内容。

> Google Scholar(https://scholar.google.com/ ):Google 推出的面向学术资源的免费搜索引擎,能够帮助用户查找包括期刊论文、学位论文、书籍、预印本、文摘和技术报告在内的学术文献,内容涵盖自然科学、人文科学、社会科学等多种学科。

> OpenCorporates(https://opencorporates.com/ ):OpenCorporates 是世界上最大的关于公司和公司内部数据的公开数据库,它有超过 1 亿家公司的数据管辖权。

> The CIA World Factbook(https://www.cia.gov/library/publications/the-world-factbook/):各国状况。重点关注历史、政府、人口、经济、能源、地理、通信、交通、军事和跨国问题(267 个国家)。

> Octoparse(https://www.octoparse.com/ ):免费的数据提取工具,可以收集上面提到的所有网站的数据。

上述不是全部,别的暂时没想起来,今后想起来再慢慢说哈。

来了,老弟
-------------    本文结束  感谢您的阅读    -------------
0%