Python实现:输入Discord用户tag无需Bot获取对应用户ID
Discord用户tag转ID实现方案
警告:以下方案需要使用你本人Discord账号的登录令牌调用官方接口,该行为属于Discord禁止的自机器人(Selfbot)操作,存在账号被永久封禁的风险,本内容仅作技术探讨,所有使用后果由你自行承担。
Discord没有提供无需身份验证的公开接口可以直接查询任意用户ID,在不使用官方机器人、不需要和目标用户同服的前提下,唯一可行的方案是通过你自己的账号授权调用Discord客户端侧的搜索接口实现查询,具体步骤如下:
- 先获取你自己账号的授权令牌:打开Discord网页版完成登录,按F12调出开发者工具,切换到「网络」面板,筛选XHR类型请求,任意触发一次接口调用(比如刷新好友列表、切换频道),在任意请求的请求头中找到
Authorization字段,复制其取值,该令牌等同于你的账号密码,绝对不要泄露给任何人。 - 安装Python请求依赖:执行命令
pip install requests - 基于你已有的代码补全逻辑即可,完整可运行代码如下:
import requests # 将此处替换为你自己复制的Authorization令牌值 YOUR_AUTH_TOKEN = "替换为你的账号令牌" # 请求头模拟正常网页端访问,避免被接口拦截 REQUEST_HEADERS = { "Authorization": YOUR_AUTH_TOKEN, "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36" } target = input("请输入要查询的Discord用户tag:").strip() # 调用Discord全局用户搜索接口 response = requests.get( "https://discord.com/api/v9/users/search", params={"query": target, "limit": 1}, headers=REQUEST_HEADERS ) if response.status_code != 200: print(f"查询失败,错误码:{response.status_code},请检查令牌是否有效、账号是否被限制") else: user_list = response.json() if not user_list: print("未查询到匹配用户,请检查输入的tag是否正确") else: match_user = user_list[0] # 区分新旧用户名系统做匹配校验 if match_user["discriminator"] == "0": # 新全局用户名系统,无4位尾号 real_tag = match_user["username"] else: # 旧tag系统,格式为用户名#4位数字 real_tag = f"{match_user['username']}#{match_user['discriminator']}" if real_tag == target.lstrip("@"): print(f"查询成功,对应用户ID:{match_user['id']}") else: print(f"无完全匹配结果,最接近的用户:tag为{real_tag},ID为{match_user['id']}")
注意事项
- 新的Discord全局用户名系统下用户名是全局唯一的,输入完整正确的用户名即可精确匹配;旧格式tag请完整输入
用户名#4位数字的完整格式,避免匹配错误。 - 严格控制调用频率,短时间内多次请求会触发速率限制,频繁触发自动化检测会直接导致账号封禁。
- 不要在公共环境、开源代码中硬编码你的授权令牌,避免账号被盗。
内容的提问来源于stack exchange,提问作者1BL1ZZARD
相关产品推荐
相关产品推荐

