700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 阿兹猫 的 Java模拟登陆QQ邮箱获取好友列表的实现

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

时间:2022-03-30 07:27:46

相关推荐

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

引用

阿兹猫 的 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/0311 Firefox/2.0.0.13"));

client.getParams().setParameter("http.default-headers", headers);

}

4.要有一些正则表达式常识

因为毕竟要从html里摘录出需要的内容,如sid什么的,不用正则太麻烦鸟~

好了,开练

先去/里看看代码,大概就是一些无聊的表单和验证码

把这些内容弄成一个简单的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到/cgi-bin/loginpage , 记得先把验证码的cookie对象set过去

String regex = "sid=(.*?)\";";

得到最需要的sid,后面的就是随便请求里面的连接了,想干啥就干啥,想吃啥就吃啥

我当时可能太激动了,得到了sid居然还是进不去,告诉我session time out,郁闷了1个晚上,不应该啊

最后才发现,我只是把sid print出来了,忘了set了,日。。。。

好爽,轻松拿到好友列表,下面一个问题就是如何骗用户输入QQ号和密码了,顺便友情提示一下大家,千万别相信类似开心啊,校内啊这些SNS网站, 不记录你密码都见了鬼了!!哈哈

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。