主页卡片通过身份令牌相连,从而把已检查的记录和未解决的记录分开。
把不确定的身份匹配分开保存。
  1. 先从已知的主页名册开始,并保留你的原始输入。Actor 接受已知主页,不能按年龄、地点或粉丝数搜索全部主页。必须先有一份人工名单。
  2. 先运行一个公开主页,以测试你的设置。对照公开来源检查它的规范 channelUrl、handle、channelId、status、statusReason 和 observedAt。有用的行可能只是部分结果,仅凭名称匹配并不能纠正错误的目标。
  3. 把标识符存为文本字符串,并把命名空间定义为 instagram:channelId。不要只因为数字相同,就把 Instagram 的 channelId 与其他平台 ID 混在一起。fbid 字段是与 Meta 关联的标识符,不是 Facebook 公共主页 ID。
  4. 用安全的主页 URL 和 @handles 建立规范化的输入别名表,同时保留原始输入。为比较去掉普通的结尾斜杠和查询标记,但不要把 story 或 login 路由变成主页身份。别名规范化与 Actor 按精确字符串折叠重复项是分开的。
  5. 按非空白的 channelId 值对当前观察分组。保留从输入到 channelId 的边,以及规范 channelUrl 值。当同一个 handle 在不同观察时间对应不同的 channelId 值时,保留两条记录,并检查公开来源,不要盲目覆盖旧数据。缺失的历史不能说明冲突为什么发生。
  6. 若 channelId 值缺失,则把规范 channelUrl 或 handle 保留为较弱的临时证据。绝不要仅按显示名称合并账号。把 blocked、private 或 parser_miss 行留在已验证身份表之外。本地临时键是用于跟踪的元数据,不是编造的稳定身份。
  7. 把结果分成已验证身份、输入别名、未解决的观察和冲突。已知身份要与输入行、有用行和观察到的 handle 分开计数。在加入额外事实之前,先解释来源状态与已采集数据之间的任何差距。
  8. 为以后的刷新追加一条带有 observedAt 的新观察。Actor 不会自动返回历史变化,因此在比较计数或随时间变化的链接列表之前,你必须先检查身份。

演算示例与表格

以下表格展示原创虚构内容,用来说明此方法如何运作。

名册到 ID 的别名表

演算示例与表格
名册行原始输入原始来源 channelId状态规范 channelUrlobservedAt复核状态
R1@greenstudio10001okhttps://www.instagram.com/greenstudio2026-03-01已验证别名
R2https://www.instagram.com/greenstudio/?ref=sheet10001okhttps://www.instagram.com/greenstudio2026-03-01已验证别名
R3@green_studio20002okhttps://www.instagram.com/green_studio2026-03-01已验证别名
R4@summerlabnullpartialhttps://www.instagram.com/summerlab2026-03-01临时
R5@private_notesnullprivatenull2026-03-01未解决

两个已知 ID 登记表

演算示例与表格
channelId关联的别名 / 输入状态摘要复核状态
10001@greenstudio, https://www.instagram.com/greenstudio/?ref=sheetok已验证身份
20002@green_studiook已验证身份

冲突与复核行

演算示例与表格
原始输入原始来源 channelId状态observedAt复核状态
@greenstudio30003ok2026-06-01与 10001 冲突(没有更名或出售的证明)

已验证的表里有两个互不相同的已知身份,不是五个身份,也不是按一个显示名称计成的一个身份。行 R1 和 R2 是 channelId 10001 的两个输入别名。行 R4 是临时的,因为它缺少 channelId;行 R5 未解决,因为它是 private。在后来的一条虚构观察中,@greenstudio 对应 channelId 30003。把这存为带有 observedAt 时间戳的身份冲突。它不能证明更名、账号出售或冒充。在合并任何相互冲突的行之前,你必须检查边表和来源事实。

来源和延伸阅读

作者 Chronometrica · 更新日期

返回顶部 ↑