Python爬虫:Fiddler抓取抖音视屏数据

准备工作:
(1)、安卓模拟器
(2)、抓包工具:Fiddler
(3)、编程工具:pycharm
(4)、安卓模拟器上安装抖音
(5)、本地创建保存json文件及下载视频文件夹(例G:\software\fid和G:\software\video)

fidder配置

在Tools中的options中,按下图勾选


fidder配置1.jpg

配置远程连接:
选择允许监控远程连接,端口可以任意设置,默认8888


fedder配置2.jpg

然后重启fidder使配置生效。

安卓模拟器配置

查看本机ip:在cmd中输入ipconfig


本机ip.jpg

手机确保和电脑在同一局域网下。
模拟器配置:设置中长按WIFI,代理选择手动,然后输入上图ip端口号


修改模拟器网络配置.jpg

代理设置好后,在浏览器中输入你设置的ip:端口号,(例如192.168.43.178:4263)回车打开fidder页面。然后点击fidderRootcertificate,证书名随便设,可能还需要一个锁屏密码。


手机下载证书.jpg

接下来就是在fidder中抓取抖音的包

抖音抓包

打开抖音,然后观察fidder中的所有包


fidder包.jpg

点击这个json包,解码


解码.jpg

解码后:点击aweme_list,一个大括号代表一个视频


解码后.jpg

重新加载。
视屏链接:aweme_list中,每个视屏下的video下的play_addr下的url_list中。


视屏链接.jpg

将json包保存到本地

点击脚本规则,定义规则放在如下图所示处:


重定义脚本规则.jpg
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 = "G:/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(); 
        }

注意

  • 第一行网址(随时更新):


    链接获取及查看.jpg
  • 路径,即保存json文件路径。
    记得点击Save Script保存
    下边是我保存好的json包

    本地下载好json包.jpg

爬虫脚本

直接上代码

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('G:/software/fid/')  #获取文件夹内所有json包名

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

for videos in videos_list:  #循环json列表,对每个json包进行操作
    a = open('G:/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('G:/software/video/{}.mp4'.format(count),'wb') as f: #以二进制方式写入路径,记住要先创建路径
            f.write(videoMp4)  #写入
            print('视频{}下载完成'.format(count)) #下载提示
        count += 1 #计数+1

运行代码:


运行成功显示.jpg
本地视屏下载显示.jpg

总结

当然,我是手动滑动抖音爬取的,后期会出控制模拟器自动滑动爬取抖音视频下载。

你可能感兴趣的:(Python爬虫:Fiddler抓取抖音视屏数据)