Java版 QQ空间自动登录无需拷贝cookie一天抓取30WQQ说说数据&流程分析

QQ空间说说抓取难度比较大,花了一个星期才研究清楚!

代码请移步到GitHub GitHub地址:https://github.com/20100507/Qzone 【没有加入多线程,希望你可以参与进来加入多线程不过 单个QQ请求频率不可以太高  过多的线程就需要 更多的QQ小号轮流登录】 不要忘了点一个赞 哈哈哈~~

1. 截图看一看效果:

      1.1抓取执行过程:         

1.2 部分数据截图:

 

1.3 每一个说说的具体内容

 1.4 70W说说数据文件大小:

        

2.接下来分析整个执行的流程

  2.1代码结构图【项目是采用Maven构建】:

       

简单的说一下整个代码的结构:

  1. QQBean         是对QQ密码和账号的简单的一个封装,
  2. VerifyCode      提取验证码的【如果你的QQ号码是异地登录就需要输入验证码或者腾讯检测到你不安全】
  3. QzoneEncrypt 加密 俩个重要的参数 一个是加密QQ密码【腾讯在传输密码是做得很安全】,一个是加密g_tk,这个在获取说说时必须携带
  4. GetQQByProperties  读取num.properties文件中的QQ账号和密码
  5. KeyWord   对QQ账号密码 和关键参数的一个提取
  6. Login 使用加密后的密码和QQ账号 登录 获取相关重要的cookie
  7. InputNameAndPwd 在login基础上再次调用其他登录接口直到真正登录到平常打开的QQ空间好友动态页面从页面中提取到 g_qzonetoken
  8. GetMsgBoard 获取QQ用户留言
  9. GetQNum 获取你的好友的列表
  10. GetShuoShuoData 获取说说数据
  11. login.js 是网上的一位高人,提取加密QQ密码的js精华
  12. entry.js是对g_tk的加密的获取
  13. num.properties 是存放QQ和密码的地方 如果你真的想保存数据的话 你最好放上6个无须验证码登录的QQ小号 就临时注册几个就完事了,切记一定不要使用一个,否则封号了就吉吉了。

   2.2Visio分析流程

      

上面的Vsio的图,和代码中基本上都对应了,对于保存留言也很简单,换一个路径就好,所有的必要参数和cookie都已经拿到。如果想要保存一个人所有的QQ说说数据,切换分页的参数即可,but,我的代码中没有加入分页,仅仅保存每个QQ用户的首页的说说数据,懒得弄了,就是那么回事,就是在研究参数和cookie真的很费劲!!!!

 2.3 测试代码中 请注意:

1. 注意我写的 try-catch,之前程序没有使用try-catch,程序在执行中 ,会由于网络原因抛出异常 ,如果抛给了虚拟机 ,JVM就停止,程序就挂了,干脆我就catch异常,如果catch到异常,我就在递归再次调用你,防止网络原因,导致程序极容易停止。

2.注意一点,我的在  %25 ,也就是轮询QQ号登陆,每个QQ号采集25个用户我就重新换其他的QQ用户登录,num.properties中的QQ数量越多越好【封号率越低】,%多少看自己的喜好!

    

 1 package qzone_enter;2 3 import java.io.IOException;4 import java.util.List;5 6 import org.bianqi.enter.bean.QQBean;7 import org.bianqi.enter.key.GetQQByProperties;8 import org.bianqi.enter.key.KeyWord;9 import org.bianqi.enter.login.InputNameAndPwd;
10 import org.bianqi.getdata.GetShuoShuoData;
11
12 public class GetMyShuoShuo {
13
14     public static List<QQBean> listQQ = null;
15     public static int k = 0;
16
17     static {
18         try {
19             listQQ = GetQQByProperties.getQQNumAndPwd();
20             KeyWord.uin = listQQ.get(k).getNum();
21             KeyWord.password = listQQ.get(k).getPwd();
22             System.out.println("初始化"+KeyWord.uin+"登录~~~~~~~~~~~~~");
23             InputNameAndPwd.login();
24         } catch (IOException e) {
25             e.printStackTrace();
26         }
27     }
28
29     public static void getShuoshuoDemo(long i, long j) throws Exception {
30         try {
31             for (; i <= j; i++) {
32                 if (i % 25 == 0) {
33                     if (k == listQQ.size()) {
34                         k = 0;
35                     }
36                     KeyWord.uin = listQQ.get(k).getNum();
37                     KeyWord.password = listQQ.get(k).getPwd();
38                     System.out.println("切换到"+KeyWord.uin+"登录");
39                     InputNameAndPwd.login();
40                     k++;
41                 }
42                 GetShuoShuoData.getShuoData(Long.toString(i));
43                 System.out.println(KeyWord.uin+"正在采集==============QQ用户" + i + "数据=======================");
44             }
45         } catch (Exception e) {
46             e.printStackTrace();
47             GetMyShuoShuo.getShuoshuo(i, j);
48         }
49     }
50
51     public static void getShuoshuo(long i, long j) throws Exception {
52         try {
53             for (; i <= j; i++) {
54                 if (i % 25 == 0) {
55                     if (k == listQQ.size()) {
56                         k = 0;
57                     }
58                     KeyWord.uin = listQQ.get(k).getNum();
59                     KeyWord.password = listQQ.get(k).getPwd();
60                     System.out.println("切换到"+KeyWord.uin+"登录");
61                     InputNameAndPwd.login();
62                     k++;
63                 }
64                 GetShuoShuoData.getShuoData(Long.toString(i));
65                 System.out.println(KeyWord.uin+"正在采集==============QQ用户" + i + "数据=======================");
66             }
67         } catch (Exception e) {
68             e.printStackTrace();
69             GetMyShuoShuo.getShuoshuoDemo(i, j);
70         }
71     }
72
73     public static void main(String[] args) throws Exception {
74         // 开始QQ号 结束QQ号
75         long i = 669424;
76         long j = 2000000000;
77         getShuoshuo(i, j);
78     }
79 }

 3.1总结

就目前来看,我的网速可能不是很好,但是一天依然可以保存30W说说数据,但是有时候程序也会假死,也许是网络不好。

还有,有时候 莫名的需要你输入验证码,没有办法你就在浏览器输入这个QQ账号密码,手动多输入几次验证码,他就一般不会检测了。不在需要验证码

PS【验证码需要打码平台 但是我没有整,but 需要money哦~还有 , 验证码图片会自动保存到项目路径下但是,手动输入验证码目前程序也不通过,可以修复的帮我修                     复一下 谢谢~~~】

num.properties中 QQ号码低于12个也有可能封号,再次强调QQ小号一定要多,让他检测不出你是爬虫。如果你就一个QQ号就不要尝试玩 ,封号不要怪我!

没有采用多线程技术,一个原因我也没有那么多的QQ小号。如果每一个QQ访问频率太高就会封号!!

记得在GitHub点一个赞!哈哈哈

转自:http://www.cnblogs.com/bianqi/p/7206885.html

转载于:https://www.cnblogs.com/abcd19880817/p/7211247.html

Java版 QQ空间自动登录无需拷贝cookie一天抓取30WQQ说说数据流程分析【转】相关推荐

  1. qq空间java_Java版 QQ空间自动登录无需拷贝cookie一天抓取30WQQ说说数据流程分析...

    QQ空间说说抓取难度比较大,花了一个星期才研究清楚! 代码请移步到GitHub GitHub地址: 1. 截图看一看效果: 1.1抓取执行过程: 1.2 部分数据截图: 1.3 每一个说说的具体内容 ...

  2. php自动登录QQ空间,QQ空间自动登录 - brivio的个人页面 - OSCHINA - 中文开源技术交流社区...

    #自动登录 define('ROOT_PATH',__DIR__); include_once(ROOT_PATH.'/lib/Http.class.php'); $config=array( 'us ...

  3. Python案例之QQ空间自动登录程序实现

    原网址:https://www.cnblogs.com/zlslch/p/7986680.html 前提就是你的电脑上安装了 python, selenium 使用chrome 浏览器,需要下载合适的 ...

  4. 基于selenium的QQ空间自动点赞功能(2020年7月版)

    准备工作 简介: selenium是一个基于java开发的自动化浏览器处理器,它更像是浏览器驱动的代理. 配置: 它本身没有配置浏览器,因此需要配合本机上面安装的浏览器驱动一同使用.例如:Firefo ...

  5. ios 仿电脑qq登录界面_iOS开发UI篇—模仿ipad版QQ空间登录界面

    iOS开发UI篇-模仿ipad版QQ空间登录界面 一.实现和步骤 1.一般ipad项目在命名的时候可以加一个HD,标明为高清版 2.设置项目的文件结构,分为home和login两个部分 3.登陆界面的 ...

  6. Java+Selenium实现QQ邮箱自动登录、发邮件与退出

    初学selenium,用最近所学知识写了QQ邮箱自动登录.发送邮件.退出,算是对自己学习的知识的巩固吧.如果哪里有不足之处,就请各位告诉我,指导我一下,非常感谢. 登录页面 在网页登录QQ邮箱的时候, ...

  7. PHP爬虫之QQ空间自动点赞--更换cookie版

    QQ空间自动点赞网上一搜一大把,但是关于php的还是停留在用以前的3Gqq登陆方式获取sid之后再点赞的.而现在貌似3Gqq没法用了, 网上也没有关于最新的.实现QQ空间自动点赞已经很久了,一直没有发 ...

  8. python爬虫qq好友信息,GitHub - equationl/QQzone_crawler: QQ 空间动态爬虫,利用cookie登录获取所有可访问好友空间的动态保存到本地...

    关于 Edit by equationl 优先在 码云 上更新 该项目修改自 xjr7670 的 QQzone_crawler 原作者说明: QQ空间动态爬虫 修改了什么? 爬取完整的评论列表 爬取点 ...

  9. 技术揭秘“QQ空间”自动转发不良信息

    NEET & Independent Researcher 博客园 首页 联系 订阅 管理 公告 文章大多为转载 仅留作资料备份 Link  个人主页 - Github   一只猿 - 前端攻 ...

最新文章

  1. DataGridView中的CheckBox
  2. css默认样式以及解决办法
  3. 在你们看来,信息网络的定级如何才能更好的发展?或者说有什么影响因素使得定级工作不好开展?
  4. 送书 | 日读论文100+,AI都替代不了!辞去医药研发总监后,她成为了一名全职学术警察...
  5. 支持蓝牙的模拟器_横竖都能玩的小鸡G6,蓝牙连接尽情享受手游乐趣
  6. Java计算机毕业设计德云社票务系统源码+系统+数据库+lw文档
  7. 介绍几个巨佬给大家认识
  8. 论文笔记(2):Cartoon Avatar Generation with Configurable Attributes based on GAN
  9. 安全产品的部署方式及位置
  10. 7个最佳小型企业电子邮件营销服务(2020)
  11. 二维码有效期要注意什么
  12. VSCode(Visual Studio Code)整合Git
  13. Redis缓存一致性问题解决方案
  14. 马克思手稿中的数学题
  15. 分析-Bitlocker固定磁盘随系统自动解锁
  16. 揭开色彩营销中隐藏在品牌运营下的“变脸”戏法!
  17. 炎炎夏日,教大家正确选用净水器的8个要点!
  18. CSS(二):常用CSS样式[文字、文本、背景......]
  19. 获取百度网盘视频下载地址
  20. 2021福是计算机应用基础期末考试,《计算机应用基础》福师2020年8月期末试卷A卷...

热门文章

  1. jQuery使用toggleClass方法动态添加删除Class样式的方法
  2. Java程序内存分析:使用mat工具分析内存占用
  3. Android 实现简单的插件化模块化
  4. Go中的Socket编程
  5. 后台开发经典书籍--代码整洁之道
  6. 玩转数据结构从入门到进阶四
  7. golang中的strings.IndexAny
  8. 数据结构:前缀,中缀,后缀表达式(逆波兰表达式)
  9. python四十一:hashlib模块
  10. 最新软件测试岗位职责大全,看看哪些你还没掌握?