只记得个大概,怎么把那个推特账号找出来

17 min readSocialAPI 工程团队

只记得个大概,怎么把那个推特账号找出来

你大概知道自己在找谁。可能记得显示名、可能记得一半的用户名,也可能只记得"他写供应链的,头像是只猫"。

X 的搜索框是为找推文设计的。输入一个人名,你会得到一堵提到这个名字的推文墙,而那个账号本身被埋在下面某处 —— 或者根本没显示。

找人和找推文是两种不同的操作,而搞清楚自己在做哪一种,直接决定了什么办法有效。


People 标签一直都在,但没人用

这一页最有用的一件事:任何一次搜索之后,在 Latest 和 Top 旁边都有一个 People(用户)筛选。

那个标签搜的是账号 —— 显示名、用户名和简介文本 —— 而不是推文内容。如果你在找人,这一页其它所有内容都只是优化手段;这一条才是解法。

★大多数"我找不到这个账号"的问题,点一下那个标签就解决了。★(如果你要的是可重复的批量查询而不是找一次,有接口可以做。)


一个资料页上有哪些内容是可搜的

值得知道,因为它决定了你能凭什么去搜:

  • 用户名(@username)—— 唯一的那个
  • 显示名 —— 不唯一,可以随便改
  • ★简介文本★ —— 被低估的那个,也是"用关键词找人"能奏效的根本原因
  • 所在地 —— 用户自己填的自由文本,所以很不规范

不可搜的: 他关注了谁、从这个界面看他的历史推文,以及任何他没写在资料页上的东西。

⚠️ 显示名不等于身份。 任何人都能把显示名设成任何字样。两个账号显示同一个名字是正常现象,而冒充也常见到:永远不要仅凭显示名就判定一个账号是它声称的那个人。用户名才是标识符,其余都是装饰。


凭模糊印象找人

你大概记得用户名。 直接把猜测打进 x.com/你猜的名字。猜错会是 404,但用户名往往猜得八九不离十 —— 而且 People 标签会把接近的结果找出来。

你记得名字但不记得用户名。 搜名字,点 People。如果匹配太多,加一个他简介里会有的区分词:jane smith logistics。

你只记得他写什么。 搜一个简介里典型会出现的短语,然后用 People。写供应链的人,简介里往往就有"supply chain"。 这个办法比人们预期的有效,因为简介很短、关键词密度高。

你有一条推文但不知道作者。 作者就在推文上。如果你看的是截图,那就把里面一句独特的话加英文双引号搜 —— "那句原话" —— 只要原推还在就能找到。

你知道他回复过某人。 to:那个账号 加一个关键词,能很快把一段对话圈出来。要组合多个操作符的话,见这类操作符。


用代码来做

两个不同的调用,而选错是这里最常见的错误。

已知用户名做查询 —— 你有 username,想拿资料:

import requests

BASE = "https://api.socialapi.tech"
KEY  = "your_api_key"
HDRS = {"X-API-Key": KEY}

def get_profile(username):
    r = requests.get(
        f"{BASE}/v1/user/info",
        params={"username": username},
        headers=HDRS,
        timeout=60,
    )
    if r.status_code == 404:
        return None          # 该用户名不存在
    r.raise_for_status()
    return r.json()["data"]

p = get_profile("nasa")
print(f"{p['display_name']} (@{p['username']})")
print(f"  {p['followers_count']:,} 粉丝 · 关注 {p['following_count']:,}")
print(f"  注册于 {p['created_at']} · {p['location']}")
print(f"  {p['bio']}")

搜索账号 —— 你不知道用户名,想要候选列表:

def find_accounts(query, limit=20):
    r = requests.get(
        f"{BASE}/v1/search/user",
        params={"query": query, "limit": limit},
        headers=HDRS,
        timeout=60,
    )
    r.raise_for_status()
    return r.json()["data"]

for acct in find_accounts("supply chain analyst"):
    badge = "✓" if acct["blue_verified"] else " "
    print(f"{badge} @{acct['username']:<20} {acct['followers_count']:>9,}  {acct['bio'][:60]}")

★关键区别:查询接收一个用户名、返回一个资料;用户搜索接收自由文本、返回候选。 已经知道用户名却去用搜索,更慢也更不准;而在瞎猜的时候用查询,只会拿到一串 404。★


怎么分辨真号和假号

如果你找这个账号是为了采取行动 —— 合作、付款、发工单 —— 那么验证比搜索更重要。

真正有用的信号:

信号 它说明什么
用户名 唯一标识符。要逐字符比对。
注册时间(created_at) 一个上周注册、却声称是老牌品牌的账号,是危险信号
粉丝/关注比 大量关注别人却没什么人回关,是假号的常见形态
发帖历史 声称存在多年却空空如也或全是新帖,自相矛盾
blue_verified 说明订阅有效。它本身不是身份核验

⚠️ 认证标已经不再意味着"这就是他声称的那个人"(2023 之前是)。它意味着有人在付费。verified_type 能区分企业和政府账号,这个分量更重些,但单独一个蓝标是很弱的证据。

★近似用户名是标准骗术★:@company_support 对 @company_supp0rt。字符替换扫一眼很难发现,而这正是大多数冒充的实现手段。在重要的时候,逐字符比对用户名。


大家会问的问题

怎么在推特上搜一个人? 搜他的名字,然后点 **People(用户)**标签。那个标签搜的是账号,不是推文。

怎么找到某人的推特用户名? 搜他的真名再看 People。如果能找到,他就在那儿。找不到的话,他的用户名可能和真名毫无关系。

能搜推特简介吗? 能 —— 简介文本会被账号搜索索引。搜一个职位或话题,能找到这样自我描述的人。

能用邮箱或手机号找推特账号吗? 搜索里不行。X 曾支持通讯录发现,但那不是一个公开搜索功能。

我确定存在的账号为什么找不到? 可能是:用户名改了、账号受保护、被封或被删,或者你停在推文标签而不是 People。

怎么看某人的第一条推文? 翻到他时间线的最末端。只对发帖不多的账号可行 —— 见找回老推文。

显示名和用户名有什么区别? 用户名唯一,标识这个账号。显示名是自由文本、可随时改、不唯一。

两个账号能重名吗? 显示名可以,随便重。用户名不行。

怎么验证一个账号是真的? 逐字符核对用户名、看注册时间、看发帖历史,以及看有没有其它可信账号在和它互动。光看蓝标不够。

现在蓝标是什么意思? 一个生效中的订阅。它不是 2023 之前那种身份核验。 企业和政府的 verified_type 分量更重。

怎么按地区找账号? 所在地是简介里的自由文本,所以搜城市名能找到填了它的人。很不规范 —— 很多人留空或者填个玩笑。

能按粉丝数搜账号吗? 界面里不能直接筛。用代码可以先搜索,再对结果按 followers_count 过滤。

怎么找相似的账号? 资料页上 X 的"你可能喜欢"是内建入口。用代码的话,搜那个领域标志性的简介关键词效果很好。

能看到谁关注了某人吗? 公开账号可以,粉丝列表是分页的。见持续追踪粉丝变化。

怎么只搜认证账号? 界面没有这个筛选。用代码可以搜索后按 blue_verified 过滤。

推特用户 ID 是什么? 一个永久的数字标识。★和用户名不同,它永远不变★ —— 所以如果你要留存记录,存 ID 而不是存用户名才是对的做法。

能用 ID 反查账号吗? 能,而且这是重新找回一个改过用户名的账号的可靠办法。

用户名为什么会变? 有人改品牌,或者释放了一个用户名被别人抢注。这正是 ID 才是稳定引用的原因。

能找到已删除的账号吗? 不能。已删除或被封的账号连同它的推文一起从搜索里消失。

能搜到受保护的账号吗? 它们会出现在账号搜索里,但你不是被批准的关注者就读不到它的推文。

一次能查多少个账号? 一次查询查一个。要查一批就迭代 —— 并且把 ID 存下来,这样只需要查这一次。

怎么找在讨论某个话题的账号? 这是两个不同的问题:简介里提到它的账号(用户搜索)vs 此刻正在发帖讨论它的账号(关键词监控)。通常你要的是后者。

怎么搜索一个推特账号? 搜用户名或显示名。 ★用户名是精确匹配;显示名是模糊匹配★ —— 这正是前者返回一个结果、后者返回几十个的原因。

有推特账号查找工具吗? 平台自己的用户搜索就是那个查找工具。 ★第三方"查找器"大多只是把同样的公开结果重新呈现一遍★ —— 区别在于能不能规模化地做。

怎么查一个推特账号? 知道用户名就用用户名,不知道就用姓名或简介文本。 ★没有别的东西能解析到一个账号★ —— 邮箱不行,手机号也不行。

推特账号 lookup 是什么? 把一个标识符解析成一个资料页。 用户名 → 资料页可以;★邮箱 → 资料页不行★。

怎么确认一个推特账号是否存在? 去请求那个资料页。 ★404 意味着已删除、被封或改名 —— 而这三种从外部无法区分★,这一点绊倒过大多数脚本。

怎么按姓名找推特用户? 搜显示名。 姓名并不唯一,所以要预期返回多个,再用简介和粉丝数来区分。

怎么搜一个用户名? 用户名是精确的。 如果什么都没返回,说明这个用户名不存在 —— ★尽管它可能曾经存在过然后被改掉了★。

能在某个账号内部搜索他的推文吗? 能 —— 在高级搜索里把 from:用户名 和你的关键词组合。★那是和资料搜索不同的一个调用。★

怎么搜某人的推文? 要么翻他的时间线在本地过滤,要么在搜索里用 from:。 ★时间线翻页能回溯得比搜索更远。★

有推特资料搜索吗? 有,覆盖用户名、显示名和简介文本。 ★它不搜索帖子正文★ —— 那是另一个端点。

推特账号查看器是什么? 通常就是一个资料页读取器。 ★任何宣称能看私密账号的都在歪曲自己做的事★ —— 为什么。

不知道用户名怎么找到某人的推特? 搜他的真实姓名,再用简介、粉丝数和帖子来确认。 ★要预期存在歧义 —— 这是靠证据做身份识别,不是查询。★

能按粉丝数搜索账号吗? 不能作为过滤条件。 ★先取回候选,再在本地排序★ —— 粉丝数在每个资料页上都有。

能按地点搜索账号吗? 只能用自称的简介字段,而它是未经验证的自由文本 —— 完整的注意事项。

怎么找一个改过名的账号? ★用它的数字 ID,那个永远不变★ —— 为什么 ID 才是稳定标识符。

一次能查多少个账号? 批量查。 ★一个批量调用在延迟和成本上都优于多次单查。★


如果你要做账号查询功能

站得住的模式是:★搜一次、把 ID 存下来、之后都按 ID 查。★

用户名会变,显示名会变,数字 ID 不会。以用户名为键的系统会在别人改名时悄悄坏掉,而且故障看起来像"这个账号消失了",而不是"这个账号改名了"。

这正是我们的 API 支持的 —— 自由文本搜账号、按用户名或按 ID 查资料,每条结果都带粉丝数、简介、注册时间和认证状态。只读、固定按次价格、没有属于你的限流要管。

查询执行了但没查到内容仍会计费,因为那份工作确实发生了。发出前就被我们拒绝的请求、以及我方原因的错误,不计费。

延伸阅读:高级搜索操作符 · 追踪一个账号的粉丝 · 监控账号在发什么。