爬取抖音APP数据

一、准备工作

1、安装抓包工具charles
Charles官网https://www.charlesproxy.com/,下载相应系统的Charles安装包,然后一键安装即可。
爬取抖音APP数据_第1张图片
详细配置可以查看https://blog.csdn.net/liuwkk/article/details/81258522
2.安装mitmproxy和mitmdump

mitmproxy是一个支持HTTP和HTTPS的抓包程序,有类似Fiddler、Charles的功能,只不过它是一个控制台的形式操作。

mitmproxy还有两个关联组件。一个是mitmdump,它是mitmproxy的命令行接口,利用它我们可以对接Python脚本,用Python实现监听后的处理。另一个是mitmweb,它是一个Web程序,通过它我们可以清楚观察mitmproxy捕获的请求。

安装

pip install mitmproxy

设置代理
首先,我们需要运行mitmproxy,命令如下所示:

启动mitmproxy的命令如下:

mitmproxy

配置代理:

手机连接代理
爬取抖音APP数据_第2张图片
代理服务器主机写你的电脑ip(手机必须连接WiFi和电脑同一个局域网下)
端口默认8080,可以自定义端口,后面会介绍
下面查看自己的ip
爬取抖音APP数据_第3张图片
3、安装证书
手机浏览器打开chls.pro/ssl
下载证书
爬取抖音APP数据_第4张图片
安装
以小米5试例 设置>跟多设置>系统安装

爬取抖音APP数据_第5张图片
安装下载的证书
爬取抖音APP数据_第6张图片

二、mitmproxy和Python代码进行交互

在cmd命令行
mitmdump -s 指定文件

mitmdump -s script.py

在指定Python文件之识别二函数
1、request() 参数为flow,它其实是一个HTTPFlow对象,通过request属性即可获取到当前请求对象。然后打印输出了请求的请求头,将请求头的User-Agent修改成了MitmProxy。

def request(flow):
	flow.request.headers['User-Agent'] = 'MitmProxy'
	print(flow.request.headers)

2、Response,mitmdump也提供了对应的处理接口,就是response()方法

from mitmproxy import ctx

def response(flow):
	url = flow.response.url
	response = flow.response.text

三、获取数据

1、使用Charles抓取数据
抓取的用户
爬取抖音APP数据_第7张图片
下面我们来看看抓取到数据
爬取抖音APP数据_第8张图片
2、使用mitmproxy抓取数据

import json, csv

#函数名必须这样写 这是mitmdump规则


def response(flow):
    # print(flow.response.text)
    #下面这个网址是通过fiddler获取到的 但是有些数据我们无法解密,所以需要用mitmdump捕获数据包然后做分析
    if 'aweme/v1/search/item' in flow.request.url:
        for user in json.loads(flow.response.text)['aweme_list']:
            user_info = {}
            # 用户名
            user_info['nickname'] = user['author']['nickname']
            # 视频名称
            user_info['title'] = user['author']['nickname']
            # 用户id
            user_info['uid'] = user['author']['uid']
            # 用户介绍
            user_info['signature'] = user['author']['signature']
            # 视频链接
            user_info['video'] = user['video']['play_addr']['url_list'][0]
            # 视频封面
            user_info['video_pio'] = user['video']['origin_cover']['url_list'][0]
            # 用户头像
            user_info['pic'] = user['author']['avatar_medium']['url_list'][0]

            with open('user_g.json', 'a+', encoding='utf-8')as f:
                if not user_info['uid'] in f.read():
                    f.write(json.dumps(user_info, ensure_ascii=False)+'\n')

通过命令运行

mitmdump -s 指定的文件名.py
mitmdump -s 指定的文件名.py -p 指定端口

抓取到的数据
爬取抖音APP数据_第9张图片

你可能感兴趣的:(爬虫,Python)