逍遥模拟器配合fiddler爬取抖音视频!开源免费!

一、工具及下载:

(1)下载fiddler抓取包:配置fiddler,关闭防火墙:手机下载证书并信任。

(2)更改手机ip,手机没网,操作注册cmd进入管理员界面,输入regedit
逍遥模拟器配合fiddler爬取抖音视频!开源免费!_第1张图片
参考链接:https://jingyan.baidu.com/article/e5c39bf5f4f8d439d760338e.html
(3)逍遥模拟器下载地址:http://soft.onlinedown.net/soft/266828.htm
逍遥模拟器配合fiddler爬取抖音视频!开源免费!_第2张图片
(4)模拟器上下载fiddler证书:本电脑ip+fiddler上设置的端口
fiddler配置参考链接:https://www.cnblogs.com/woaixuexi9999/p/9247705.html

注意:下载证书时,fiddler一定要开启状态并配置好

下载完证书去模拟器的下载里找,然后进行操作,成功后fiddler可监控模拟器上面的请求
逍遥模拟器配合fiddler爬取抖音视频!开源免费!_第3张图片
抖音下载后方可当手机一样使用:
逍遥模拟器配合fiddler爬取抖音视频!开源免费!_第4张图片
(5)fiddler链接手机后谷歌浏览器报错:访问地址不安全:
在这里插入图片描述
参考链接:https://blog.csdn.net/qq_26916671/article/details/99412994
(6)在访问请求地址https://aweme-hl.snssdk.com/aweme/v1/aweme/post/?
逍遥模拟器配合fiddler爬取抖音视频!开源免费!_第5张图片
在json中找到视频地址:

逍遥模拟器配合fiddler爬取抖音视频!开源免费!_第6张图片
(7)mysql数据库。代码执行写入数据

二、fiddler中添加下载视频地址代码

在fiddler中添加下载视频代码:注意两点:
(1)get后面的路径要随时看进行更换
(2)下载的路径要在fiddler下面自己新建

逍遥模拟器配合fiddler爬取抖音视频!开源免费!_第7张图片

	###########判断地址可能有变动,需要自行修改
  if (oSession.uriContains("https://aweme-hl.snssdk.com/aweme/v1/aweme/post/")){
            var strBody=oSession.GetResponseBodyAsString();
            var sps = oSession.PathAndQuery.slice(-58,);
            //FiddlerObject.alert(sps)
            var filename = "C:\抖音视频资料" + "/" + 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中的script的response中,如下图:添加好之后别忘记保存!!
逍遥模拟器配合fiddler爬取抖音视频!开源免费!_第8张图片

三、python执行代码pycharm新建py文件

程序执行代码:

import os,json,requests
#伪装头
import pymysql
db_name = 'douyin'
db_user = 'root'
db_pass = '你自己的密码'
db_ip = 'localhost'
db_port = 3306
def main():
    '''
    解析json包,获取数据
    :return:
    '''
    headers = {
    		#你自己浏览器的版本********************
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36'}
    videos_list = os.listdir(r'C:\Users\liangxue\AppData\Local\Programs\Fiddler\抖音视频资料')  # 获取文件夹内所有json包名
    count = 1  # 计数,用来作为视频名字
    for videos in videos_list:  # 循环json列表,对每个json包进行操作
        a = open(r'C:\Users\liangxue\AppData\Local\Programs\Fiddler\抖音视频资料/{}'.format(videos), encoding='utf-8')  # 打开json包
        content = json.load(a)['aweme_list']  # 取出json包中所有视频
        print("content=========", content)
        for video in content:  # 循环视频列表,选取每个视频
            video_id=video['video']['play_addr']["uri"]
            print("作品id===",video_id)
            video_nickname = video["author"]["nickname"]
            print("昵称=====", video_nickname)
            video_thumb= video["music"]["cover_large"]["url_list"][0]
            print("封面", video_thumb)
            video_title= video["desc"]
            print("标题==========", video_title)
            video_url = video['video']['play_addr']['url_list'][0]#每个视频有几个地址,选其中一个
            print("视频链接地址=========", video_url, len(video_url))
            videoMp4 = requests.request('get', video_url, headers=headers).content  # 获取视频二进制代码
            sql = """ INSERT INTO douyin(video_url,video_title,video_nickname,video_thumb,video_id) VALUES(%s,%s,%s,%s,%s)"""
            data = (video_url, video_title,video_nickname,video_thumb,video_id)
            writemysql(sql, data)
            with open('./video_list/{}.mp4'.format(count), 'wb') as f:  # 以二进制方式写入路径,记住要先创建路径
                f.write(videoMp4)  # 写入
                print('视频{}下载完成'.format(count))  # 下载提示
            count += 1  # 计数+1
def writemysql(sql, db_data=()):
    '''
    数据库操作
    :param sql:
    :param db_data:
    :return:
    '''
    print("进入数据库操作")
    try:
        conn = pymysql.connect(db=db_name, user=db_user, passwd=db_pass, host=db_ip, port=int(db_port),charset="utf8mb4")
        cursor = conn.cursor()
        cursor.execute(sql, db_data)
        conn.commit()
        cursor.close()
        conn.close()
    except Exception as e:
        print("数据库写入失败=========", e)
        return
    return True


if __name__ == "__main__":
    main()

四、错误如何解决

错误:爬完一个人的作品,爬下一个的时候需要把json包删除再爬下一个(可能你不需要删除再爬取)如下图:
逍遥模拟器配合fiddler爬取抖音视频!开源免费!_第9张图片
爬取结果展示:

逍遥模拟器配合fiddler爬取抖音视频!开源免费!_第10张图片
逍遥模拟器配合fiddler爬取抖音视频!开源免费!_第11张图片
播放效果:
逍遥模拟器配合fiddler爬取抖音视频!开源免费!_第12张图片
逍遥模拟器配合fiddler爬取抖音视频!开源免费!_第13张图片
写入数据库,数据库展示:
逍遥模拟器配合fiddler爬取抖音视频!开源免费!_第14张图片

五、总结:

(1)抖音属于手机APP,电脑上没有办法直接得到访问路径请求,需要下载fiddler链接抓取包!
fiddler配置及下载信任证书并信任!
(2)下载模拟器,模拟手机操作抖音,fiddler实时监控模拟器上的动作,得到请求地址!
模拟器上下载fiddler证书并信任,模拟器上下载抖音,模仿手机操作,
!让抖音平台认为是用户手机浏览操作
(3)分享得到的地址中的josn数据包中的数据,找到自己想要的数据!
awenm_list----->{}----->video----->paly_addr----->url_list
(4)fiddler的scfipt中添加下载视频地址的代码!
注意四点:
1:get后面的路径要随时看进行更换
2:下载的路径要在fiddler下面自己新建
3:代码添加到response而不是request中
4:添加后一定要保存,关闭重启fiddler
(5)模拟器的抖音界面,进入某个用户的主页,浏览视频再执行pycharm中的代码方可下载视频
(6)爬取一个用户后报错json包的错,需要把文件删除再重新生成!(因人而异)
(7)视频有有效期,并非可永久使用!

拿走不谢,有更好的方法请分享给我,谢谢!
如有帮助请点赞支持,错误请指出,互相学习,谢谢!

你可能感兴趣的:(mysql,python,python,mysql,pycharm,android)