https://api.memory.lol/v1/tw/jr_majewski(在浏览器中打开链接并将 jr_majewski 替换为其他用户名)源代码:https://github.com/travisbrown/memory.lol--------------------------------此项目是一个小型 Web 服务,提供有关社交媒体帐户的历史信息。目前,它可用于查找 4.43 亿个 Twitter 帐户的 5.42 亿个历史昵称。这些数据大部分是从 Twitter Stream Grab (https://archive.org/details/twitterstream)或 Wayback Machine(https://archive.org/web/)中抓取的。覆盖率应该相当好(对于不受保护的帐户)可以追溯到 2011 年,当时 Twitter Stream Grab 推出。请注意,此软件不是“开源”软件,但源代码可供个人、非营利组织和工人拥有的企业使用和修改(有关详细信息,请参阅下面的许可证部分)。 安全
此服务提供的所有信息均来自公共档案,在大多数情况下,可以通过其他方式轻松找到(例如在 Twitter 上搜索对帐户的回复)。该服务的目标是让研究人员或记者更容易确定进一步调查的方向,更广泛地说,向用户表明某个账户可能正在运行骗局、传播虚假信息等。如果您对安全或隐私有疑虑,可以联系我(通过 Twitter DM 或电子邮件),您的请求将私下处理。当前访问限制
在大多数情况下,公众对该工具的访问目前仅限于过去 60 天内观察到的历史事实。此规则有两个例外:- 为从几个 “不良行为者” 列表汇编的一组帐户提供了完整的历史记录。
完整的 12 年和五亿个网名(减去请求的排除项)可供一群值得信赖的研究人员、记者和活动家使用。该服务目前支持通过 GitHub 或 Google 帐户进行身份验证。该服务仅使用 GitHub(或 Google)进行身份验证,不需要对用户帐户的任何非公开或写入访问权限,绝不会请求任何类型的密码,并且只有用户的公开信息存储在服务器上。该服务目前不会以允许任何有权访问服务器的人将单个查询链接到特定授权用户的方式记录请求,但如果有任何滥用迹象,我保留在将来实施此类日志记录的权利。要登录,请访问 https://api.memory.lol/v1/login/github ,这将带您进入 GitHub“授权 memory.lol”页面,该页面将要求您授权“对您的公共数据的有限访问”。点击 “Authorize”(授权),您将被带到一个状态 URL,该 URL 将显示您当前的访问权限级别(除非您的帐户已获得特别访问批准,否则该级别将为空)。从那里将提供完整的索引(如果您的帐户已获得批准)。要注销,请转至 https://api.memory.lol/v1/logout 。可以通过 GitHub 的设备流程从命令行使用该服务的完整版本,但这目前不是很方便(请参阅下面的说明)。我将提供一个客户端,使命令行的使用更加容易一些。如果您有兴趣让您的帐户获准进行无日期限制的访问,请与我联系。使用案例
在社交媒体平台上从事仇恨言论、诈骗、骚扰等的帐户有时会试图通过更改其昵称来掩盖其身份,而且他们的 opsec 通常也非常糟糕(例如,在他们以后打算匿名使用的帐户上使用真实姓名或其他身份信息)。能够查找历史社交媒体资料通常可以识别这些人的离线身份(或至少可以追踪他们活动之间的联系)。以下是我脑海中的几个示例(前三个是正在运行的服务示例,后两个展示了如何使用它来确认其他人的工作):- @OSINT_Ukraine:在 2022 年 2 月获得了大量追随者;查找旧的昵称显示它以前是一个 NFT 诈骗帐户。
- @libsoftiktok:一个针对 LGBTQ+ 人群的嫌疑人;几个月前,我通过这项服务查找她的网名 (Chaya Raichik) 找到了她的名字。
- @_lktk:一个名叫 Iratxo Lorca 的嫌疑人,多年来一直活跃在 Scala 社区中;他是我发现的第一批使用这项服务的人之一。
- @Mormonger:一名嫌疑人,去年 9 月被确认为名叫科尔·诺达 (Cole Noorda) 的人;此服务确认他之前曾将 Screen Name @colenoorda用于其帐户。
- @_14words_:今年早些时候被确认为伊利诺伊州白人至上主义警察 Aaron P. Nichols 的账户;此服务将此帐户连接到名称 @spd584。
在许多情况下,该服务提供的信息不足以识别一个人,但可能会提供关于下一步查找位置的提示(例如,查找已删除的推文中是否有具有✨取消文化✨的旧昵称通常是合理的第二步)。详细示例
如果您在浏览器中访问 https://api.memory.lol/v1/tw/libsoftiktok ,您将看到以下数据:{
"accounts": [
{
"id": 1326229737551912960,
"screen-names": {
"chayaraichik": null,
"cuomomustgo": null,
"houseplantpotus": null,
"shaya69830552": [
"2020-11-10"
],
"shaya_ray": [
"2020-11-27",
"2020-12-17"
],
"libsoftiktok": [
"2021-08-18",
"2022-06-16"
]
}
}
]
}
其他功能
它支持的少数几件事之一是通过逗号分隔的列表查询多个屏幕名称(例如:https://api.memory.lol/v1/tw/jr_majewski,MayraFlores2022 )。它还支持搜索屏幕名称前缀(当前限制为 100 个结果;例如:https://api.memory.lol/v1/tw/tradwife* )。它目前仅支持 JSON 输出,但如果你想要一个电子表格,例如,你可以使用 gojq 等工具将 JSON 转换为 CSV:$ curl -s https:
> gojq -r '.[].accounts | .[] | .id as $id | ."screen-names" | keys | [$id] + . | @csv'
89469296,"LaRepublicana86","MayraFlores2022","MayraNohemiF"
726873022603362304,"JRMajewski","jr_majewski"
1533878962455293953,"jr_majewski"
$ curl -s https:
> gojq -r '.[].accounts | .[] | .id as $id | ."screen-names" | keys | .[] | [$id, .] | @csv'
89469296,"LaRepublicana86"
89469296,"MayraFlores2022"
89469296,"MayraNohemiF"
726873022603362304,"JRMajewski"
726873022603362304,"jr_majewski"
1533878962455293953,"jr_majewski"
请注意,屏幕名称查询不区分大小写,但结果区分大小写(这对于仅提供区分大小写搜索的 Archive Today 等存档非常有用)。 其他终端节点
您还可以通过帐户 ID 查找帐户的历史记录(例如, https://api.memory.lol/v1/tw/id/1326229737551912960 还显示 Raichik 帐户的昵称)。通过设备流程进行授权访问
如果要从命令行访问完整索引,目前有几个步骤。默认情况下,您将收到有日期限制的结果:$ curl -s https:
{
"accounts": [
{
"id": 4749974413,
"id_str": "4749974413",
"screen_names": {
"USForcesKorea": [
"2018-06-08",
"2022-07-29"
]
}
}
]
}
要访问完整索引(假设您有一个已批准的账户),您首先需要使用以下命令获取设备代码和用户代码:$ curl -X POST -d 'client_id=b8ab5a8c1a2745d514b7' https://github.com/login/device/code
device_code=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&expires_in=898&interval=5&user_code=ABCD-0123&verification_uri=https%3A%2F%2Fgithub.com%2Flogin%2Fdevice
下次在浏览器中访问 https://github.com/login/device ,并在出现提示时输入您刚刚收到的用户代码。
最后,您需要获取不记名令牌(将下面的 device_code 替换为您获得的令牌,但再次使用此处显示的 client_id):$ curl -X POST -d 'device_code=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&client_id=b8ab5a8c1a2745d514b7&grant_type=urn:ietf:params:oauth:grant-type:device_code' https://github.com/login/oauth/access_token
access_token=gho_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&scope=&token_type=bearer
然后,您可以使用此令牌进行经过身份验证的查询:
$ curl -s -X POST -d 'token=gho_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' https:
{
"accounts": [
{
"id": 26847645,
"id_str": "26847645",
"screen_names": {
"USFKPAO": [
"2011-10-19",
"2016-06-19"
],
"usforceskorea": [
"2017-02-20",
"2018-03-27"
]
}
},
{
"id": 4749974413,
"id_str": "4749974413",
"screen_names": {
"usforceskorea": [
"2016-02-26",
"2017-02-07"
],
"usforceskorea_": [
"2017-02-19",
"2018-04-24"
],
"USForcesKorea": [
"2018-06-08",
"2022-07-29"
]
}
}
]
}
此过程将捆绑到命令行客户端中,但目前此方法将与 curl 等现有工具一起使用。
该应用程序目前支持以两种文件格式导入数据。第一个请求要求每行一个 Twitter 用户对象(采用 JSON 格式,带有一个额外的快照字段,表示观察时间作为纪元秒)。第二种是 CSV 格式,至少有三列(Twitter 用户 ID、屏幕名称和观察时间作为纪元秒)