YouTubeの動画ファイルのURLを取得する方法

YouTubeの動画ファイルのURLを、Microsoft Network Monitorを使用して取得する方法について解説します。

通信内容をキャプチャする方法

Microsoft Network Monitorを起動します。

キャプチャの開始

[New Capture]をクリックして、新規にキャプチャする準備をします。

[Start]をクリックして、キャプチャを開始します。このとき無関係な情報がキャプチャされないように、通信機能を持つソフトウェアを停止させておきます。

動画の再生開始

YouTubeのページを開いて、動画の再生を開始します。

キャプチャの停止

再生が開始されたならば[Stop]をクリックして、キャプチャを停止します。

通信内容を解析する方法

Frame Detailsから通信内容を解析します。

動画ページの取得を要求

[www.youtube.com/watch]へのリクエストで、動画ページを要求しています。

- Http: Request, GET /watch
    Command: GET
    - URI: /watch?v=vWF4x01MkzE&eurl=http%3A%2F%2Fvideo%2Egoogle%2Eco%2Ejp%2F
        Location: /watch
        v: vWF4x01MkzE
        eurl: http%3A%2F%2Fvideo%2Egoogle%2Eco%2Ejp%2F
        feature: player_embedded
    ProtocolVersion: HTTP/1.1
    Accept: image/gif, application/x-shockwave-flash,
    Accept-Language: en-US,ja;q=0.5
    UA-CPU: x86
    Accept-Encoding: gzip, deflate
    UserAgent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727 )
    Host: www.youtube.com
    Connection: Keep-Alive
    Cookie: PREF=gl=JP&hl=en
    HeaderEnd: CRLF
- Http: Response, HTTP/1.1, Status Code = 200, URL: /watch
    ProtocolVersion: HTTP/1.1
    StatusCode: 200, Ok
    Reason: OK
    Date: Thu, 30 Apr 2009 14:53:53 GMT
    Server: Apache
    X-Content-Type-Options: nosniff
    Content-Encoding: gzip
    Expires: Tue, 27 Apr 1971 19:44:06 EST
    X-YouTube-MID: WkFSZzctYUFHdmlYWld3ZTVFeF9lU1dJSnBxcTdTTjEwU0RRa2lLZFd2bzJ2a0NIcDlwLXdn
    Cache-Control: no-cache
    ContentLength: 19189
    Keep-Alive: timeout=300
    Connection: Keep-Alive
    ContentType: text/html; charset=utf-8
    HeaderEnd: CRLF
    - payload: HttpContentType = text/html; charset=utf-8
        HtmlElement: ヒ

動画情報の取得を要求

[www.youtube.com/get_video]へのリクエストでは、動画の情報を要求しています。

- Http: Request, GET /get_video
    Command: GET
    - URI: /get_video?video_id=vWF4x01MkzE&t=vjVQa1PpcFOvriImNzSrd2YsSmt8_hmg8ynGfJsxToM=
        Location: /get_video
        video_id: vWF4x01MkzE
        t: vjVQa1PpcFOvriImNzSrd2YsSmt8_hmg8ynGfJsxToM=
        el: detailpage
        ps:
        fmt: 34
    ProtocolVersion: HTTP/1.1
    Accept: */*
    Accept-Language: ja-JP
    Referer: http://s.ytimg.com/yt/swf/watch-vfl94162.swf
    x-flash-version: 9,0,124,0
    UA-CPU: x86
    Accept-Encoding: gzip, deflate
    UserAgent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727 )
    Host: www.youtube.com
    Connection: Keep-Alive
    HeaderEnd: CRLF
- Http: Response, HTTP/1.1, Status Code = 303, URL: /get_video
    ProtocolVersion: HTTP/1.1
    StatusCode: 303, See other
    Reason: See Other
    Date: Thu, 30 Apr 2009 14:53:55 GMT
    Server: Apache
    X-Content-Type-Options: nosniff
    Expires: Tue, 27 Apr 1971 19:44:06 EST
    X-YouTube-MID: WkFSZzctYUFHdmlVUXBDYVAweUZFdHZvZEU1MEVHa3Nrc2lpNW9QVkFtSkVoTkc1d29FZ0NB
    Cache-Control: no-cache
    Location: http://v23.lscache7.googlevideo.com/videoplayback?sparams=id
    Keep-Alive: timeout=300
    Connection: Keep-Alive
    TransferEncoding: chunked
    ContentType: text/html; charset=utf-8
    HeaderEnd: CRLF

ResponseがStatus 303 (See Other) で返されています。よって、参照先のLocationヘッダが動画ファイルのURLになります。

※通信用語については、ネットワーク技術で詳述しています。
複数の技術系サイトから、まとめて検索