ようこそお客さん

worstman.net/Blog


次の記事   前の記事

2008/02/02(土) 歌詞検索サイトの Flash から歌詞本文 URL をぶっこ抜く具体的な方法

Windows::Tips 最低人間 はてなブックマーク数
 なんか「ぶっこ抜く」って使うとネトラン厨とかナウなヤングにバカウケってそそのかされたので使ってみました。


 それはさておき、先日の歌詞本文 URL の件、どうやって解析したの?というご質問が何人かから寄せられたので具体的な方法を書いておこうかと。解析ってレベルじゃないので期待されても困ります。


 材料:

 Yahoo!ミュージック 歌詞
 今回は KARSRAC でも使っているYahoo!ミュージックを使ってみましょう。

 HugFlash
 Flash を解析して中身を取り出すソフト。最近では FLV から AVI にしたりということに多く使われているようですね。

 Firebug
 HTML 解析用です。なくてもいいです。ソース読めればいいです。


 さて、材料の中からこの曲を選択。とりあえずトップにあったのでクリックしただけで他意は無いです。
http://music.yahoo.co.jp/shop/p/53/265862/Y060337
 さっそく HTML ソースを見てみます。当然のように Flash は以下のように記述されています。
<object id="lyrics" width="500" height="400" align="middle" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000">
<param value="sameDomain" name="allowScriptAccess"/>
<param value="http://music.yimg.jp/lyrics/lyrics.swf?id=Y060337&aid=265862" name="movie"/>
<param value="high" name="quality"/>
<param value="#ffffff" name="bgcolor"/>
<embed width="500" height="400" align="middle" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" allowscriptaccess="sameDomain" name="lyrics" bgcolor="#ffffff" quality="high" src="http://music.yimg.jp/lyrics/lyrics.swf?id=Y060337&aid=265862"/>
</object>
 これを見ると、Flash ファイルはソース元として
http://music.yimg.jp/lyrics/lyrics.swf?id=Y060337&aid=265862
 を呼んでいることが分かります。ここまではブラウザ上でソース開けば誰にでもわかることなので説明するまでもないですね。

 しかし
http://music.yimg.jp/lyrics/lyrics.swf?id=Y060337&aid=265862
 も Flash ファイルが表示されて実際の歌詞本文までは到達していません。そこで
http://music.yimg.jp/lyrics/lyrics.swf
 をダウンロードしてローカルに保存します。ここで Hugflash 登場。自動解析してもらいます。


 HugFlash は窓の杜などでも「画像・音声・動画が自動的に抽出されるソフト」として扱われていますが(いや実際そうなんだけど)、おいらがこのソフトを使う主目的は「ActionScript の解析」機能です。

 さきほどの swf ファイルを HugFlash に食わせると、「lyrics.txt」というログファイルが出力されます。そのログファイルの一部がこちら。
no.= 000, name: _root
no.= 001, name: cTA
no.= 002, name: html
no.= 003, name: label
no.= 004, name: selectable
no.= 005, name: borderStyle
no.= 006, name: none
no.= 007, name: editable
no.= 008, name: tabChildren
no.= 009, name: u
no.= 010, name: http://music.yimg.jp/bin/sendlyricstext?ArtistId=
no.= 011, name: aid
no.= 012, name: &Id=
no.= 013, name: id
no.= 014, name: LYRCS
no.= 015, name: _root.cTA
 Flash が外部からデータを読み込んでいる以上、そのデータの元となるアドレスやファイル名がほぼ間違いなく隠されています。要はそれを根気よく探し出してやればいいというだけ簡単なお仕事です。

 先ほどの URL
http://music.yimg.jp/lyrics/lyrics.swf?id=Y060337&aid=265862
 と
no.= 010, name: http://music.yimg.jp/bin/sendlyricstext?ArtistId=
no.= 011, name: aid
no.= 012, name: &Id=
no.= 013, name: id
 を見比べてみましょう。「aid」は「ArtistId」に、「id」は「Id」に内部で変換されていることが予想できます。

 その結果
http://music.yimg.jp/bin/sendlyricstext?ArtistId=265862&Id=Y060337
 という歌詞本文の URL を検出することが出来る、というわけです。


 解析というレベルではありませんね。こうやって披露するのがちょっと恥ずかしいくらいのレベルです。

 でも要望があったので恥を晒してみました。

 よろしければご活用下さい。


#  非公開コメント   

  • TB-URL  http://worstman.net/blog/0117/tb/

次の記事   前の記事