JAVA实现获取QQ通讯录功能

最近在研究HttpClient,不过在获取QQ通讯录的时候,有一个问题,用数字模拟登录需要验证码;
但是开心吧,或者City都能够通过QQ号码和密码,获取好友通讯录,请教有什么办法实现?

只要有实现方法都给分,包括用其它语言实现,用JAVA实现也给分!
[b]问题补充:[/b]
开心和City是不是通过腾讯的API获取的? (好像API不公开,不过类似lumaqq,之类的工具,也肯定是根据协议获取的)

API 应该没有公开,lumaqq好像关掉了,协议的话不知道,但按理来说应该不会去跟腾讯买接口吧?
[b]问题补充:[/b]
谢谢bohemia提供的资料!

也谢谢lewhwa的方向!

lumaqq就是通过抓包来确定协议的,典型的反向工程。
在JAVA这块,有没有相关的资料?
[b]问题补充:[/b]
从搜搜Lumaqq,在结合它所对应的QQ版本,看看它的思路。然后咱们就用ethreal来抓取验证块的网络包。lumaqq和珊瑚QQ等等都是这样做的。
协议与语言无关,可以给Wireshark抓包软件的连接:
http://www.wireshark.org/

有没有比较小的测试实例可以熟悉一下!
[b]问题补充:[/b]
这块没有研究过,还有一个问题必须考虑,如果从真的实现这个功能,从输入用户名和密码,接着实现这些过程,调用方法,到获得通讯录之间的时间差,会不会太长,首先感觉有点复杂,可能是菜鸟的原因,再则有点担心太久,如果时间差超过8秒,我想这个Solution应该不好!
[b]问题补充:[/b]
请问有没有开心吧或者City的人,给一个最直观与最有效的实现方案,如果涉及机密的话,可以给出一个方向!
小弟无尽感激!

肯定要根据协议来,既然不能公开获取。只能通过ethereal(现在叫Wireshark)之类的来抓包了。

模拟登陆的方式不太好吧?
如果模拟登陆,又要想办法破解验证码了;

开心和City是不是通过腾讯的API获取的? (好像API不公开,不过类似lumaqq,之类的工具,也肯定是根据协议获取的)

[quote]API 应该没有公开,lumaqq好像关掉了,协议的话不知道,但按理来说应该不会去跟腾讯买接口吧? [/quote]

合作是可以的啊; 有利益就有合作;

不知道
类似
[url]http://mprogramer.spaces.live.com/Blog/cns!1pKnbff3FpJuGZcrsAlNZmZQ!147.entry[/url]
这个HTTP的QQ协议; 是否早就被腾讯关闭了.

如果是的话, 估计开心,city就是跟腾讯合作了..

跟移动的白名单一样; 其实是垄断;

[quote]API 应该没有公开,lumaqq好像关掉了,协议的话不知道,但按理来说应该不会去跟腾讯买接口吧?[/quote]
lumaqq就是通过抓包来确定协议的,典型的反向工程。

[quote]lumaqq就是通过抓包来确定协议的,典型的反向工程。
在JAVA这块,有没有相关的资料?[/quote]
从搜搜Lumaqq,在结合它所对应的QQ版本,看看它的思路。然后咱们就用ethreal来抓取验证块的网络包。lumaqq和珊瑚QQ等等都是这样做的。
协议与语言无关,可以给Wireshark抓包软件的连接:
http://www.wireshark.org/