[Bilibiliライブソース]ブラウザが実際のライブソースアドレスを取得します(純粋なフロントエンドJSおよびPHP解析ソースコード)

0.はじめに

以前は、ステーションBがオンデマンドであることしか知りませんでした。多くのアップホストは自分の動画をアップロードでき、ステーションBのライブブロードキャストを視聴したことがありません。では、ライブソースを取得しましょう。授人以鱼不如授人以渔失敗した場合でも、引き続きブラウザーから分析し、ライブソースをクロールする方法を説明します。
ここに写真の説明を挿入

1.ライブソースを検索する

、その中で生きて開きF12、検索に要求されたページアドレスが見つかったかどうかを最初にチェックすることはありません(m3u8/flv)、それが来るのAjaxです:
ここに写真の説明を挿入
次は、チェックしajaxたところ、最初のajaxリターンアドレス:
ここに写真の説明を挿入
テスト済み、単にhostbase_urlファイルの前半は、次のパラメータなしで一緒にスプライスできます。オンラインのm3u8テストWebサイトを使用して、再生を正常にテストします。
https://d1--cn-gotcha204.bilivideo.com/live-bvc/711838/live_222103174_4331333_1500/index.m3u8
ここに写真の説明を挿入

2.ブラウザリクエストプロセスの分析とアイデア

リクエストが見つかったので、シミュレーションは便利です。まず、リクエストのアドレスとパラメータを見てみましょう。
リクエストメソッド:(GET非常に奇妙なことに、ここではGETリクエストです)
リクエストURL:https://api.live.bilibili.com/xlive/web-room/v2/index/getRoomPlayInfo
クエリ文字列:

  • room_id:8178490
  • no_playurl:0
  • マスク:1
  • qn:0
  • プラットフォーム:ウェブ
  • プロトコル:0,1
  • フォーマット:0,2
  • コーデック:0,1

一見するとroom_id、他のすべてが修正されています。これは単純すぎます。

最初にPostmanでテストしてください。完全に問題ありません。
ここに写真の説明を挿入

3.シミュレーションの実装

サーバーソースコード(PHP):

<?php

header('Content-Type:application/json; charset=utf-8');
header('Access-Control-Allow-Origin:*');
header('Access-Control-Allow-Methods:POST,GET,OPTIONS,DELETE');
header('Access-Control-Allow-Credentials: true'); 
header('Access-Control-Allow-Headers: Content-Type,Content-Length,Accept-Encoding,X-Requested-with, Origin');

$params = [
	"room_id" => $_POST["room_id"],
	"no_playurl" => 0,
	"mask" => 0,
	"qn" => 0,
	"platform" => "web",
	"protocol" => "0,1",
	"format" => "0,2",
	"codec" => "0,1",
];

$res = file_get_contents('https://api.live.bilibili.com/xlive/web-room/v2/index/getRoomPlayInfo?' . http_build_query($params));

echo $res;
exit;

フロントエンドH5:

$.ajax({
    
    
    type: 'post',
    url: 'http://xxx/player/bilibli/url.php',
    data: {
    
    
        room_id: 8178490,
    },
    success: function(res){
    
    
        var data = res.data.playurl_info.playurl.stream[1].format[0].codec[1];
        var url = data.url_info[0].host + data.base_url.split("?")[0];
        console.log(url);
    }
});

コンソールはライブソースアドレスを出力します:https://d1--cn-gotcha204.bilivideo.com/live-bvc/481520/live_222103174_4331333_1500/index.m3u8

4.統合プレーヤー

以前の記事を参照して、これを自分で処理したりckplayer使用したりできますvideojs。テストしたプレーヤーは、読み込みが遅いか、直接使用するのがVLC media player最も速いです。

5.まとめ

ステーションBのライブソースは難しくなく、パラメータは暗号化されていません。他のWebサイトよりもシンプルです。重要なのはライブソースの場所を見つけることであり、それ以外はすべて簡単です。

ここに写真の説明を挿入

おすすめ

転載: blog.csdn.net/zy1281539626/article/details/112451021