数据采集过程中用到的神器mitmproxy,平台架构设计
优采云 发布时间: 2021-03-16 12:01数据采集过程中用到的神器mitmproxy,平台架构设计
在此期间,我一直在处理数据采集。目前,平台数据采集已稳定。您可以花一些时间整理最近的结果,并顺便介绍一些最近使用的技术。本文文章是有偏见的技术,要求读者具有一定的技术基础。它主要介绍了在数据处理中使用的伪造物mitmproxy 采集,以及该平台的一些技术设计。以下是数据采集的整体设计。客户在左边。在其中放置了不同的采集器。 采集器发起请求后,它通过mitmproxy访问抖音,并且在返回数据之后,它穿过中间解析器。数据被解析,并最终存储在不同类别的数据库中。为了提高性能,在中间添加了一个缓存,以将采集器与解析器分开。两个模块之间的工作不会互相影响,并且可以最大化数据。在库中,下图显示了第一代体系结构设计,并且将有后续文章文章介绍第三代体系结构平台架构设计的演进历史。
准备工作
开始准备数据采集时,第一步自然是建立环境。这次我们在Windows环境中使用python 3. 6. 6环境,数据包捕获和代理工具是mitmproxy,也可以。使用Fiddler捕获数据包,并使用Night God模拟器来模拟Android操作环境(您也可以使用真实的机器)。这次,您主要使用手动滑动应用程序来捕获数据。下次,我们将介绍Appium自动化工具,以实现完整的数据采集自动(免提)。
1、安装python 3. 6. 6环境,安装过程可以由百度自己完成,需要注意的是centos7是python 2. 7附带的,需要升级到python 3. 6. 6环境,请在升级前安装ssl模块,否则升级后的版本将无法访问https请求。
2、安装mitmproxy。安装python环境后,执行pip install mitmproxy在命令行上安装mitmproxy。注意:在Windows下只能使用mitmdump和mitmweb。安装后,在命令行上输入mitmdump以启动。代理端口是8080。
3、要安装Night God Simulator,可以在官方网站上下载安装包。安装教程可以由百度完成。基本上,这是下一步。安装Night God Simulator之后,您需要配置Night God Simulator。首先,您需要将模拟器的网络设置为手动代理,IP地址是Windows的IP,端口是mitmproxy的代理端口。
4、接下来是证书的安装。在模拟器中打开浏览器,输入地址mitm.it,然后选择相应版本的证书。安装后,您可以开始捕获该软件包。
5、安装应用程序,可以从官方网站下载应用程序安装包,然后将其拖到模拟器中或在应用程序市场中安装即可安装。
到目前为止,此data 采集环境已完全设置。
数据接口分析和数据包捕获
设置环境后,我们将开始捕获抖音 app的数据并分析每个功能使用的接口。这次,我们以采集视频数据接口为例。
关闭先前打开的mitmdump,重新打开mitmweb工具,mitmweb是图形版本,因此您无需查找黑盒,如下所示:
启动后打开模拟器的抖音 app,可以看到已经解析了数据包,然后进入用户主页,开始向下滑动视频,可以在数据包列表
您可以在右侧看到接口的请求数据和响应数据。我们复制响应数据,然后进入下一步分析。
数据分析
通过mitmproxy和python代码的组合,我们可以通过代码在mitmproxy中获取数据包,然后根据需要对其进行处理。创建一个新的test.py文件,并在其中放入两个方法:
def request(flow):
pass
def response(flow):
pass
顾名思义,这两种方法,一种在请求时执行,另一种在响应时执行,并且数据包存在于流中。请求URL可以通过flow.request.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是完整的视频数据,您可以根据需要提取其中的信息,这里提取了一些信息以供介绍。
统计信息是该视频的点赞,评论,下载和转发的数据。
share_url是视频的共享地址,通过该地址,您可以在PC上观看抖音共享的视频,也可以通过此链接解析不带水印的视频。
play_addr是视频的播放信息。 url_list是不带水印的地址。但是,官方处理已经完成。该地址不能直接播放,并且有时间限制。超时后,链接将无效。
借助此功能,您可以解析出内部信息并将其保存到自己的数据库中,或者下载不带水印的视频并将其保存到计算机中。
编写代码后,保存test.py文件,cmd进入命令行,进入保存test.py文件的目录,在命令行上输入mitmdump -s test.py,并且mitmdump将启动。此时打开该应用程序。开始滑动模拟器并进入用户主页:
它开始下降,并且test.py文件可以解析所有捕获的视频数据。以下是我截获的一些数据信息:
视频信息:
视频统计信息: