即刻APP所有用户信息爬虫
作为即刻的一个老(si)用(zhong)户(fen),不得不向大家推荐这款非常棒的APP,里面的人说话都好听,个个都是人才,借用瓦总的话说:有一种小镇特有的感觉。之前一直想爬取下来这个APP上面的用户,因为看到好多用户名特别有意思,还有好多盗版用户哈哈哈,所以闲着也是闲着,不如写个爬虫来爬一个这个做爬虫的软件。
一、思路
由于即刻目前出了一个网页beta版,相对于APP直接抓包来说比较方便,所以就针对这个网站即刻网页版来进行爬取。然而要想爬取这个软件上的所有用户信息来说并不是想象中的那么简单,首先这个网站的用户个人界面不是按照完全有规律的id进行排序的,每个人都有自己的username,所以不能直接找规律穷举来爬,必须找到比较合适的接口,然后我发现可以根据每个人的被关注信息来进行广度优先遍历,即先找到一个大v号比如即刻首席哈哈官,这个官方号有大约八万人关注,然后我们就可以把这八万人爬取到数据库中,然后再爬取关注这些人的账号到数据库中,这样遍历理论上是可以把所有用户信息爬取到的。
二、爬取准备
1,接口分析
首先进行分析这个关注人数的接口,通过我的观察发现即刻的个人关注人数的接口是非常有规律的,当然像即刻这种动态网站是不可能爬取html界面来获取信息的,肯定是要分析后台的json包来进行动态爬取。
直接打开后台找到名字叫做getFollowerList的包,分析这个包的header信息我们发现每次请求的url都是一样的,只是通过不同的request payload数据post过去得到关注者的信息。由于这个关注列表是下拉动态加载的,每次下拉返回20个人的关注信息,故只要找到每次下拉的loadmorekey就能得到下一个json包了。
每次的loadmorekey都可以在上一个得到的getfollowedList返回包里得到,这样我们就找到了规律,就能遍历得到一个人他的所有的关注人的信息了,然后每次可以通过换request payload里面的username值来获取不同人的关注人信息。这样我们就有了大体的爬取思路了。
2,x-jike-access-token值的更新
当我写完爬虫来进行爬取的时碰到了一个比较头疼的问题,就是这个网站的cookies是动态更新的,而我却一直没找到他是怎么更新的,所以我刚开始爬的时候不能完全自动爬取,也就是爬取大概十分钟就要手动更新一下x-jike-access-token值。当我正苦恼于解决这个问题上网无限找关于cookies保持的资料时,我无意中又看了一下即刻的后台,突然发现又突然多了一个数据包