TV-Workers — Cloudflare WorkerベースのIPTVプロキシ

Tool

概要

TV-Workersは、Cloudflare Workers上で動作するIPTV向けプロキシ実装です。主にHLS(.m3u8)プレイリストをプロキシしつつ、プレイリスト内のセグメントURLを自動で書き換えてエッジ経由で配信する仕組みを提供します。セグメント(.ts/.m4s等)をストリーミングする際のRangeやContent-Type等のヘッダーを適切に扱い、User-Agent・Referer・Originなどを動的に付与できます。また、CORSを有効化してブラウザからの直接再生を容易にする点が特徴で、Cloudflare Workersの特性を活かした軽量で低遅延なプロキシを手軽に導入できます。

GitHub

リポジトリの統計情報

  • スター数: 36
  • フォーク数: 4
  • ウォッチャー数: 36
  • コミット数: 11
  • ファイル数: 4
  • メインの言語: JavaScript

主な特徴

  • HLSプレイリスト(.m3u8)の自動URL書き換えとプロキシ配信
  • セグメント(.ts/.m4s等)のストリーミングサポート(バイナリ中継)
  • 動的ヘッダー設定(User-Agent/Referer/Origin)とCORS有効化
  • Cloudflare Workersによる低遅延・スケーラブルなエッジ実行

技術的なポイント

TV-WorkersはCloudflare WorkersのFetch APIを中心に、エッジでのHTTPプロキシ処理を実装しています。主な処理の流れは、クライアントからのリクエストを受け、ターゲットの.m3u8プレイリストやセグメントをfetchで取得、必要に応じてプレイリスト内の相対/絶対URLを再構成して返す、というものです。プレイリストの書き換えは、たとえば複数の相対パスや変則的なURLが混在するHLSソースを、Cloudflare経由のプロキシエンドポイントへリライトするために必須で、JavaScriptで文字列処理を行いつつContent-Typeを正しく維持します。

セグメント配信ではバイナリデータのストリーミングが必要なため、レスポンスボディをそのまま再利用しつつRangeヘッダー対応やContent-Lengthの扱いに注意しています。また、User-AgentやReferer、Originを動的に設定できるため、配信元が特定のヘッダーを要求するケース(地理制限や簡易なボット検出)に対応できます。CORSヘッダー(Access-Control-Allow-Origin: *)を付与する実装により、ブラウザ環境やPWAから直接HLS再生・フェッチが可能になります。

Cloudflare Workersの制約(スクリプトサイズ、CPU時間制限、同時実行数や外部へのリクエスト制限)を踏まえ、TV-Workersは極力軽量なロジックで動作するよう設計されています。キャッシュ戦略についてはWorkersのキャッシュ APIやCloudflareキャッシュ設定を併用することで、頻繁にアクセスされるセグメントやプレイリストの再取得を削減できますが、ライブストリーミングの特性上キャッシュTTLの調整が重要です。また、暗号化(DRM)されたストリームやトークンベースの認証が必要なソースについては、追加の認証処理やセキュリティ対策が必要となる点に注意してください。デプロイはwrangler等で行い、環境変数で動的設定を管理する運用が想定されます。

プロジェクトの構成

主要なファイルとディレクトリ:

  • LICENSE: file
  • README.md: file
  • list.json: file
  • worker.js: file

まとめ

Cloudflare Workersで軽量にHLSプロキシを構築できる実用的なツールです(約50字)。

リポジトリ情報:

READMEの抜粋:

📺 TV Workers

Cloudflare Worker–based IPTV proxy for streaming HLS channels with automatic playlist rewriting and CORS support.

🚀 Features

  • Proxy IPTV HLS streams (.m3u8)
  • Automatic playlist URL rewriting
  • Segment streaming support (.ts, .m4s, etc.)
  • Dynamic headers (User-Agent, Referer, Origin)
  • CORS enabled (Access-Control-Allow-Origin: *)
  • Lightweight and fast (Cloudflare Workers)

📂 Project Structure

worker.js
README.md

🛠 How It Works

The W…