(原创)添加QQ好友日期爬虫01——总体思路

总体思路:

     分析日期时间json ==》 分析请求所需信息  ==》获得Cookies==》解决token  ==》逆向分析解决g_tk  ==》获得所有好友uin  ==》 获得所有好友添加时间  ==》存放 excel

最近BZ在一家中小公司实习,没有多少活,偶逛自己的空间,看到了这个如图,于是有个大胆的想法( ̄▽ ̄)~*

(原创)添加QQ好友日期爬虫01——总体思路_第1张图片

分析目标数据

  • 再想想,自己从初中开始用QQ,到现在也该有2千多天了吧,目前好友栏里面,那些再也没有联系过,却不想删除的人,是什么时候添加的呢?加的第一个好友是谁呢?
  • 那么问题来了,根据所见即所得的爬虫思想,一定有关于添加好友日期,或已添加天数这个数据,让我们找找。

(原创)添加QQ好友日期爬虫01——总体思路_第2张图片

  • 好了,咱们意外的连添加好友的时间也拿到了,对数据敏感的人,应该知道,这是个时间戳。于是我们就能拿到好友的添加时间,和当前时间,得到秒级的成为好友时间。(快让我羡慕的看着你跑去你女票,说已经认识她xx年。。xx秒了)

(原创)添加QQ好友日期爬虫01——总体思路_第3张图片

  • 查看我们需要用到的参数:

(原创)添加QQ好友日期爬虫01——总体思路_第4张图片

  • activeuin :自己QQ号,passiveuin:好友QQ号,g_tk:一个加密字段,qzonetoken: 主页源码里有

所有好友获取:

  • 在自家好友首页能弄到200条好友记录(根据亲密度,这样我们弄到数据也有我们在意的人),出于玩玩的态度,没找其他的,如果朋友有其他获取途径,还望告知~
  • 这里json文件里有我们需要的好友的uin(QQ号)
  • 需要的请求头,与上面的一样

(原创)添加QQ好友日期爬虫01——总体思路_第5张图片

获得token

位置:当前页源码

请求头:需要登录后的Cookies 

(原创)添加QQ好友日期爬虫01——总体思路_第6张图片

获得Cookies (模拟浏览器)

  • 方式1:直接取,自己登一下,上Network 里把Cookies粘贴出来,记得用此Cookies时,登录后不要点退出
  • 方式2:selenium + chrome 模拟登录,(我们就用这个方法)

(原创)添加QQ好友日期爬虫01——总体思路_第7张图片

获得g_tk:

  • 以前找数据都是一条条js找的,最近发现一个强大的工具,Ctrl+shift+F,全js查找,太舒服了,相见恨晚┭┮﹏┭┮

(原创)添加QQ好友日期爬虫01——总体思路_第8张图片

  • 这里它指出了,g_tk参数是有plugin.getASCRFToken()函数有关
  • 再搜看看,得到一个加密函数:
getACSRFToken:function(url) {
    url = QZFL.util.URI(url);
    var skey;
    if (url) {
      if (url.host && url.host.indexOf("qzone.qq.com") > 0) {
        try {
          skey = QZONE.FP._t.QZFL.cookie.get("p_skey");
        } catch (err) {
          skey = QZFL.cookie.get("p_skey");
        }
      } else {
        if (url.host && url.host.indexOf("qq.com") > 0) {
          skey = QZFL.cookie.get("skey");
        }
      }
    }
    if (!skey) {
      skey = QZFL.cookie.get("p_skey") || (QZFL.cookie.get("skey") || (QZFL.cookie.get("rv2") || ""));
    }
    var hash = 5381;
    for (var i = 0, len = skey.length;i < len;++i) {
      hash += (hash << 5) + skey.charCodeAt(i);
    }
    return hash & 2147483647;
  }
  • 我们要做的就会根据这个加密过程,解密:
  • 需要:来自Cookies (我们已拿到)的p_skey、skey、rv2三个参数
  • 返回 g_tk

存放excel

  • 需要;安装相关库,存放来着获得的所有好友的开始时间,星座,当前系统时间

你可能感兴趣的:(爬虫(数据采集))