`

Java模拟登陆QQ邮箱获取好友列表的实现

 
阅读更多
谨以此文,纪念我好几天敖到1点睡觉,我是个好孩子,一般10点就钻被窝了,夜里好起来偷菜,hoho

其实很无聊,其实很BT,SNS网站好象一夜之间都提供邀请好友功能

但是像开心等都没有提供对qq的读取,因为QQ很变态,就用他开刀好了

前阵子在研究验证码识别,做了一些简单的注册机,灌水机,直到发现TMD这东西更变态,水太深,不费心了,能识别简单的就好了

类似QQ这样的不大可能识别出来了。只有启用人肉识别,让肉眼自己看好了,娃哈哈

准备工作:
1.JDK1。6 为什么要1。6呢,这个后面再说
2.一个支持jsp的WEB环境,例如resin,tomcat等
3.要有简单的模拟登陆思路,比如我,最开始是做开心网外挂的模拟登陆
当然我是个非常无聊的人,一般无聊的都是先做163啊,126邮箱的模拟登陆,也是为了拿点用户列表,没新鲜的
模拟登陆我用的是org.apache.http,实现一个可以模拟登陆的client
public WebClient() {
  currentURL = null;
  client = new DefaultHttpClient();
  client.setCookieStore(new UpdateableCookieStore());
  client.setRedirectHandler(new MemorizingRedirectHandler());
  client.getParams().setParameter("http.protocol.cookie-policy",
    "compatibility");
  List headers = new ArrayList();
  headers
    .add(new BasicHeader(
      "User-Agent",
      "Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13"));
  client.getParams().setParameter("http.default-headers", headers);
}
4.要有一些正则表达式常识
因为毕竟要从html里摘录出需要的内容,如sid什么的,不用正则太麻烦鸟~

好了,开练
先去http://mail.qq.com里看看代码,大概就是一些无聊的表单和验证码
把这些内容弄成一个简单的html登陆看看,操,居然登陆不了,告诉我验证码不对,向人肉保证,我的眼神没有问题
用httpwatch单独把验证码弄出来分析分析,居然生成的图片还带了cookie,@#$%^& 咒骂半小时
没办法了,只能把这个图片转发一下了
大概思路就是,先用服务器请求图片,然后response.setContentType("image/jpeg");
这就是为什么需要一个支持jsp的web环境了。
转发图片前把Cookie对象放到session里,一会提交QQ号啊,密码什么的那些垃圾的时候把这个再SET给虚拟的WEBCLIENT就OK了

验证码解决后就是表单处理了,我再操。。。页面里这些乱七八糟的js是干啥的啊,居然QQ密码在js端还做了一次RSA加密,这帮孙子怎么想的啊,太变态了

我先想到的是把这些js改写成java的代码,写了两行就放弃了,这不是人干的活啊

还好jdk1.6 有个扩展包,支持java读取js, 重来没试过,正好开开洋荤。 没想到啊,太好用了,这么复杂的js 都能转换,这个版本真值得信服,哈哈

页面里的js代码要稍微调整一下,有一些函数需要改写,去掉识别浏览器版本和表单对象的参数

javax.script.*

ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("JavaScript");
engine.eval(new FileReader("/home/html/qq.js"));
engine.eval("var t=checkInput('"+pp+"','"+ts+"');");
String p=engine.get("t").toString();

一定要用1.6啊,我以前一直用的1.5,就是为了这个把机器里的JDK换成1.6了,哈哈

所有的前端问题都解决了,后面就是享受时间了
得到uin,password,verifycode提交
解析出加密的passwd后,post到http://mail.qq.com/cgi-bin/loginpage , 记得先把验证码的cookie对象set过去
String regex = "sid=(.*?)\";";
得到最需要的sid,后面的就是随便请求里面的连接了,想干啥就干啥,想吃啥就吃啥
我当时可能太激动了,得到了sid居然还是进不去,告诉我session time out,郁闷了1个晚上,不应该啊
最后才发现,我只是把sid print出来了,忘了set了,日。。。。

好爽,轻松拿到好友列表,下面一个问题就是如何骗用户输入QQ号和密码了,顺便友情提示一下大家,千万别相信类似开心啊,校内啊这些SNS网站, 不记录你密码都见了鬼了!!哈哈
分享到:
评论
1 楼 wangxing0311 2011-10-12  
LZ 非常需要你的帮忙 能留下你的联系方式吗?如果可以的话 加我383004902 目前在做获取qq邮箱好友列表 遇到很大问题 谢谢

相关推荐

    java实现的仿QQ好友列表

    很多同志在用java做仿QQ聊天程序或者是做聊天程序时,都不自觉得想到了QQ好友列表,可是java中的JTree没有那个功能,又要显示头像又要显示昵称,这个资源不仅可以实现以上功能,而且可以显示个性签名和空间动态等,...

    模拟登陆qq邮箱

    模拟登陆qq邮箱,主要是学习使用python 模拟进行网页自动化登陆

    最新java模拟登陆QQ空间【2017-12-22】有效

    最新Java模拟登陆QQ空间【2017-12-22】有效 代码在2017-12-22编写完成并测试通过! 功能: 1.获取QQ空间qzonetoken值 2.构造p参数加密方式getEncryption(QQ密码,QQ账号[16进制标识],验证码,false); 3.获取g_tk算法...

    java仿QQ功能实现

    Java仿QQ功能实现是一个项目,旨在使用Java编程语言来创建一个类似于腾讯QQ的应用程序,它包含聊天、添加好友和用户注册等核心功能。这个项目主要关注于后端逻辑的实现,以及可能涉及到的数据库交互。以下是一些关键...

    模拟qq登陆界面和好友列表

    QQ Demon 是一个模拟QQ登录界面和好友列表的项目,它为开发者或学习者提供了一个实践社交应用界面设计和实现的平台。通过这个项目,你可以了解并掌握如何构建类似QQ这样的即时通讯软件的基本功能。 首先,我们需要...

    C# QQ好友获取案例 可以获取本地qq的好友列表和信息 和webqq聊天

    在本文中,我们将深入探讨如何使用C#编程语言来实现QQ好友信息的获取,包括本地QQ好友列表和WebQQ聊天功能。C#是一种强大的、面向对象的编程语言,广泛应用于Windows平台的应用程序开发,包括与腾讯QQ这样的即时通讯...

    Qt 模仿QQ登陆,QQ好友列表,QQ聊天窗口。完全复原QQ界面,可以学习Qt基础,Qt界面美化,自定义树形控件等知识。

    5. **实现QQ好友列表**: - **数据模型**:将好友信息存储在数据结构中,如QVector或QList,然后用自定义的QAbstractListModel进行展示。 - **搜索和筛选**:添加搜索框,实现对好友列表的实时搜索功能。 - **...

    获取QQ好友列表,delphi编程实现

    本文将详细介绍如何使用Delphi编程实现获取QQ好友列表的功能。 首先,要获取QQ好友列表,我们需要了解QQ的通信协议。QQ的通信协议是私有的,但通过研究和逆向工程,开发者可以找到一些接口来模拟与QQ服务器的交互。...

    解析获取QQ好友列表

    解析获取QQ好友列表,经过一周多的研究,终于用笨办法实现了,不用一个一个去粘了.

    Java实现仿QQ登陆模式

    在Java编程领域,实现仿QQ登录模式涉及到许多关键知识点,包括网络通信、用户验证、安全性以及界面设计。QQ登录模式通常包含以下几个步骤:用户输入账号和密码、发送请求到服务器进行验证、接收服务器响应并处理结果...

    java模拟webQQ登录协议实现登录QQ获取好友信息

    使用技术有,java发送http协议模拟QQweb登录网页做的一个手机3GQQ登录! 额没事,做来玩玩而已!

    .net 获取QQ邮箱好友、MSN好友、其他Email好友信息(源码版)

    首先,让我们从QQ邮箱的好友列表获取开始。QQ邮箱提供了Web服务接口,可以通过OAuth 2.0协议进行身份验证,获取访问令牌,然后调用其API来获取好友信息。你需要注册一个应用并获取到AppID和AppKey,用于授权过程。在...

    C#QQ登录,获取好友列表群列表,QQ消息群发源码

    在本文中,我们将深入探讨如何使用C#编程语言实现QQ登录功能,并获取好友列表和群列表,以及如何实现QQ消息的群发。这是一项在社交软件自动化和信息推送场景中非常实用的技术,对于开发者来说,理解和掌握这项技能有...

    易语言取QQ好友列表

    这个功能允许程序员通过易语言来获取腾讯QQ即时通讯软件的用户好友列表。 首先,我们需要了解易语言的基础语法。易语言的核心思想是“易学易用”,其语法结构清晰,以中文词汇为主,如“取”、“设置”等,便于理解...

    Java模拟实现QQ聊天

    在本项目中,我们主要探讨如何使用Java编程语言模拟实现一个基本的QQ聊天功能。这个模拟聊天系统旨在提供类似于真实QQ应用的体验,包括用户登录、两人之间的私聊以及下线检测等核心功能。让我们逐步解析这个项目的...

    java最新完美实现模拟登录QQ登录QQ空间获取说说

    在本文中,我们将深入探讨如何使用Java技术模拟登录QQ并获取QQ空间的说说。首先,我们要明白模拟登录是通过编程方式复现用户手动登录的过程,通常涉及HTTP请求、Cookie管理以及网页解析等技术。在这个场景中,我们将...

    java写的QQ,QQ界面,私聊,群聊,好友列表

    在本项目中,开发者使用Java语言实现了类似QQ的聊天应用,包括私聊、群聊以及好友列表的功能。这个项目展示了如何运用Java进行客户端/服务器(C/S)模式的编程,以及构建用户界面。以下是关于这些知识点的详细说明:...

    java实现发送邮件仅支持QQ邮箱

    JavaMail是Java编程语言中...总之,JavaMail是Java开发者实现邮件功能的强大工具,通过理解并应用上述知识点,你可以轻松地实现在Java应用中发送QQ邮箱邮件的功能。记得在实际开发中根据具体需求进行相应的调整和优化。

    实现163邮箱发送邮件到qq邮箱的java代码

    本示例将详述如何使用Java实现从163邮箱向QQ邮箱发送邮件的代码实现,以及所需依赖和步骤。 首先,我们需要了解JavaMail API,这是一个用于处理邮件的开源库,它提供了创建、发送和接收邮件的功能。在Java项目中,...

    java模拟qq项目

    在本项目"java模拟qq项目"中,我们将深入探讨如何使用Java语言来构建一个功能完备的QQ模拟器,包括群聊和私聊功能,并且连接到数据库以存储和检索用户数据。这个项目对于想要提升Java编程技能,尤其是对网络编程和多...

Global site tag (gtag.js) - Google Analytics