PyTubeによるYouTubeダウンロード時の403 Forbiddenエラー
問題の説明
Python 3.12環境でPyTube 15.0.0を使用し、YouTubeからオーディオストリームをダウンロードしていた際、以下のエラーが突然発生するようになりました:
http error 403 Forbidden
この現象が確認されるようになったのは2024年11月後半頃からで、YouTube側で仕様変更が行われたことが原因と考えられます。以下の対策を試しても効果がありませんでした:
innertube.py
内のユーザーエージェントをWEB
またはANDROID
に変更- PyTubeの完全アンインストールと再インストール
効果的な解決策
解決策1: pytubefixパッケージの使用 (推奨)
PyTubeの改良フォーク版であるpytubefix
に切り替える方法です。この方法では既存コードを最小限の変更で継続できます。
pip uninstall pytube
pip install pytubefix
コード変更例(import文のみ変更):
from pytubefix import YouTube # pytube から pytubefix に変更
# 既存のコードをそのまま使用
yt = YouTube('https://www.youtube.com/watch?v=XXXXXXXXXXX')
stream = yt.streams.get_audio_only()
stream.download()
メリット
- 既存のPyTubeコードと互換性が高い
- シンプルな移行(import文の変更のみ)
- コミュニティによる継続的なメンテナンス
解決策2: yt-dlpを使用した方法
yt-dlp
はYouTubeダウンロードにおいてより堅牢な代替ライブラリです。追加機能が必要な場合やより詳細な制御を行いたい場合に適しています。
pip install yt_dlp
基本実装コード:
from yt_dlp import YoutubeDL
URLS = ['https://www.youtube.com/watch?v=XXXXXXXXXXX']
options = {
'format': 'bestaudio/best',
'outtmpl': '%(title)s.%(ext)s',
'postprocessors': [{
'key': 'FFmpegExtractAudio',
'preferredcodec': 'mp3',
'preferredquality': '192',
}]
}
with YoutubeDL(options) as ydl:
ydl.download(URLS)
yt-dlp使用時の注意点
Bot判定される場合、以下の認証エラーが発生することがあります:
ERROR: [youtube] XXXXXXXXXXX: Sign in to confirm you’re not a bot.
認証エラー回避方法
方法1: cookies.txtファイルを使用
- Chrome拡張「Get Cookies.txt」をインストール
- YouTubeにログインした状態で拡張機能を使用しcookies.txtをエクスポート
- コードにcookieパスを指定
options = {
'outtmpl': '%(title)s.%(ext)s',
'cookiefile': '/path/to/cookies.txt' # エクスポートしたファイルを指定
}
方法2: ブラウザから直接クッキーを取得
options = {
'outtmpl': '%(title)s.%(ext)s',
'cookiesfrombrowser': ('chrome',) # 使用するブラウザを指定
}
各解決策の比較
方法 | インストール | 移行の容易さ | 追加機能 | 認証の必要性 |
---|---|---|---|---|
pytubefix | pip install pytubefix | ⭐⭐⭐⭐⭐ (import変更のみ) | 基本機能に特化 | 通常不要 |
yt-dlp(基本) | pip install yt_dlp | ⭐⭐⭐ (オプション設定が必要) | 豊富なフォーマット対応 | 不要 |
yt-dlp(認証版) | 上記+クッキー設定 | ⭐⭐ (認証プロセス追加) | 高レート制限対応 | ログイン必須 |
まとめ
2024年末のYouTube仕様変更後、PyTubeで403エラーが発生している場合の解決方法は:
- 最も簡単な解決策:
pytubefix
パッケージへの切り替え(既存コードの改修が最小限) - 高度な制御が必要な場合:
yt-dlp
の導入と必要に応じた認証設定
認証エラーが頻発する環境ではcookies.txtを併用することで安定したダウンロードが可能になります。状況に合わせて最適な方法を選択してください。