数据平台初试(技术篇)——抖音数据采集(初级版)

优采云 发布时间: 2020-08-09 19:43

  公众号原文链接:

  数据平台初试(技术篇)——抖音数据采集(初级版)

  这段时间仍然在处理数据采集的问题,目前平台数据采集趋于稳定,可以抽出时间来整理一下近日的成果,顺便介绍一些近日用到的技术。本篇文章偏向技术,需要读者有一定的技术基础,主要介绍数据采集过程中用到的利器mitmproxy,以及平台的一些技术设计。以下是数据采集整体的设计,左边是客户机,在里面放置了不同的采集器,采集器发起恳求以后,通过mitmproxy访问抖音,等数据回传以后,通过中间的解析器对数据进行解析,最后分门别类的储存到数据库中,为了提高性能,在中间加入了缓存,把采集器和解析器分隔开,两个模块之间工作互不影响,可以最大限度的把数据入库,下图为第一代构架设计,后续会有一篇文章介绍平台构架设计的三代演化史。

  

  准备工作

  开始步入数据采集的打算工作,第一步自然是环境搭建,本次我们在windows环境下,采用python3.6.6环境,抓包和代理工具是mitmproxy,也可以使用Fiddler抓包,采用夜神模拟器来模拟安卓运行环境(也可以用真机),这次主要通过自动滑动app来抓取数据,下次介绍采用Appium自动化工具,实现数据采集的全手动(解放右手)。

  1、安装python3.6.6环境,安装过程可自行百度,需要注意的是,centos7自带的是python2.7,需要升级到python3.6.6环境,升级之前主要先安装ssl模块,否则升级好的版本未能访问https的恳求。

  2、安装mitmproxy,安装好python环境后,在命令行执行pip install mitmproxy安装mitmproxy,注:windows下只有mitmdump和mitmweb可以使用,安装好后在命令行输入mitmdump即可启动,默认启动的代理端口为8080。

  3、安装夜神模拟器,可以在官网下载安装包,安装教程自行百度即可,基本都是下一步。安装好夜神模拟器以后,需要对夜神模拟器进行配置。首先须要设置模拟器的网路为自动代理,IP地址为windows的IP,端口为mitmproxy的代理端口。

  

  4、接下来是证书的安装,打开模拟器中的浏览器,输入地址mitm.it,选择对应版本的证书,安装好后,就可以进行抓包了。

  

  5、安装app,app安装包可以到官网下载,然后通过拖放进模拟器就可以安装,或者在应用市场进行安装。

  至此,本次数据采集环境就全部搭建完成。

  数据插口剖析 抓包

  搭建好环境以后就开始对抖音app进行数据抓包,分析出每位功能所使用的插口,本次以采集视频数据插口为例介绍。

  关闭之前打开的mitmdump,重新打开mitmweb工具,mitmweb是一个图形化的版本,就不用对着黑框框找了,如下图:

  

  启动以后打开模拟器的抖音app,可以看见早已有数据包解析下来了,然后步入用户主页,开始下降视频,在数据包列表中可以找到恳求视频数据的插口

  

  可以在左边看见插口的恳求数据和响应数据,我们将响应数据复制下来,进入下一步解析。

  

  数据解析

  通过mitmproxy和python代码的结合,我们就可以在代码中获取到mitmproxy中的数据包,进而可以根据需求来处理。新建一个test.py文件,里面放两个方式:

  def request(flow):

pass

def response(flow):

pass

  见名知意,这两个方式,一个是在恳求的时侯执行的,一个是在响应的时侯执行,而数据包则存在于flow当中。通过flow.request.url可以获取到恳求url,flow.request.headers可以获取到恳求头信息,flow.response.text中的就是响应的数据了。

  def response(flow):

if str(flow.request.url).startswith("https://aweme.snssdk.com/aweme/v1/aweme/post/"):

index_response_dict = json.loads(flow.response.text)

aweme_list = index_response_dict.get('aweme_list')

if aweme_list:

for aweme in aweme_list:

print(aweme)

  这个aweme就是一个完整的视频数据了,可以按照须要提取上面的信息,这里提取部份信息做介绍。

   "statistics":{

"aweme_id":"6765058962225204493",

"comment_count":24,

"digg_count":1465,

"download_count":1,

"play_count":0,

"share_count":3,

"forward_count":0,

"lose_count":0,

"lose_comment_count":0

}

  statistics信息就是这个视频的点赞,评论,下载,转发的数据。

  share_url为视频的分享地址,通过这个地址,可以在PC端观看抖音分享的视频,也可以通过这个链接解析到无水印视频。

  play_addr为视频的播放信息,其中的url_list即为无水印地址,不过目前官方做了处理,这个地址难以直接播放,也有时间限制,超时以后链接就失效了。

  有了这个aweme,就可以把上面的信息解析下来,保存到自己的数据库,或者下载无水印视频,保存到自己笔记本了。

  写好代码然后,保存test.py文件,cmd步入命令行,进入到保存test.py文件目录下,在命令行输入mitmdump -s test.py,mitmdump就启动了,此时打开app,开始滑动模拟器,进入用户主页:

  

  开始不断下降,test.py文件就可以把抓取到的视频数据全部解析下来了,以下是我截取的部份数据信息:

  视频信息:

  

  视频统计数据:

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线