1. 程式人生 > >Python3網路爬蟲(八):愛奇藝等主流視訊網站的VIP視訊破解(線上觀看+視訊下載)

Python3網路爬蟲(八):愛奇藝等主流視訊網站的VIP視訊破解(線上觀看+視訊下載)

轉載請註明作者和出處:http://blog.csdn.net/c406495762
執行平臺: Windows
Python版本: Python3.x
IDE: Sublime text3

一、前言

    沒有會員,想線上觀看或下載愛奇藝、PPTV、優酷、網易公開課、騰訊視訊、搜狐視訊、樂視、土豆、A站、B站等主流視訊網站的VIP視訊?又不想充會員怎麼辦?博主本次寫的VIP視訊破解助手也許可以幫你解決煩惱。

PS:本軟體只用來交流學習,請勿用於商業用途。如涉及版權侵權等問題,請聯絡我,我會刪除文章。我可是守法的好公民….

二、軟體使用說明

1、軟體下載

    軟體執行平臺:Windows

    注意:該軟體已經打包成exe可執行檔案,無需Python環境即可執行。將軟體壓縮包解壓,即可使用。

    exe可執行檔案,即助手軟體儲存在dist資料夾下:

    執行軟體,如果誤報木馬。將此應用程式新增到信任區,或者關閉防毒軟體,即可。PS:軟體無毒,可放心使用。

2、線上播放視訊(以愛奇藝為例講解)

    在主介面我們可以選擇視訊的播放通道(預設通道一)。在視訊連線文字框中輸入視訊連線,點選播放按鈕,該助手軟體將啟動預設瀏覽器,視訊即可線上觀看。

    視訊連線如何獲取呢?

    在選單欄的友情連結的下拉列表中,我們可以選擇開啟一個我們喜歡的視訊網站,比如點選愛奇藝,預設瀏覽器將自動開啟愛奇藝首頁。

    選擇一部自己喜歡的電影,瀏覽器位址列的內容即為視訊連線。

    在助手軟體文字輸入框中輸入地址,點選播放即可線上觀看視訊:

3、視訊下載(以愛奇藝為例講解 )

注意:暫只支援愛奇藝和優酷的視訊下載,視訊線上觀看不受影響。

    點選選單,出現下拉選單,在下拉選單選擇視訊下載(注意:請先新增視訊連線)

    此時,預設瀏覽器會開啟網頁,等待幾秒鐘,待載入完成,點選下圖按鈕,即可通過瀏覽器下載視訊。

三、程式碼編寫

    介紹完該助手軟體,進入本次爬蟲教程的正題:視訊抓包

1、軟體原理:

a)視訊播放

    在講解視訊抓包之前,先介紹下兩個視訊解析網站:

    這兩個網站為我們提供了免費的視訊解析,他們的通用解析方式是:

    VIP視訊解析: http://www.vipjiexi.com/tong.php?url=[播放地址或視訊id]
    無名小站:http://www.wmxz.wang/video.php?url=[播放地址或視訊id]

    筆者正式呼叫了這兩個網站,實現視訊線上播放的。至於,視訊下載介面如何調出,即是本文的重點。

b)視訊下載

    這兩個網站均沒有提供下載功能,當然如果你使用chrome視訊抓包外掛,也可以實現視訊的下載,例如使用chrome外掛:Flash Video Downloader。不過為了學習,我們使用python程式進行抓包。因此,筆者使用無名小站進行視訊下載,對無名小站視訊進行抓包分析。

    看過筆者之前的Python3網路爬蟲的讀者,一定知道如何進行抓包分析,在這裡不再囉嗦,直接進入正題:我們可以看到這裡有一個POST請求,Form Data中有兩個引數,一個是up,另一個是url。因此,我們向伺服器傳送這個資料請求,對返回的資料進行json解析,即可得到視訊的真實地址,開啟這個視訊的真實地址,就會出現之前介紹的現在視訊的瀏覽器介面。僅僅這樣就可以了嗎?其實不然,因為如果你單純使用這種方法,我們只能下載我們抓包分析時的視訊。因為,這個url是隨著我們解析視訊的不同而改變的,因此如何獲取這個改變的url,成為我們下一步的重點。

    繼續分析我們會發現在傳送POST請求之前,有一個GET請求,如果我們向這個Request URL的地址傳送GET請求,你會驚奇的發現,返回的資訊裡包含我們需要的url資訊。

它是這個樣子的:

    瞧,url我們就這樣得到了,通過相應的解析,提取出url資訊,並將這個url資訊作為之前提到的POST請求的Form Data,這樣我們就可以得到真實的視訊地址,通過該地址即可進行視訊下載,程式碼如下:

#-*-coding:utf-8-*-
import re
import json
from bs4 import BeautifulSoup
from urllib import request, parse

if __name__ == '__main__':
    ip = 'http://www.iqiyi.com/v_19rrb2yq04.html?fc=8b62d5327a54411b#vfrm=19-9-0-1'
    get_url = 'http://www.sfsft.com/index.php?url=%s' % ip

    get_movie_url = 'http://www.sfsft.com/api.php'

    head = {
        'User-Agent':'Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166  Safari/535.19',
        'Referer':'http://www.sfsft.com/index.php?url=%s' % ip
    }

    get_url_req = request.Request(url = get_url, headers = head)
    get_url_response = request.urlopen(get_url_req)
    get_url_html = get_url_response.read().decode('utf-8')
    bf = BeautifulSoup(get_url_html, 'lxml')

    a = str(bf.find_all('script'))

    pattern = re.compile("url : '(.+)',", re.IGNORECASE)
    url = pattern.findall(a)[0]

    get_movie_data = {
        'up':'0',
        'url':'%s' % url,
    }
    get_movie_req = request.Request(url = get_movie_url, headers = head)
    get_movie_data = parse.urlencode(get_movie_data).encode('utf-8')
    get_movie_response = request.urlopen(get_movie_req, get_movie_data)
    get_movie_html = get_movie_response.read().decode('utf-8')
    print(get_movie_data['url'])

    執行結果如下圖所示:

    在瀏覽器中開啟這個地址,即可出現上面提到的視訊下載介面。同時,更改程式碼中的ip,即視訊連線地址,即可解析不同的視訊的真實視訊地址,並對其進行下載。

2、Tkinter

    該助手軟體的介面是使用Python的Tkinter設計的,由於本部分內容不是Python網路爬蟲的重點,因此不在此進行講解。

四、總結

    該軟體一定還是有一些Bug的,歡迎指出問題。

    除此之外,軟體也有很多需要改進的地方。比如,視訊的下載是在瀏覽器中進行的,操作不友好。可以使用該軟體直接下載,選擇下載路徑,實現一鍵下載。同時,視訊下載暫只支援愛奇藝和優酷的視訊下載,這裡也可以進行改進。但是由於筆者的時間有限,就沒有繼續寫,後期可能會更新。

    PS:如果覺得本篇文章對您有所幫助,歡迎關注、訂閱、頂!

更新:2017.05.08

據使用者反映:軟體已經不能使用,地址被重新進行了加密。既然交流學習的目的已經達到了,思路就是這樣。如果感興趣的可以自己嘗試,我就不再公佈破解方法了,望見諒!PS:此助手軟體僅存活一天。