python结合fiddler批量爬取抖音APP里面的视频

一、Fiddler的安装与设置

Fiddler官网:https://www.telerik.com/download/fiddler

电子邮件随便填一下就可以了,按照安装提示一直点确定即可安装。

 

打开Fiddler,在Tools---Options处进行设置,如图:

 

ps:这里的端口8888,是待会与手机/模拟器进行连接要使用到的(手机也可以,这里用模拟器示范)

 

在电脑下载一个手机模拟器,这里我用的是夜神模拟器

下载地址:https://www.yeshen.com/,下载后安装即可

 

打开模拟器,进入设置-----WLAN,会发现已经连上了一个网络,鼠标长按,选择修改网络

选择高级选项,代理改为手动,然后输入你电脑的ip和8888端口号保存即可

 

 

在模拟器中打开浏览器,输入:http://你的电脑ip地址:8888,如图所示,下载证书并打开安装

证书名随便取一个名字就好了,若没有安装证书,将无法抓取HTPPS请求

 

二、抓取抖音数据包

打开Fiddler软件,Rules------Customize Rules进入Fiddler ScriptEditor页面

定位到OnBeforeResponse函数下面,编写抓取数据的规则

 

1处是Fiddler中捕捉到的抖音数据包的路径,抖音官方可能时不时会更改路径,具体以实际分析为准

2处是保存地址,更改为你们自己的保存地址。代码放在下面,方便复制。

if (oSession.uriContains("https://api3-core-c-hl.amemv.com/aweme/v1/aweme/post/")){
            var strBody=oSession.GetResponseBodyAsString();
            var sps = oSession.PathAndQuery.slice(-58,);
            //FiddlerObject.alert(sps)
            var filename = "H:/software/fid" + "/" + sps + ".json";
            var curDate = new Date();   
            var sw : System.IO.StreamWriter;  
            if (System.IO.File.Exists(filename)){  
                sw = System.IO.File.AppendText(filename);  
                sw.Write(strBody); 
            }  
            else{  sw = System.IO.File.CreateText(filename); 
                sw.Write(strBody);
                }  
            sw.Close(); 
            sw.Dispose(); 
            }

 

打开模拟器中的抖音,搜索刀某刀进入个人页面,滑动抖音,使屏幕整个浏览完全部作品

这个时候Fiddler加载出了js对象,被我们前面编写的抓取规则捕捉到,保存在本地

 

 

分析得到的json文件,找出视频url的位置,接下来用python代码下载视频就轻松多了

下载成功结果如图,刀某刀的个人主页视频就保存下来了,而且还是无水印视频

 

 

下面附上python代码,保存路径记得改为自己电脑的

import os,json,requests
# 请求头
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36'}

videos_list = os.listdir('H:/software/fid/')  #获取文件夹内所有json包名

count = 1  #计数,用来作为视频名字

for videos in videos_list:  #循环json列表,对每个json包进行操作
    a = open('H:/software/fid/{}'.format(videos),encoding='utf-8')  #打开json包
    content = json.load(a)['aweme_list'] #取出json包中所有视频

    for video in content:  #循环视频列表,选取每个视频
        video_url = video['video']['play_addr']['url_list'][1] #获取视频url,每个视频有4个url,我选的第2个
        videoMp4 =  requests.get(video_url,headers=headers).content #获取视频二进制代码
        with open('H:/software/video/{}.mp4'.format(count),'wb') as f: #以二进制方式写入路径,记住要先创建路径
            f.write(videoMp4)  #写入
            print('视频{}下载完成'.format(count)) #下载提示
        count += 1 #计数+1

 

至此,Python结合Fiddler爬取抖音视频就完成了

如有疑问,欢迎在下面评论,或者私信我

 

posted @ 2020-05-24 22:59  微哭  阅读(1828)  评论(0编辑  收藏  举报