qq空间爬取

时间:2021-02-19 22:45:47

QQ_spider

github传送门

QQ空间spider总结

花了将近3天吧,完成了低配版qq空间的爬虫,终于能上线刚一波了,还是蛮期待的。 流程很简单,模拟登录 ==>采集==>保存csv==>分析。qq空间的爬取还是很有代表性的,先来说说自己所遇到的一些困难吧:

模拟登陆中:

1.cookie,selenium的chrome,相较于phantomjs有一个好处,可以解决验证码的问题。 2.内嵌frame,这边要注意的点就是selenium的frame操作,因为不经常使用。

采集过程中:

1.说说、日志、好友等接口的获取,这就要引出爬虫界的利器,抓包。说说、日志等接口url的命名还是有点与众不同的,当时我也是找了好一会,才在万军丛中找出了他们。给大家具体感受一下:说说url:https://user.qzone.qq.com/proxy/domain/r.qzone.qq.com/cgi-bin/tfriend/friend_hat_get.cgi?hat_seed=1&uin=【登陆的QQ】&fupdate=1&g_tk=【g_tk值】&qzonetoken=【一串】&g_tk=【g_tk值】。

2.gtk算法,qzonetoken值。gtk的值是qq空间防爬的第一道墙,由百度易得:得到skey后,循环取单字符的二进制并取左值.累加之后就得到后面的g_tk值了。如果说你要自己去寻找,那就需要有一定的js基础了。

def getGTK(cookies):
    hashes = 5381
    for letter in cookies['p_skey']:
        hashes += (hashes << 5) + ord(letter)
     return hashes & 0x7fffffff

  

qzonetoken就相当于django中的csrf_token,防止跨站请求伪造,只能通过即时获取。

目标:因为本身写这个程序目的是用来大规模的找出潜在客户,这里就不具体展示了,但是亲测大规模的爬取还是蛮稳定的。这里就仅仅向大家展示我根据一个朋友的说说、评论的结果分析。 qq空间爬取qq空间爬取