怎么才能通过程序获取QQ联系人呢?先是在网上做外围的调研,觉得方法不外乎以下几种:
1、识别QQ的网页验证码,然后走http协议,从QQ邮箱登录,然后再解析地址簿网页来获取QQ联系人列表。
难度:难度指数9。其他的一切步骤都不难,最关键的是如何去识别QQ的网页验证码。QQ验证码歪歪扭扭的,增加了很多干扰元素,如果连人的肉眼都分不清,人怎么训练机器去识别验证码呢?可能要用到BP等神经网络算法。
2、获取QQ的网页验证码。
QQ的验证码是用RSA算法产生出来的,我还曾经对这算法有所了解。不过它只公开了PublicKey,难道我要去模拟js算出来加密结果?或者转化成python算出结果?还没有头绪。
document.form1.btlogin.disabled = true;
document.form1.starttime.value = (new Date()).valueOf();
var PublicKey =
"CF87D7B4C864F4842F1D337491A48FFF54B73A17300E8E42FA365420393AC0346AE55D8AFAD975DFA175FAF0106CBA81AF1DDE4ACEC284DAC6ED9A0D8FEB1CC070733C58213EFFED46529C54CEA06D774E3CC7E073346AEBD6C66FC973F299EB74738E400B22B1E7CDC54E71AED059D228DFEB5B29C530FF341502AE56DDCFE9";
var RSA = new RSAKey();
RSA.setPublic(PublicKey, "10001");
var Res = RSA.encrypt(document.form1.pp.value + ‘\n’ +
document.form1.ts.value + ‘\n’);
//pp为密码
if (Res){
document.form1.p.value = hex2b64(Res);//64进制,pyhton cookbook上有一个类似脚本
var MaskValue = "";
for (var Loop = 0; Loop < document.form1.pp.value.length; Loop++,
MaskValue += "0");
document.form1.pp.value = MaskValue;
3、看网友黑盒写出的QQ协议,自己抓一下包,做一下简单的登录和获得好友。
难度:看找到的是什么资料了。
http协议似乎已经不支持了,所以python-qq已经失效了。
现在的很多程序QQ,都是走TCP或UDP协议登录的了,也有一些开源的程序,lumaQQ是用java写的,在网上还看到一些用.net和delphi写的,只不过,不知道现在是否还能用?腾讯总是在变换他们的协议的,现在也不怎么向下兼容了,强迫用户升级。
MSN联系人就好弄得多,协议是公开的。
4、用脚本去控制真正的QQ自动登录。
难度:首先可能要破解登录面板中的加密层,不予考虑了。
5、腾讯有一些合作伙伴,他们那里有登录的方法。例如很多手机的第三方软件不是也支持QQ嘛?就是腾讯提供了接口,在手机上实现罢了。可惜,我没有这方面的资源。
唉,该怎么着手呢?
...