为了便于初次阅读的读者,更新一律加在文章末尾
导语
偶有奇想,我们可以通过手机号来搜索获取其对应的QQ号,那么,反过来呢?
一,缩小范围
由于手机号属于隐私数据,腾讯QQ并没有直接给出通过QQ号查找对应手机号的接口。
国内的手机号有十一位数字,从数学的角度上来说,包含了1011种可能。如果遍历这1011个数据,通过QQ中手机号查找QQ号的接口来寻找,未免太过费时费力,根据网上查到的资料,同一个QQ号,在十分钟内只能进行30次查询(未验证)。因此,直接遍历的方法不现实。
在这10^13个数据中,包含着大量的可去除的无用数据。我们很容易就能想到,去除无用数据,缩小范围。
1,通过“找回密码”
在所有需要密码的社交软件中,都会有处理用户遗忘密码情况的机制(通常为“找回密码”或“重置密码”),QQ也不例外。
通过搜索“QQ 找回密码”,很容易可以进到找回密码的页面,输入对应的QQ号,选择“验证密保找回密码”,得到如下弹窗:
通过密保手机找回密码
Bingo!
现在我们获取到了手机号十一位数字中的五位(前三位与后两位)!
2,通过号码归属地区
即便如此,现在依然有一百万种可能的情况,依然不适合遍历的方法。我们需要进一步缩小范围。
以什么为筛选条件呢?位置。
目前我国使用的手机号码为11位数字,我们的手机号可以分为三段,都有不同的编码含义:前3位是网络识别号、4-7位是地区编码(HLR归属位置寄存器)、8-11位是用户号码(随机分配)。
现在,我们已经得到了,手机号码的前三位代表了运营商,之后四位代表了地区。显然,我们可以通过遍历手机号中的4-7位,即一万个数据,以所属地区为筛选条件进一步缩小范围。
此处,我采用百度APIStore中的通过手机号查询归属地的API来进行查询,该API查询返回结果如下(测试了一个手机号,已略去):
{"data":{"areacode":"0510","city":"无锡市","operator":"电信177卡","phone":"177******77","postcode":"214000","province":"江苏"},"error":0,"msg":"succeed"}
遍历代码如下(以查询所在地“上海”为例):<