11/08/2015

YouTube「エラーが発生しました。しばらくしてからもう一度お試しください」の解決法

[[[[[[[解決した方法]]]]]]]

ブラウザーのUser AgentをGoogle Botに変える。
例:
Mozilla/5.0 (compatible; Googlebot/4.1;) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.75 Safari/537.1

又は

Mozilla/5.0 (compatible; Googlebot/4.1;)

アドオンを使用する場合は、
user-agent-switcher
を使用します。




Descriptionの部分は設定名称なので、何でもOK。

[[[[[[[説明]]]]]]]

何となく記述の順番が上記のように、イキナリ解決法を提示する、ってのは、日本的では無いかもしれませんが、ここから説明しますね。

Youtubeを再生しようとして、又は、再生していて、

「エラーが発生しました。しばらくしてからもう一度お試しください。」

と出る場合があります。

概ね以下のような感じで。

 
↑必死に読み込もうとされている慎ましい姿

 
↑そして、裏切り!

因みに、このメッセージの通り、暫く待ってリトライしても、ほぼ無駄です。私なんか、1ヶ月も待ちましたがダメでした(←大袈裟ではなく本当です(笑))。もしかしたら、半年くらい待てば再生可能なようになるのかもしれませんが、流石に待てません。

私の場合、Windows XP, Windows 7(32bit)、Linux(32bit)環境でのFireFox(どのバージョンでも)にて、この現象が発生します。で、どうしてこれで行けるのか、って事ですが、Google BotとしてYoutubeにアクセスした場合、分かりやすく言うと、どんな事をしてでもアクセスしてきたクライアントに、動画を見せようと必死になってくれる、という、所謂、表からは分かりませんが、特殊なページを送ってきます。なので、User Agentによって、もしかしたら別個のHTMLを用意したりしているのかもしれません。実際に、プレーヤーのデバック情報を眺めていても、Google Botとしてアクセスした場合の情報量が多いのです。

で、

どうしてこれで行けるのか、って部分までは、残念ながら解析してません。どうして気づいたかと言うと、Google BotのエミュレーションをLinux上で行っていた時、YouTubeの動画内に埋め込まれた字幕まで取得出来ないかの実験をしている時に気づきました。

通常のFireFoxで閲覧した際には再生出来ない動画がありまして、再生できないはずの動画が、同じGeckoエンジンを使用したGoogle Botエミュレーションで取れる、
まてよ?
取れないはずの動画情報が、どうしてボットだと取得出来るのか?
Agent??(゚Д゚;)
じゃあ、Agentをボットに書き換えてアクセスしたら、行けるんじゃね?
行けた(゚Д゚;)


[[[[[[[あとがき]]]]]]]

今回、User Agent Switcherを使用しましたが、特定のホスト(例:youtube.com)を開いた場合のみ、このUser Agentに切り替わるアドオンUAControlという、所謂、特定のホスト、youtube.comを開いた時に自動的に指定しているUser Agentに変更してくれる物もありますので、それぞれ使い分けると良いでしょう。

 
↑UAControlでの設定例。「サイト」 の部分は単なる設定名称ですので、何でもOK。カスタムの部分に

Mozilla/5.0 (compatible; Googlebot/4.1;) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.75 Safari/537.1

を入れましょう。これにより、Youtubeにアクセスした場合のみ、ここで指定したUser Agentに切り替わってくれますので、ラクですわね。

キャプチャー画像とは若干違いますが、GoogleBotだけではボットですので、ブラウザーであるって名称も入れたほうが、動画再生までの時間は短くなります。

以上、参考になれば幸いであります!

なお、ここでの方法で確実に直る保障はありません。と言うのも、ブラウザー、プラグイン(Flashなど)、Javaなどが最新の物で、正しく導入されていて、もう、残す原因が無い、って場合の、何となくの裏技っぽい感じですので、根本的な解決ではなく、あくまでの対症療法である事を、理解ください。