Bilibiliが再生1分で止まる?ログイン(登録)画面による自動停止を回避する方法

コンピュータ関連
スポンサーリンク

Bilibiliで動画を見てると1分くらいで登録画面が出て再生が止まる・・・。
フルスクリーンも解除されてしまうし、なんか嫌。煩わしい。

もちろん登録すれば出ないんでしょうけどそこまでじゃない。

なんとかしたい
できるなら。

スポンサーリンク

解決法①:uBlock Originのカスタムフィルタで回避

環境は MacOS Sonoma, Firefox 147

まずは解決方法から。
一つ目、uBlock Originのカスタムフィルタを使う。

uBlock Origin はWebブラウザ上で動作する「コンテンツ・広告ブロック拡張機能」です。
その機能に JavaScriptインジェクション機能(scriptlet) と呼ばれるものがあります。

これを使うことで、
自動停止と登録画面のポップアップの無効化
を試みます。

設定方法

uBlock Originの「マイフィルター」に、次のルールを追加します。

bilibili.com##+js(aost, player.pause, /video\/video\.[0-9a-f]+\.js[\s\S]+?core\.[0-9a-f]+\.js[\s\S]+?emit/)

保存したら、ページを再読み込みしてみてください。

再生後1分くらいで出てくる登録画面はもう出なくなっているはず。

フルスクリーンも解除されず、いい感じかなと。

注意点としては、

  • Bilibili側の仕様変更で効かなくなる可能性がある
  • 環境によっては動かないかも?(mac,Firefoxで確認したのみ)

ということ。

あくまでも自分用に書いているので、うまく動かない場合は環境に合わせて工夫してみてください。

uBlock Origin の aost で中断

ブラウザの開発ツールで自動停止時のスタックトレースを確認すると、
video.xxxxx(ハッシュ).js が入っているのがわかりました。これは手動で一時停止した際にはなかったものです。

uBlock Originには特定のスタックトレース条件に一致した場合のみ処理を中断する「abort-on-stack-trace(aost)」というscriptletがあります。

これを使ってスタック内に

  • video/video.xxxxxx.js
  • core.xxxxx.js
  • emitを含む

という条件に一致したときのみ player.pause を中断させます。

実は loginVersionEveryPlayInternval という文字列も出てくるので、

bilibili.com##+js(aost, player.pause, /loginVersionEveryPlayInternval/)

でも効くのですが、この名前が変更されたら一発で動かなくなるので構造的に判断するようにしてみました。

一応これで通常の一時停止はそのままに、自動停止だけを無効化することができました。

現在の時点(2026.03.01)では特に不具合もなく動作しています。

スポンサーリンク

解決法②:TamperMonkeyのスクリプトで回避

Tampermonkey は、ユーザースクリプトを管理・実行できるブラウザの拡張機能です。

こちらはもっとシンプルと言いますか、
手動でやることを自動化した感じ。

登録画面が出たらそれを閉じて、一時停止している動画の再生ボタンを押す。自動的に。
シンプル。

新規スクリプトを追加、から以下をコピペ。


// ==UserScript==
// @name         Bilibili ポップアップ停止&自動再生継続
// @namespace    http://tampermonkey.net/
// @version      1.2
// @description  動画再生中の登録勧誘ポップアップを削除し、停止した動画を再開させます。
// @author       me
// @match        *://www.bilibili.com/video/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    const observer = new MutationObserver(() => {
        //console.log("------------------------------------observe");
        const element = document.querySelector('.bili-mini-mask');
        if (element) {
            // ポップアップを削除
            element.remove();

            // 動画が停止している場合は再生を再開
            const video = document.querySelector('video');
            if (video && video.paused) {
                video.play().catch(e => console.log("再生再開に失敗しました:", e));
            }
        };

    });

    // ページの要素変化を監視開始
    observer.observe(document.body, {
        childList: true,
        subtree: false
    });
})();

こちらも注意点としては、Bilibili側の仕様変更で効かなくなる可能性があるということ。
やってることはシンプルなのでクラス名の変更などで動かなくなったら適宜修正してください。

ただこちらはフルスクリーン解除を回避していません。

あと再生が止まることはありませんが、ちょっと引っかかるような感じはあるかもしれない。
あまり気にならないけど。

まとめ

Bilibiliの登録画面(ログイン誘導)表示による自動停止をこんな感じで回避してみました。

あくまでも個人用に書いたものを備忘録として記事化しています。
自己責任にてご活用ください。

同じように困っている方の参考になれば幸いです。

では。

コメント

タイトルとURLをコピーしました