質問: YouTubeの登録者かどうかWEBサイトで判断したい 私のチャンネルの登録者だけを対象に、 私が所有するWEBサイトでサービスを行いたいのですが、どのような方法がありますでしょうか? 登録者はYouTubeにログインした状態で、当WEBサイトにアクセスさせる事を前提とします。 【試したこと】 (1)YouTubeのチャンネル登録ボタンを当WEBサイトに設置する。 登録者には解除ボタン、未登録者には登録ボタンが表示されるので、cssやjsの変数を解析する ↓ YouTubeのチャンネル登録ボタンはjsですが、結局iframeで描画しているので取得できない (2)PHPやperlで、(1)のiframeのscrをスクレイピングしてhtmlをとってくる ↓ スクレイピングするのはあくまで設置サーバなので、閲覧者の状態には関係なく、 すべて未登録者の扱いとなってしまう。 (3)jsで、(1)のiframeのscrをスクレイピングしてhtmlをとってくる(jquery.xdomainajax.js) ↓ phpやperlとは違い、閲覧者の状態に依存するのかと思いましたが、 結局(2)の結果と同じく、すべて未登録者の扱いとなってしまう。 【試していない】 (4)YouTubeの管理画面で登録者を見ることが出来るので、これをリスト化する。 一覧で登録者全員を見れるわけではないので、一度に取得できないですし、 結局リスト化しても閲覧者がどのIDか判断することができない (5)Youtube APIを使う 動画情報などは取得できますが、閲覧者に対して使えるものはない? (6)YouTubeのチャンネル登録ボタンを当WEBサイトに設置して、 スクショを撮りそれを解析する。 そんなマウスマクロソフトみたいな事がjsなどで出来るのか... という感じで完全にストップしております。 どなたか思いつく方、ぜひご回答をお待ちしております。
回答: 軽く調べた感じだと、Googleが用意しているOAuth認証から、ログインユーザのトークンをいただき、 YouTube Data APIからchannelのlistに問い合わせれば行けそうだという感じの事が書いてありました。 詳細はよくわかりません、頑張って調べてみてください。 これがダメなら方法は無いと思って下さい。 ただし、1の状態でチャンネルボタンの表示まで行くなら、YouTubeはiframeに比較的寛容な作りになっているようです。 JSでiframe内に入って中のHTMLタグの情報を持ち帰る事自体は可能です。 ページ内容がロードされるまで待つような仕組みを導入すれば質問文の要件を叶えられるでしょう。 まぁ、YouTube提供側が「iframeでスクレイピングまがいの事されたくないから禁止」と言った時点で終わるので永久に使える保証はありません。 以下は質問文で試した内容の評価です。 これらのテクニックは邪道、もっと言えばフィッシングサイトを作る技術に非常に近いものがあります。 例えを交えて説明します。 悪意のWebサイト開設者としての視点に立って説明しますが、 自分のサイトに訪れた人間のネット銀行にログインしているかを調査し、口座番号を抜き出したり、自分の口座に振り込みをさせたい。 ...と言っているのに非常に近い内容だと思って下さい。 何も「お前はフィッシングサイト作ってる犯罪者だー!」と糾弾するつもりではありません。 「Webにはフィッシングサイトをガードするセキュリティ絡みのルールが沢山あり、それにより不可能になる技術が沢山あるよ」って事を知っておいて下さい。 例えば1のiframeを使う方法ですが、URLをネットバンクの1文字違いのドメインを取得したりして、bodyタグの直下にiframeを仕込みつつユーザーの操作ログをJSで抜き出すキーロガー的なフィッシングサイト技術が存在します。 それを防止する為に、「そもそも私のWebサイトはiframeで表示出来ませんよ」とhttp通信のヘッダー部分で宣言しておく事で、Chrome等のブラウザが「ここはifraame禁止のサイトなんだ!?じゃあ今いるサイトはフィッシングサイトかも!?」とiframeの表示を取りやめるような仕組みになっています。 2や3はそのユーザがログインしてないからダメに決まってるでしょ! 3は一見行けそうですが、jquery.xdomainajax.jsというサービスの仕組みの話で AjaxでのHTTP問い合わせは先方のWebサーバが許可していなければ不可能 →じゃあYahooサーバで代わりにHTTP問い合わせしてよ →そのYahooサーバはクロスドメインのAjax許可してるからAjax不許可のサイトが取れたわサンキュ ......というカラクリであり、やってる事は2と全く同じです。 ログイン認証は基本的にCookieのキーでやっているので、YouTubeのCookieを抜き出してHTTPリクエストにペタっと貼り付ければ可能ですが、これはXSSスクリプティングの目的と同じです。 ネットバンクのログイン情報を抜き出せば口座番号も振り込みもし放題だぜhehe...と同じ事を言っているので、 当然ガードも固くなり他人のWebサイトのCookie情報を抜き出す事は出来ません。 4はまぁやっても多分無駄、6はそもそもイベント仕込めるんじゃね?1の劣化だからやる意味ない。 ...とまぁ、こんな感じです。