世界を動かす技術を、日本語で。

YouTubeの新しいアンチ広告ブロック対策

概要

YouTubeは最近、広告ブロッカー対策として「フェイクバッファリング」を含む新たなA/Bテストを実施中。 uBlock OriginやBrave向けに一部回避フィルターが既にデフォルトリストに追加済み。 フェイクバッファリングは広告時間の80%分だけ動画開始時に遅延を発生させる仕組み。 「isInlinePlaybackNoAd」プロパティを利用することで広告・バッファリング回避が可能。 YouTube側のスクリプトロック対策やフィルターの応用方法も解説。

YouTubeのフェイクバッファリング対策の現状

  • YouTube は2025年6月時点、 広告ブロッカー利用者 に対して 新たな対策 をA/Bテスト中
  • 試験的なアカウントでは 「フェイクバッファリング」 現象が発生
  • フェイクバッファリングは 動画開始時のみ 発生、中盤以降には影響なし
  • バッファリング時間は 本来表示される広告の80% に相当
  • 例:15秒広告なら 12秒バッファリング、6秒+15秒広告なら 16.8秒バッファリング
  • 広告ブロック利用者 でも、結果的に 広告を視聴するより短縮 される場合が多い

技術的背景(InnerTubeとGVS)

  • InnerTube :YouTube公式の内部API、動画データやストリーム情報の取得に利用
  • /youtubei/v1/player エンドポイント:動画再生時のデータ取得に使用
  • GVS(Google Video Services) :YouTubeやGoogle Drive等の動画ストリーム配信サービス
    • GVSのURLは署名付きで有効期限あり(通常6時間)
    • 一部ISPは Google Global Cache を設置し、ネットワーク外に出ず動画配信が可能
  • SABR(Server ABR) :YouTube独自のバイナリプロトコル、バッファリング回避性能向上
    • SABRはクライアントに「一定時間待機(backoff)」を指示可能

フェイクバッファリングの正体

  • InnerTube がGVSストリームに「backoff」を設定
    • 最初の再生リクエスト時、広告の80%分の待機時間を指示
  • サーバーサイド広告挿入 とは異なり、広告と本編は別ストリーム
  • 「Experiencing interruptions」ダイアログは、長時間のbackoffが原因
  • A/Bテスト対象なら 広告ブロック有無に関係なくbackoff発生
    • 広告未ブロック時は、広告再生中に本編プリロードされるため気づきにくい
  • 「CPU使用率がスパイクしPCが壊れる」との噂は 事実無根

広告・バッファリング完全回避方法

  • isInlinePlaybackNoAd プロパティを true に設定することで 広告表示・backoff回避 が可能
  • フィルタールール例(uBlock Origin/Brave対応):
    • www.youtube.com##+js(trusted-replace-outbound-text, JSON.stringify, 'contentPlaybackContext":{', 'contentPlaybackContext":{"isInlinePlaybackNoAd":true,', condition, 'contentPlaybackContext')
  • このプロパティは Protocol Buffers定義 から抽出可能
    • req2proto 等のツールでAPI定義を解析

制限事項と注意点

  • この方法は ウォームナビゲーション (SPA内移動時)のみ有効
  • コールドロード (直URLアクセス時)は ytInitialPlayerResponse が直接埋め込まれ、プロパティの挿入が不可
    • 無理やり初期データ削除で対応可能だが
      • ライブ配信が壊れる
      • プレイヤーが一瞬点滅
      • ページ読み込みが遅くなる
      • 推奨されない

スクリプトロック(ロッカースクリプト)対策

  • YouTubeは Object.definePropertyグローバルオブジェクトのロック をA/Bテスト中

    • 例:JSON.stringifyfetch等を上書き不可に
  • uBlock Origin のスクリプトレットが JSON.stringify をフックできない場合が発生

  • Firefox はHTMLフィルターでロッカースクリプト自体を除去可能

    • Chromium系 はAPI未対応で不可
  • 現状の回避策: Object.assign のフックに切り替え

    • uBO用フィルター例(やや複雑):

      (() => {
        const e = {
          apply: (e, n, arguments) => {
            let t = Reflect.apply(e, n, arguments);
            return 3 === arguments.length && t?.body && "string" == typeof t.body && !t.body.includes(`"isInlinePlaybackNoAd":true`) && (t.body = t.body.replace(`"contentPlaybackContext":{`, `"contentPlaybackContext":{"isInlinePlaybackNoAd":true,`)), t
          }
        };
        window.Object.assign = new Proxy(window.Object.assign, e)
      })();
      
  • uAssetsメンテナ からの協力に感謝

参考リソース

  • GVS再生URLYouTube内部仕様 の詳細解説ブログ
  • Discord での質問受付:@moreloops

まとめ

  • YouTube は広告ブロッカー対策を強化中だが、 uBlock Origin/Brave の最新フィルターで 大部分回避可能
  • isInlinePlaybackNoAd プロパティの活用がカギ
  • スクリプトロック対策API仕様の理解 が今後も重要
  • 技術的・法的なリスクやYouTube規約違反の可能性には 各自注意

Hackerたちの意見

なんで広告を直接動画ストリームに入れないのか、ちょっと驚きだよね。そうすれば、すぐに問題が解決すると思うんだけど(個人的には広告はあんまり見たくないけど)。再生速度に合わせて制限をかければ、ストリームを簡単に事前ダウンロードするのも防げるし。今はHLS/DASHを使ってるから、再エンコードせずにストリームの真ん中に違うコンテンツを簡単に挿入できるんだよね。

これについてはずっと疑問に思ってた。何か難しい理由があるみたいだけど、全然想像もつかないよね。そうじゃなきゃ、やってるはずだよね?

そういうやり方をしてるポッドキャストもあるよね。時々、話の途中で広告が入ることもあるし。The Athleticのサブスクリプションを払ってるんだけど、彼らはアプリで広告なしのポッドキャストを提供してたんだ。先月、Acastと独占契約を結んで、今は広告なしでポッドキャストを聴くことができなくなっちゃった。

Twitchはどうやってるんだろう?彼らはすごく攻撃的で、広告を表示しないうまく動作するサードパーティのクライアントを使っても、時々「コマーシャルブレイク」の画面が出てきて、コンテンツも広告も流れない、「ロビーに行こう」っていう画面だけが表示されることがあるんだよね。

タイムスタンプに基づいたクラウドソーシングの広告ブロックが存在するよ(SponsorBlock、Tubular)。もうすぐ、リアルタイムでデバイス上のコンテンツに応じたAI広告ブロックが実現するだろうね。彼らは絶対に勝てないよ。

あんまり急に煮えたぎらせたくないんだろうね。最終的には、YouTubeが広告をストリームに直接埋め込むようになるだろうね。投稿にも書いてあるけど、「これはサーバーサイドの広告挿入じゃないから、広告とコンテンツのストリームはまだ別々だよ(YouTubeはサーバーサイドの広告挿入実験をしてるけど、それはフェイクバッファリングとは別の話)」って。

これはコストの問題だと思う。HLSはハードウェアレベルまでめちゃくちゃ最適化されてるから、ターゲティングのために計算を追加するとコストが爆発的に増えちゃうんだよね。もうあまり詳しくはないけど、Netflixがストリーミング用のエッジサーバーに施したすごい最適化についての素晴らしい記事がいくつかあるよ。

クライアント上で広告をスパイシングするのは、スパイシングするのと同じくらい簡単だよ。検出できるならね(スポンサー・ブロックみたいなクラウドソースのデータベースを使えばできる)。

現在、YouTubeはサーバーサイド挿入のA/Bテストを行っているらしいけど、私はSSAI広告を見てないから、詳しくはわからないんだ。

彼らはそれに取り組んでいるよ。WebのYouTubeプレーヤーは、もはやサーバーから別々の動画と音声のストリームを取得しなくなった。事前にバンドルされたものをリクエストして、サーバー側でミックスされた単一のストリームを受け取るようになったんだ。

最近、バッファの読み込み時間が長くなってきてるけど、皮肉なことにあんまり気にしてないんだ。広告のイライラは、時間がかかることだけじゃなくて、音声が流れてるのに、自分がクリックした動画じゃない映像が流れることなんだよね。実際の広告が流れたら、もう信じられないくらいイライラするけど。12秒のバッファがあると、遅い読み込み時間には十分耐性がついてるから、ついメールをチェックしたり、ちょっと考え事をしたりするんだ。特に毎回動画でそうなるとね。5本に1本くらいだったら気づくし、イラっとするけど、毎回だとそれが体験の一部になって、脳が自動的に切り替えちゃうんだよね。

そうそう、ポップアップで「再生が遅い理由を知ってください」って出る初期の遅延があるんだよね。いらないよ、もう分かってるし、そんなに悪くないから。

YouTubeがバッファリングするのは気にしないよ。広告をブロックするのは、気が散るのとコンテキストスイッチが関係してるから。もうすでに認知負荷が高いのに、さらにゴミをフィルタリングしなきゃいけないのは本当にイライラする。

月13ドル払えばいいんじゃない? そうすれば、すでに高い認知負荷をさらに増やす心配がなくなるし。あなたの高い認知負荷があれば、月に13ドル以上稼げるんじゃない?

YouTubeを見てるときに、どうしてそんなに高い認知負荷がかかるの?心臓移植の手術トレーニング動画を見ながら手術してるの?

家族全員のために広告を取り除くためにYouTubeプレミアムにお金を払うのは全然構わないよ。コンテンツクリエイターが自分の作品を収益化できるようにするためにもね。

そんなの無理だわ。うちではNewpipe使ってるから、何も払ってないよ。

あなたの投稿が皮肉なのかどうか、判断するのが難しいな。もしそうじゃないなら、誰かがこんなに楽しそうに自発的に仮想土地の所有者に余分なお金を払ってることに驚いてるよ。

この戦いを戦ってくれてありがとう、きっと疲れるよね。Googleが広告を強制するほど、彼らがホストしている不適切で詐欺的な広告をもっと注意深く見るべきだと思う。もし彼らが広告ブロックを無視して、私や家族を危険な広告にさらすことを避けられないなら、彼らが出す広告についてもっと厳しく監視される必要があるよ。

Googleが広告を強制するほど… YouTubeに行かなければいいだけじゃない?

「この戦いに立ち向かうための大切な仕事をありがとう。本当に疲れるだろうね。確かに、もし『薄い広告ブロックライターライン』のフラグがあったら、もう私のバンパーに貼ってあるよ。あなたのサービスに感謝します、敬意を表します。」

コンテンツを作ったりプラットフォームを構築したりするために働いた人たちには、報酬を受ける権利があるよね? 本や映画、テレビ番組、ニュースなど、すべて消費者にお金や広告を見るための時間を費やさせる形で配信されてる。広告を見たくないなら、YouTubeにサブスクリプション料を払えばいいんじゃない?

最近までプレミアムにお金を払うのを拒んでたけど(意地で)、彼女が文句を言ったから仕方なく払ったんだ。その広告がどれだけ詐欺っぽいかに驚いてるよ。かなり大きなクラスの広告が、かなりでたらめな医療主張をしていて、誰かが金を稼ぐためじゃなくて、脆弱な人々に心理戦を仕掛けるためだと半分は確信してる。別のクラスの広告は「アメリカ政府は崩壊するから自由バッテリーを買うべきだ」って言ってて、バッテリー広告のように見せかけてるけど、どれだけの脆弱な人がそれを一日16回聞いて、無意識にその一部を受け入れちゃうんだろう? いずれにせよ、すべてが操作的な泥沼で、Googleが大切にしている資産がユーザーにこんなものを投げつけるなんて奇妙だよ。YouTubeを運営している役員たちは、自分たちの広告を見ないからだと思う。

彼らがホストしている、めちゃくちゃ不適切で詐欺っぽい広告をよく見てみるべきだよね。これが本当にイライラする。テレビの放送でも、普通は15秒、30秒、60秒の広告があって、たまに45秒や90秒のもあるけど、広告の枠が決まってるから、最大で3分とかだよね。YouTubeの広告は詐欺っぽくて、何かをバックグラウンドで流しながら他のことに集中してると、5秒スキップできる時間を過ぎて、30分以上のインフォマーシャルが流れたりするから、見てたものの流れが完全に切れちゃうんだよね。それって犯罪的だと思う。長いコンテンツが他の人のコンテンツを邪魔するために使われるなんて、許されるのが不思議だよ。あの広告のインプレッションに対して、すごい金額を払ってるに違いない。

「バーチャルハーレム」って呼ばれるYouTubeが私にインストールさせようとしてるものを、詐欺的だとか不適切だとか言うなんて、ショックで呆れてる。何度も報告したけど、まだプラットフォームに残ってるから、Google様は彼らの聖性について私が知らないことを知ってるに違いない。/s

ごめんね、でもYouTubeはサーバーを維持しないといけないし、コンテンツクリエイターにもお金を払わないといけないんだよね。だから広告が必要なんだ。もし広告が嫌なら、YouTube Premiumに払えば広告なしで楽しめるよ。ただ、もしあなたの国で利用できないなら、広告ブロックも合理的な選択だと思う。

それか、プレミアムに払えばいいじゃん… 誰もあなたに強制してるわけじゃないし。

それとも、明らかに理解している条件を守って、サービスを使わないっていう選択肢もあるよね。でも、強制について書く方が楽しいけどね。

これはObject.definePropertyを使っていくつかのグローバルオブジェクトをロックし、書き換え不可能に設定することで、後のコードがProxyを使ってそれらを上書きするのを防いでいる。だから、uBlock Originはこのロッカーのスクリプトが実行される前に動作できる場合にのみ、JSON.stringifyをプロキシできる。これはブラウザのバグか、あるいは仕様の問題のようだ。ページのコンテンツやスクリプトがブラウザ拡張機能の動作を制限することは絶対にあってはならない。

これはブラウザのバグみたいだけど、実はChromeの機能なんだ!2年前にChromeがアップデートをして、拡張機能の初期化を遅らせることで、最初のページの読み込み時間を短縮したんだ。最後に閉じたページがuBoの前に読み込まれるから、フィルターやブロックをすり抜けられるし、uBoが読み込まれているのも検出できちゃう。

最近、YouTubeをまったく見なくなったけど、意外と寂しくないんだよね。以前は毎日何時間もYouTubeを見てたのに、主に質の高い教育的・科学的なコンテンツを。結局、人生に必要ないものがどれだけあるかに驚くよ。そして副作用として、広告がなくなった。誰かがたまにYouTubeの動画を送ってくれたら見るけど、それ以外はプラットフォームには関わらない。みんなもYouTubeのような受動的なエンターテインメントを減らして、もっとクリエイティブなことやマインドフルな活動に時間を使うことをおすすめするよ。

世界の大部分の人々がこれらのプラットフォームに依存してる。タバコの2.0だね。

全然驚かないよ。私たちは、自分たちのブランドのスラップが教育的だから自分たちが優れていると勘違いしてるけど、結局それもスラップなんだよね。

それなら、払っちゃえばいいんじゃない?俺は家族全員をプランに入れてるから、誰も広告見ないし、お得だよ。確かに、バイクのプロジェクトは動画なしでも終わらせられるかもしれないけど、なんでそんなことするの?

最高の科学番組はPBSやNebulaにあるってわかったよ。

余った時間で何するの?元に戻らないようにどうやって気をつけてるの?

YouTubeアカウントを削除してPatreonに切り替えたよ。Patreonの人たちの新しい動画は通知が来るからYouTubeで見れるけど、もっと意図的で質の高いコンテンツになった。

なぜ私たちは広告をブロックすることを正当化するんだろう? 消費しているコンテンツが無料で作られていないことを知っているのに、たとえそのコンテンツが無料でも、保存や配信にはお金がかかるのに。広告が煩わしいから広告ブロッカーを使う理由をよく考えるけど、私たちはなぜこれを無料で得る権利があると感じるんだろう? これは道徳的な判断ではなく、本当にその理由を理解したいんだ。

いくつかのウェブサイトは、広告ブロッカーを使ってるとコンテンツにアクセスできなくなるんだよね。それは仕方ないと思うし、他のところに目を向けるよ。広告ブロッカーを使ってることは隠さないし、簡単に特定できるしね。

なんで私たちはこれを無料で手に入れる権利があると思うの?ユーザーに対して敵対的で、競争を妨げるようなGoogleの行動を見てると、まるで兵士が敵を撃つ権利を持ってる理由を聞いてるみたいだ。お金を払い続けて、彼らが売る広告を見続けて、結局ウェブにアクセスする唯一の方法は、ユーザーに対してロックされたブラウザを使うことになるだろうし、すべてが監視されることになる(もうほぼそうなってるけどね - Googleは、オプトアウトがあっても、ユーザーをウェブや現実世界で追いかける権利がある理由を自問自答しないし、Googleと製造業者の間の秘密の反競争契約で、他のOSのサポートが謎に消えていくのを見つけるだろう)。これが人々が使う理由ではないことは分かってるけど、結果はそうなると思う。広告に関しては、ブロックするのが常に難しく、ほとんど不可能だったし、実際にブロックする人は少なかった。高速道路の横にある看板をブロックできないように、訪れているウェブページの一部として表示されるjpegをブロックすることもできないんだ。プログラム的にネイティブコンテンツと区別がつかないからね。実際に人々がブロックしているのは広告ではなく、半分広告、半分監視の存在で、歴史的な偶然で「広告」と呼ばれているものなんだ。

Google Adsenseを使い始めた頃は、1ページあたり3つの広告ルールがあったんだ。それを超えると禁止されることもあった。今は簡単に10個、15個、もっと多くの広告スペースがあるページが見つかるよ… 各段落の後、サイドバー、フルページの「ポップアップ」とかね。YouTubeでは、動画のバナーから数秒の動画、動画の前に複数の広告、さらには比較的短い動画(10分未満)でも複数の広告の中断があるようになった。さらに、コンテンツクリエイターが追加するスポンサーセクションや、プレミアムを払ってもYouTubeが動画の下に追加する広告(店舗、チケットなど)もある。Google検索ページは、以前は上部に1つか2つの広告があって、検索結果とは異なる背景色だった。今は、スポンサーコンテンツが画面を埋め尽くして、オーガニックコンテンツを見るためにスクロールしなきゃいけないこともある。すべてを無料でアクセスする権利があるとは思わないけど、やりすぎだよね… だから、すべてのデバイスで広告ブロッカーを使ってる。

どっちにしても道徳なんてないよ。Googleは俺のことなんて全然気にしてないし、そこにいる誰とも個人的なつながりはない。利益が増えるなら、法律が許す限り俺をひどく扱うだろうし。それと同じように、俺も彼らのサービスの悪い部分を取り除くためにできるだけのことをするよ。もし、知ってる人が作ったサービスを使ってて、その人と話せるようなシステムに住んでたら、もっと交換に対する義務があるかもしれないけど、この無機質な環境ではそんな義務は感じないな。

これは俺のGETリクエストだから、好きにしていいんだ。Googleが広告を強制したいなら、動画ストリームに入れればいい。そうじゃないなら、両方のいいとこ取りをしようとしてるってことだね。

あなたの質問の仕方は、人々の考え方を反映してないよ。彼らはそれをやれるし、やりたいと思ってるから、やらない理由が必要なんだ。だから、誰かが広告を見ることに倫理的に強制される理由は何かってことが問題だね。俺には不可能に思えるけど、独特な視点を持ってる誰かが自分のことについて話せるかもしれない。ダブルネガティブな答えを試みると、倫理的に強制されることはできないし、広告は操作的で、覗き見的で、人間の注意力の限界を利用しようとするから、広告を見ることやトラッカーをダウンロードすることが倫理的に必須になることはあり得ないんだ。

OPに付け加えたいんだけど、YouTubeのクリエイターは収益の55%をもらってるんだよね。Googleは無限の金と悪を持ってるのは分かるけど、クリエイターに行く大部分の費用を払わずに済むのは便利だよね… それと、善良なコメント主さん、あなたがパトレオンのサポーターになる1.5%の一人だってことは知ってるよ。じゃあ、他の人たちに聞いてみてよ、なんで無料で食べられるのか(レストランがクソだって文句言いながら)。

40歳以上で知ってるAIがChatGPTだけ? 広告が視聴される理由を正当化する責任は広告側にあるよ。だって、広告自体は視聴者に何の価値も提供してないから。特にYouTubeの広告は詐欺の温床だよ。サイエントロジーみたいな広告は見たくない。

Spotify Premiumを使ってた頃、シャッフルが変だったり、オプトアウトできない「スマート」シャッフルがUIに追加されたりしてた。プレイリストに合わない曲を無理に入れようとするんだよね。さっさと出て行け、音楽を聴かせてくれ。今はSpotify Freemiumを使ってるけど、「次の30分間は広告なしで楽しめます」って特別な広告が流れるんだ。2分後には2〜3本の広告が連続で流れる。もう十分だ。Jellyfinのユーザーとして満足してる。音楽は徐々に買い揃えていくつもり。

広告は、サービスがユーザーやその基盤となるエコシステムをどれだけ大切にしているかの試金石だよね。プレミアムケーブルが初めて放送テレビに取って代わったときは、サブスクリプション料金の代わりに広告がなかった。でも今は、サブスクリプションを払うと広告が出るようになった。ストリーミングサービスも同じで、広告付きのサブスクリプションに切り替わった。YouTubeを見てみると、初期の頃は広告がほとんどなかったのに、今では中間広告やエンドロール広告、さらには連続で複数の広告が流れるようになった。最近ではYouTuberが自分で広告を読み上げることも増えて、動画に組み込まれているよね。今は成長重視の時代だから、企業や個人は数字を上げるためにどんどん取り入れていく。彼らが取っているのは、私にとってとても貴重な資源である「時間」だよ。なんでAdblockを使うかって?それは、線を引かないとこのマーケティング成長エンジンがすべてを消費しちゃうから。消費者の反発がなければ、この注意を引き出すエンジンは、デジタル消費のすべての瞬間をマネタイズするまで拡大し続けるよ。もうインターネットの多くを壊しちゃってるからね。

Firefoxでは簡単に解決できるよ。ページが解析される前に、HTMLフィルターを使ってソースHTMLからスクリプトタグを除外できるんだ。でも、それはChromiumがサポートしてない拡張APIに依存してるから、びっくりだよ。

ChromeがuBlock Originを切り捨てたら(「WebリクエストをブロックしないManifest V3」の一環として)、別のブラウザに移るよ。もう十分だ。

YouTubeプレミアムにお金を払ってるよ。ここにいるみんなもできるでしょ。これらは無料じゃないから、広告に耐えるかプレミアムに払うか、どっちかだよ。