美文网首页
Python爬虫:Fiddler抓取抖音视屏数据

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

作者: 轻语风 | 来源:发表于2020-07-21 23:15 被阅读0次

    准备工作:
    (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抓取抖音视屏数据

          本文链接:https://www.haomeiwen.com/subject/ptrgkktx.html