真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

下載抖音好看視頻的方法

這篇文章將為大家詳細(xì)講解有關(guān)下載抖音好看視頻的方法,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比通州網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式通州網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋通州地區(qū)。費(fèi)用合理售后完善,十年實(shí)體公司更值得信賴。

鄭重申明:該文章介紹的技術(shù)僅供用于學(xué)習(xí),不可惡意攻擊抖音網(wǎng)站。對(duì)抖音服務(wù)器造成的任何損失,后果自負(fù)。

需要用到的工具:
**1、Chrome瀏覽器(如Chrome,裝了httpwatch的IE瀏覽器等)+ charles(個(gè)人比較喜歡的抓包工具)
2. Pycharm(任何一個(gè)自己熟悉的編譯器即可)

其實(shí)在該軟件的編寫過(guò)程中,個(gè)人認(rèn)為是分為兩個(gè)部分。
1.視頻抓包地址的分析以及獲取
2.界面邏輯代碼的編寫

一、視頻地址的分析與抓取
1.我們先在自己的手機(jī)端的抖音軟件上選取一個(gè)自己像下載的視頻,并通過(guò)連接分享給別人

下載抖音好看視頻的方法

2.我們?cè)贑hrome上面輸入上文的鏈接,并點(diǎn)擊右鍵–設(shè)置–network 。再單獨(dú)打開charles軟件。點(diǎn)擊回車鍵開始獲取內(nèi)容

下載抖音好看視頻的方法

我們會(huì)發(fā)現(xiàn)我們?cè)跒g覽器初始輸入的地址變成了下方的地址。其實(shí)這里涉及爬蟲的一個(gè)重定向問(wèn)題( 重定向(Redirect)就是通過(guò)各種方法將各種網(wǎng)絡(luò)請(qǐng)求重新定個(gè)方向轉(zhuǎn)到其它位置(如:網(wǎng)頁(yè)重定向、域名的重定向、路由選擇的變化也是對(duì)數(shù)據(jù)報(bào)文經(jīng)由路徑的一種重定向)。)

在這里的流程其實(shí)就是:先跳轉(zhuǎn)到我填寫的網(wǎng)址—根據(jù)當(dāng)前網(wǎng)址的重定向信息獲取到定向后的位置(即 location中的位置)

下載抖音好看視頻的方法

我們現(xiàn)在倒是能夠打開視頻進(jìn)行播放了,但是我們?cè)趺粗酪曨l的實(shí)際地址在哪里呢?我們要如何進(jìn)行下載呢?

下載抖音好看視頻的方法

其實(shí)上面的圖片即是我們這兩個(gè)步驟在charles上對(duì)應(yīng)的抓取到的信息。但是當(dāng)我們點(diǎn)擊播放鍵的時(shí)候,我們?cè)赾harles上就能發(fā)現(xiàn)不一樣的地方。下圖是點(diǎn)擊播放鍵以后抓取的信息

下載抖音好看視頻的方法

細(xì)心的朋友可能會(huì)看到,當(dāng)我們點(diǎn)擊視頻的時(shí)候他會(huì)自動(dòng)跳轉(zhuǎn)到一個(gè)地址,并進(jìn)行緩存。但是這個(gè)地址的是在哪里找呢?這是最關(guān)鍵的一步。

通過(guò)仔細(xì)的分析,我發(fā)現(xiàn)視頻的播放地址藏在 這個(gè)地址的響應(yīng)體里面(這是一個(gè)隨時(shí)變化的地址,我們?cè)谶@里通過(guò)正則表達(dá)式能夠很好的獲取)

下載抖音好看視頻的方法

當(dāng)我們獲取到這個(gè)地址以后,繼續(xù)發(fā)送請(qǐng)求發(fā)現(xiàn)該地址也是一個(gè)重定向地址,其實(shí)視頻的最終地址是在下圖(也就是圖四進(jìn)行視頻緩存的地址):

下載抖音好看視頻的方法

對(duì)該地址發(fā)送請(qǐng)求以后,會(huì)發(fā)現(xiàn)他它的響應(yīng)體是字節(jié)流(我們直接將二進(jìn)制流寫入文件即可保存)

下載抖音好看視頻的方法

二、界面邏輯代碼

界面搭建所需要的組件和布局其實(shí)每個(gè)人都有自己的理解和審美,所以這里僅僅展示上面對(duì)地址的抓取和視頻下載。

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)  # 獲取跳轉(zhuǎn)的鏈接
            self.downLoadUrl = re.findall("playAddr:(.*)", rep.text)[0].split('"')[1]  # 獲取視頻的下載地址,會(huì)進(jìn)行重定向
        except:
            self.downLoadUrl = "parse error"
        return self.downLoadUrl



    def downLoadVideo(self):
        """
        作用:對(duì)視頻文件進(jìn)行保存,并發(fā)送信號(hào)給主界面
        :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()

關(guān)于下載抖音好看視頻的方法就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。


分享名稱:下載抖音好看視頻的方法
網(wǎng)頁(yè)網(wǎng)址:http://weahome.cn/article/gsdhih.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部