HomeBlogTranscribePlansAPI Keys

youtube-transcript-api ブロック? AWS/GCPでのIPバン修正

クラウドサーバーで実行されているyoutube-transcript-apiからのIpBlockedエラーを表示するPythonトレースバック

スクリプトは数週間ラップトップで完璧に実行されました。その後、デプロイしました―Lambda、EC2ボックス、Cloud Run、Herokuダイノ、関係なく―youtube-transcript-apiへのすべての呼び出しが次のように失敗します:

youtube_transcript_api._errors.IpBlocked:
Could not retrieve a transcript for the video ...
YouTube is blocking requests from your IP.

または同じ壁のブラウザ風バージョン: 「ボットではないことを確認するためにサインインしてください。」コードは何も変わっていません。ライブラリは壊れていません。あなたのIPアドレスが問題です。

本番環境でのみ破損する理由

youtube-transcript-apiはYouTubeプレイヤーが行うのと同じ方法で字幕データを取得することで機能します―APIキーなし、YouTubeへのHTTPリクエストだけです。YouTubeは住宅用接続からこれを許容しています。これが地元の開発は問題ないと感じる理由です。しかし、AWS、GCP、Azure、およびHerokuのIP範囲は公開情報であり、YouTubeはそれらのASNからのトラフィックに一括で異議を唱えます。1日に3つのリクエストを行っているという事実は関係ありません。ブロックはネットワーク近所にあり、あなたの行動ではありません。インスタンスを再起動し、新しい弾性IPを取得し、関数を再デプロイします―別のアドレスから同じブロックされたプールに到着します。

これは内部化する価値があります。最初の本能(再試行を追加、遅延を追加、ユーザーエージェントを回転)は役に立たないからです。YouTubeがキーになっているシグナルはパケットがどこから来るかです。

修正1: 独自の住宅用プロキシを実行する

ライブラリはこれを直接サポートしています―WebshareProxyConfigとどのプロバイダー用でもGenericProxyConfigを出荷しています。住宅用IPを通じてリクエストをルーティングし、ブロックはほぼ停止します。それは本当に機能しています。それはYouTubeを大規模でスクレイピングする人が生き残る方法です。

正直なコスト計算は次のとおりです:

他のスクレイピング用にプロキシインフラストラクチャを既に実行している場合、これを付け加えるのは合理的です。文字起こしが唯一必要なものの場合、1つの関数呼び出しをサポートするためにプロキシフリートを操作するサインアップです。

修正2: この戦いに既に取り組んでいるエンドポイントを呼び出す

youtube2text.orgはサーバー側で住宅用プロキシローテーションを行うため、クラウド関数は通常のAPIに対して1つの退屈なHTTPSリクエストを行います。移行はほぼ検索と置換です。

前:

from youtube_transcript_api import YouTubeTranscriptApi

transcript = YouTubeTranscriptApi().fetch(video_id)
text = " ".join(snippet.text for snippet in transcript)

後:

import requests

r = requests.get(
    "https://youtube2text.org/api/transcribe",
    params={"url": video_id},          # full URLs work too
    headers={"x-api-key": "yt_YOUR_KEY"},
)
text = r.json()["result"]["content"]

アカウントを作成する前に試すには、共有デモキーを取得します―curl -s https://youtube2text.org/api/demo-key―月5ビデオあたりIPを許可します。エラーはコード付きの構造化JSONで返されます: TRANSCRIPT_UNAVAILABLE(404)はビデオが本当に字幕を持たないことを意味します―ブロックではなく、プロキシは修正しません。RATE_LIMIT_EXCEEDED(429)には再試行ヒントが含まれています。Python統合ガイドにはより完全なPythonチュートリアルがあります。

どの修正があなたに適しているか

あなた自身のキー(共有デモクォータとは別)はyoutube2text.org/app/keysでGoogleサインインを取ります―無料ティアは月5ビデオ、有料プランは月$5.99から50ビデオから$19.99無制限まで。無料ティアの電話番号またはカードなし。