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

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

代码请移步到GitHub GitHub地址:

1. 截图看一看效果:

1.1抓取执行过程:7f69fb5bc9c02ae244fdd4a643a7b6dc.png

1.2 部分数据截图:

b1130e37d4dcba443749cf41c8fed943.png

1.3 每一个说说的具体内容

611b3a9d938ac35dbc394d35b9a99937.png

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

25869647071773211b385f9f30631a99.png

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

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

930b93eed1e5014ba085b1290f08ead3.png

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

QQBean         是对QQ密码和账号的简单的一个封装,

VerifyCode      提取验证码的【如果你的QQ号码是异地登录就需要输入验证码或者腾讯检测到你不安全】

QzoneEncrypt 加密 俩个重要的参数 一个是加密QQ密码【腾讯在传输密码是做得很安全】,一个是加密g_tk,这个在获取说说时必须携带

GetQQByProperties  读取num.properties文件中的QQ账号和密码

KeyWord   对QQ账号密码 和关键参数的一个提取

Login 使用加密后的密码和QQ账号 登录 获取相关重要的cookie

InputNameAndPwd 在login基础上再次调用其他登录接口直到真正登录到平常打开的QQ空间好友动态页面从页面中提取到 g_qzonetoken

GetMsgBoard 获取QQ用户留言

GetQNum 获取你的好友的列表

GetShuoShuoData 获取说说数据

login.js 是网上的一位高人,提取加密QQ密码的js精华

entry.js是对g_tk的加密的获取

num.properties 是存放QQ和密码的地方 如果你真的想保存数据的话 你最好放上6个无须验证码登录的QQ小号 就临时注册几个就完事了,切记一定不要使用一个,否则封号了就吉吉了。

2.2Visio分析流程

fc56dd9705df9a763bfe1e720e980bae.png

上面的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 packageqzone_enter;2

3 importjava.io.IOException;4 importjava.util.List;5

6 importorg.bianqi.enter.bean.QQBean;7 importorg.bianqi.enter.key.GetQQByProperties;8 importorg.bianqi.enter.key.KeyWord;9 importorg.bianqi.enter.login.InputNameAndPwd;10 importorg.bianqi.getdata.GetShuoShuoData;11

12 public classGetMyShuoShuo {13

14 public static List 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) throwsException {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) throwsException {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) throwsException {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点一个赞!哈哈哈

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值