引用

阿兹猫 的 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网站, 不记录你密码都见了鬼了!!哈哈

转载于:https://www.cnblogs.com/huangcheng/archive/2009/09/14/1566198.html

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

  1. 零基础:Python之Selenium操作浏览器模拟登陆QQ邮箱

    零基础:Python之Selenium操作浏览器模拟登陆QQ邮箱 一. Selenium简介 二. 环境配置 2.1 Python运行环境搭建 2.2 Selenium相关安装与配置 2.2.1 Se ...

  2. python爬取qq邮箱_使用Python模拟登录QQ邮箱获取QQ好友列表

    最近因开发项目的需要,有一个需求,就是很多SNS网站都有的通过 Email地址 导入好友列表,不过这次要导入的不是Email 列表,而是QQ的好友列表. 实现方式: 通过google一搜,实现的方式大 ...

  3. python获取qq好友ip_使用Python模拟登录QQ邮箱获取QQ好友列表

    最近因开发项目的需要,有一个需求,就是很多SNS网站都有的通过 Email地址 导入好友列表,不过这次要导入的不是Email 列表,而是QQ的好友列表. 实现方式: 通过google一搜,实现的方式大 ...

  4. python模拟登录qq获取好友信息_使用Python模拟登录QQ邮箱获取QQ好友列表

    最近因开发项目的需要,有一个需求,就是很多SNS网站都有的通过 Email地址 导入好友列表,不过这次要导入的不是Email 列表,而是QQ的好友列表. 实现方式: 通过google一搜,实现的方式大 ...

  5. java模拟登录qq邮箱_使用Java实现qq邮箱发送邮件

    本文实例为大家分享了Java操作qq邮箱发送邮件的具体代码,供大家参考,具体内容如下 今天尝试了使用QQ邮箱的POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务来进行发送 ...

  6. python爬虫-从QQ邮箱获取好友信息并爬取头像

    本篇博客利用python爬虫实现半自动爬取好友头像 和以前一样,先上效果: 以上就是我的好友头像,怎么获取呢? 我采取的方法可能有点低级,首先打开我们的qq邮箱,按F12找见如下的包: 我们需要的好友 ...

  7. python模拟登陆163邮箱并获取通讯录

    From: http://hi.baidu.com/fc_lamp/blog/item/2466d1096fcc532de8248839.html python模拟登陆163邮箱并获取通讯录 #-*- ...

  8. Jsoup实现java模拟登陆

    Jsoup实现java模拟登陆 1:如何获取cookies. 1.1:由于需要登录,故先模拟登陆时的那一个<form>,这里用map来装载变量名称,变量值. Map<String, ...

  9. python自动登录qq邮箱_selenium+python实现自动登陆QQ邮箱并发送邮件功能

    本期做一个selenium详细实例,会把我在元素定位中遇到的一些阻塞和经验分享给大家. (浏览器为Chrome) (如果只需要最终的完整代码,请直接跳转到文章最后) 浏览器打开QQ邮箱登录网址 fro ...

  10. python模拟登录163邮箱_selenium+python 模拟登陆网易邮箱

    selenium 模拟登陆网易邮箱实例 selenium 一.selenium 模拟登陆网易邮箱老样子,先来看看效果图吧(我没有设置正确的账号和密码,大家自己试的时候可以设置自己的账号密码),思路和分 ...

最新文章

  1. 利用java反射机制 读取配置文件 实现动态类载入以及动态类型转换
  2. 数据包是如何在网络中传输的
  3. 求列表最大元素不用max_python3实现从一个无序列表中求取连续元素之和中最大的和...
  4. java编程那些事pdf下载_《Java编程那点事儿》读书笔记(六)
  5. matlab小技巧与verilog小技巧
  6. 二叉树题目----2 检查两颗树是否相同 和 对称二叉树的判定
  7. elementui的upload组件怎么获取上传的文本流、_抖音feed流直播间引流你还不会玩?实操讲解...
  8. 一名合格前端工程师的进阶指南!都来认真看一下吧
  9. java string is empty_Java中String类的isEmpty方法、null以及的区别
  10. ArcGIS10.8安装(附最新<2022年10月29日>下载地址)
  11. android activity是什么呢
  12. 计算机专业硕士论文评语,硕士论文评审意见范文
  13. 浦发银行c语言上机试题,浦发银行通信技术类招考笔试经验
  14. Apache Calcite初探和csv简单例子
  15. 深度学习:乳腺检测abnormality detection in mammography +CAM
  16. 期货量化策略的分类与概述(完整录播版)
  17. 在ie edge中消除默认出现的密码框小眼睛标志
  18. 表白套路计算机公式,高级表白密码我喜欢你公式 套路喜欢的人
  19. SAP FI02和FI12银行主数据的维护
  20. 分析Perm()函数功能、代码、时间复杂度

热门文章

  1. 台式计算机有没有无线连接模块,台式机能不能连接wifi_台式机怎么连接wifi
  2. python电影数据分析报告_Python进行电影数据分析及可视化
  3. 【寒江雪】Go实现Builder Pattern
  4. 10015---技术栈
  5. android nio wifi 拥堵 超时,提高WiFi上网速度,改变道路拥挤的方法
  6. wex5链接mysql_【WeX5学习】 后端服务之访问数据库表
  7. 云计算与大片:基于阿里云的渲染农场
  8. 三维实时云渲染平台解决方案
  9. [PTA练习] 愿天下有情人都是失散多年的兄妹(25分)
  10. 0004-EMC电磁兼容RE辐射超标整改策略-学习笔记