手机号查QQ号:当所有联系方式都失效时,我试了这个命令行工具

📅 2026/8/14 11:26:04
手机号查QQ号:当所有联系方式都失效时,我试了这个命令行工具
手机号查QQ号当所有联系方式都失效时我试了这个命令行工具【免费下载链接】phone2qq项目地址: https://gitcode.com/gh_mirrors/ph/phone2qq手机号查QQ号听上去像什么灰色产业的黑话。但就在上个月一个普通的晚上它成了我手里仅剩的一张牌——一个叫 phone2qq 的开源命令行工具用 Python 写成功能只有一句话把一个手机号变成对应的 QQ 号。听起来简单到不值一提可当你的处境足够狼狈这个能力就是全部。那一串快被遗忘的十一位数字事情是这样的。我妈翻出一本老电话簿上面有个号码属于她二十多年前的老同事。两个人失联快十年最近才辗转得知对方还在用 QQ。可问题来了老同事换了手机、搬了家唯一没变的就是这串十一位数字。至于 QQ 号——早随着旧手机一起进了回收站。我妈把电话簿推到我面前你帮我找找他QQ号是多少。我盯着那串数字意识到这是一道没有标准答案的题。手机号是手机号QQ号是QQ号两者之间隔着一道看不见的门。我下意识打开网页版QQ输入手机号——系统弹出一句冷冰冰的提示该账号未绑定或需要通过短信验证码验证。短信要发到对方手机上而对方显然不记得自己有这个绑定。那一刻我忽然理解了信息孤岛四个字的重量号码是活的可它指向的那个人被一扇一扇门隔在后面。从前找QQ号是一场体力与耐心的双重消耗我不死心把过去那些土办法挨个试了一遍先给号码发短信等对方回了再追问QQ号——第二天才收到回复对方自己也忘了翻微信好友列表一个个名字点进去看备注翻到手指发酸甚至一度动过用搜索引擎查手机号归属的念头结果搜出来的全是语焉不详的第三方平台页面角落还挂着仅需付费9.9元的按钮。那种感觉就像在夜里找一把钥匙你知道钥匙一定在某处但每一扇门都锁着每一条路都通向一个需要更多验证的下一步。网页版要验证码客户端要扫码第三方平台要充值而那些声称免费查询的站点谁知道它拿你的号码去做了什么。我关上浏览器差点就要跟我妈说实在找不到了。三分钟跑通手机号查QQ号的第一条命令朋友听我抱怨丢过来一个开源项目名字很直白phone2qq。他说你不是会点 Python 吗clone 下来改一行跑。将信将疑地我执行了这行命令git clone https://gitcode.com/gh_mirrors/ph/phone2qq cd phone2qq项目干净得让人意外——整个目录只有两个文件主程序qq.py以及一个纯 Python 实现的 TEA 加密模块tea.py。没有依赖、没有配置文件、没有复杂的安装步骤标准的开箱即用。我打开qq.py文件末尾有一段自测代码print(login.getQQ(10000000000))那一串十一位数字是程序内置的测试号码。我把它换成电话簿上那串数字保存然后敲下python3 qq.py终端沉默了一两秒——那两秒里我的眼睛一直盯着光标闪动的位置——然后一行结果跳了出来一个九位数字。我把它输进QQ搜索框弹出的头像和昵称正是我妈念叨了半天的老同事。那一刻的惊讶是真实的困扰我整整一个晚上、让网页版和第三方平台全部铩羽而归的问题竟然被一个不到两百行的命令行工具解决了。它没有输入框、没有图形界面连提示语都欠奉但它比任何花哨的网页都更直接。顺手拆开看看TEA加密通信原理与两次密信握手跑出结果之后我忍不住把代码从头读了一遍。这个工具之所以不需要登录、不需要验证码是因为它模拟的是一次完整的QQ手机端登录流程。过程大概是这样程序通过 UDP 协议直连腾讯的服务器qq.py里写明了地址和端口然后分两步握手。第一步login0825先发一封加密的自我介绍过去换取服务器下发的令牌第二步login0826拿令牌去换取最终的登录结果——也就是绑定在手机号后面的 QQ 号。这两次通信的内容全部经过tea.py里的 TEA 算法加密。TEA 是腾讯早年广泛使用的一种对称加密算法tea.py用struct和ctypes干净利落地实现了加解密两端qq.py再把加密结果转成十六进制拼进数据包里。用朋友的话说就像先对一句暗号再亮一次身份两次都答对了门才开。对一个想了解原理的读者来说这其实是最好的学习材料没有框架、没有ORM只有原始的网络字节流和一个算法实现加密、校验、数据拼装全部摊开在你面前。tea.py是加密算法的教科书式演示qq.py是网络协议的现场解剖课。我甚至把这几个函数抄进笔记当成如何手工构造网络包的入门案例。当清单从一个变成一百个命令行批量查询手机号的夜晚本来到这里故事就该结束了。但周末公司要组织老同事聚会群里甩来一份一百多人的通讯录要求大家把各自的QQ号补上。我看着那份名单忽然想起那个躺在代码注释里的片段——一段被作者特意留下来的批量遍历示例for i in range(10000): num 1360106%04d % i qq login.getQQ(num) if qq: print(%s %s% (num, qq))那是作者当年测试时留下的号码段扫描写法把循环里的号码换成从文件读取就变成了一个标准的批量查询脚本login QQLogin() with open(phones.txt) as f: for phone in f.read().split(): qq login.getQQ(phone.strip()) print(%s,%s % (phone, qq if qq else 未开放))我把一百多个号码按行存进phones.txt运行再重定向到 CSV 文件。看着终端里数字一行行滚动心里有种奇特的踏实感——三分钟前它还在帮我找一个失联的QQ号三分钟后它已经在帮一百多个人校对联系方式。原来命令行批量查询手机号这件事门槛低到改一个for循环就能做到。唯一要提醒的是节奏这类查询本质上依赖服务器的正常应答连续高频请求既有失败风险也容易触发风控。稳妥的做法是控制频率、分批执行、记录失败项。代码注释里那段一万次的扫描是演示能力的极限不是日常使用的姿势。能查与不能查这条命令的边界在哪里跑完批量查询我冷静下来认真想了想这条命令的边界。它不是万能的。前提一对方必须开启过手机号登录QQ这一项——如果对方从未绑定程序返回的只会是False前提二服务器得愿意回答这取决于腾讯侧策略的变化。项目自带的 README 里作者留下一行坦诚的注记大意是该方法可能已经失效——一个写了真话的开源作者比一百句永久有效更值得信任。这类工具的生命周期本质上取决于协议是否变动而开源的意义就在于总有人愿意在它失效时把它救回来。更重要的边界在伦理一侧。查一个你有正当理由去确认的号码是解决生活难题批量拉取他人号码去建立数据库、用于营销或骚扰就是另一回事了。工具本身不设防使用它的人得自己划线。我建议每个想用它的朋友都记住一条简单的标准如果你不敢当着号码主人的面说出这次查询的理由那就别查。下一次失联希望你能想起这行命令现在这个项目的两个文件还躺在我电脑里。偶尔有人问起怎么知道某个手机号绑定了哪个QQ我就会想起那个晚上光标闪动、屏幕跳出一行数字的瞬间。如果你手里也有一串联系不上的十一位数字不妨试试git clone https://gitcode.com/gh_mirrors/ph/phone2qq cd phone2qq然后打开qq.py把最后一行里的测试号码换成你的运行。不管结果是那个九位数还是一句False你都会比三分钟前多知道一点这个号码背后到底有没有一扇开着的门。如果哪天它失效了——别急着删去项目的 Issues 里说一声像所有还活着的开源项目一样它值得被继续修好。毕竟谁没有过一个失联的故人呢。【免费下载链接】phone2qq项目地址: https://gitcode.com/gh_mirrors/ph/phone2qq创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考