最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 抖音好看的视频你想下载吗?

    正文概述    2020-10-11   407

    抖音好看的视频你想下载吗?

    郑重申明:该文章介绍的技术仅供用于学习,不可恶意攻击抖音网站。对抖音服务器造成的任何损失,后果自负。

    具体的视频在如下链接地址:https://player.youku.com/embed/XNDY5MTU0ODg4OA==

    douyin.mp4

    需要用到的工具:
    **1、Chrome浏览器(如Chrome,装了httpwatch的IE浏览器等)+ charles(个人比较喜欢的抓包工具)
    2. Pycharm(任何一个自己熟悉的编译器即可)

    其实在该软件的编写过程中,个人认为是分为两个部分。
    1.视频抓包地址的分析以及获取
    2.界面逻辑代码的编写

    一、视频地址的分析与抓取
    1.我们先在自己的手机端的抖音软件上选取一个自己像下载的视频,并通过连接分享给别人

    抖音好看的视频你想下载吗?

    2.我们在Chrome上面输入上文的链接,并点击右键–设置–network 。再单独打开charles软件。点击回车键开始获取内容

    抖音好看的视频你想下载吗?

    我们会发现我们在浏览器初始输入的地址变成了下方的地址。其实这里涉及爬虫的一个重定向问题( 重定向(Redirect)就是通过各种方法将各种网络请求重新定个方向转到其它位置(如:网页重定向、域名的重定向、路由选择的变化也是对数据报文经由路径的一种重定向)。)

    在这里的流程其实就是:先跳转到我填写的网址—根据当前网址的重定向信息获取到定向后的位置(即 location中的位置)

    抖音好看的视频你想下载吗?

    我们现在倒是能够打开视频进行播放了,但是我们怎么知道视频的实际地址在哪里呢?我们要如何进行下载呢?

    抖音好看的视频你想下载吗?

    其实上面的图片即是我们这两个步骤在charles上对应的抓取到的信息。但是当我们点击播放键的时候,我们在charles上就能发现不一样的地方。下图是点击播放键以后抓取的信息

    抖音好看的视频你想下载吗?

    细心的朋友可能会看到,当我们点击视频的时候他会自动跳转到一个地址,并进行缓存。但是这个地址的是在哪里找呢?这是最关键的一步。

    通过仔细的分析,我发现视频的播放地址藏在 这个地址的响应体里面(这是一个随时变化的地址,我们在这里通过正则表达式能够很好的获取)

    抖音好看的视频你想下载吗?

    当我们获取到这个地址以后,继续发送请求发现该地址也是一个重定向地址,其实视频的最终地址是在下图(也就是图四进行视频缓存的地址):

    抖音好看的视频你想下载吗?

    对该地址发送请求以后,会发现他它的响应体是字节流(我们直接将二进制流写入文件即可保存)

    抖音好看的视频你想下载吗?

    二、界面逻辑代码

    界面搭建所需要的组件和布局其实每个人都有自己的理解和审美,所以这里仅仅展示上面对地址的抓取和视频下载。

    import requests
    import re
    import random
    import time
    from PyQt5.Qt import *
    
    class api(QObject):
        downSignal = pyqtSignal(list)
        def __init__(self,url,saveFilename):
            """
            :param url: 视频地址
            :param saveFilename: 保存的文件名
            """
            super(api, self).__init__()
            self.session = requests.session()
            self.url = url
            self.savename = saveFilename
            userAgent = [
                "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1",
                "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0",
                "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50",
                "Opera/9.80 (Windows NT 6.1; U; zh-cn) Presto/2.9.168 Version/11.50"]
            key = random.randint(0, 3)
            self.headers = {'content-type': 'application/json', 'User-Agent': userAgent[key]}
    
        def getdoumload(self):
            """
            作用:获取最终的视频的下载地址
            :return: 
            """
            
            try:
                url =self.url
                rep = self.session.get(url, headers=self.headers, verify=False)  # 获取跳转的链接
                self.downLoadUrl = re.findall("playAddr:(.*)", rep.text)[0].split('"')[1]  # 获取视频的下载地址,会进行重定向
            except:
                self.downLoadUrl = "parse error"
            return self.downLoadUrl
    
    
    
        def downLoadVideo(self):
            """
            作用:对视频文件进行保存,并发送信号给主界面
            :return: 
            """
            try:
                r = self.session.get(self.downLoadUrl, headers = self.headers,verify = False)
                length = float(r.headers['content-length'])
            except:
                return False
            count = 0
            time1 = time.clock()
    
            with open(self.savename, 'wb') as f:
                for chunk in r.iter_content(chunk_size=512):
                    if chunk:
                        f.write(chunk)
                        count += len(chunk)
                        p = count / length * 100
                        intervals = time.clock() - time1
                        speed = count / 1024 / 1024 / intervals
                        self.downSignal.emit([p, speed])
    
    
    
    
    if __name__ == '__main__':
        url = " https://v.douyin.com/J1cGcN5/"
        apt = api(url,"./xx.mp4")
        if apt.getdoumload() != "parse error":
            apt.downLoadVideo()

    一个自己无聊做的小玩具,欢迎各位大神指出我的不足和错误,共同进步。


        更多python有关文章,请关注python自学网。

    起源地下载网 » 抖音好看的视频你想下载吗?

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元