ブラウザはステーションBのライブブロードキャストソースアドレスを分析します
0.はじめに
以前は、ステーションBがオンデマンドであることしか知りませんでした。多くのアップホストは自分の動画をアップロードでき、ステーションBのライブブロードキャストを視聴したことがありません。では、ライブソースを取得しましょう。授人以鱼不如授人以渔
失敗した場合でも、引き続きブラウザーから分析し、ライブソースをクロールする方法を説明します。
1.ライブソースを検索する
、その中で生きて開きF12
、検索に要求されたページアドレスが見つかったかどうかを最初にチェックすることはありません(m3u8/flv
)、それが来るのAjaxです:
次は、チェックしajax
たところ、最初のajax
リターンアドレス:
テスト済み、単にhost
とbase_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サイトよりもシンプルです。重要なのはライブソースの場所を見つけることであり、それ以外はすべて簡単です。