miau's blog?

AMF メモ

先日社内のシステムが Flash ベースのやつに変わりました。これで Java VM の互換性問題からは解消されたわけですが、それまで使ってた新着情報やら社員情報やらのスクリプトを書き換える必要が出てくるわけで。

そんなわけで Perl で Flash のクライアントっぽく振舞うためのメモ。




パケットを拾ったところ、

Content-Type: application/x-amf

みたいになってた。application/x-amf って何?ってことで調べてみると、Flash Remoting っていう通信で技術で使われるフォーマットっぽい。この辺がわかりやすかった。

JavaScript++かも日記: Flash Remoting への道【3】

で、Perl でこれを扱う方法を調べると、ここに行き着いて。

ustreamの録画flvデータのURLを得るスクリプト - unknownplace.org - 2007/10/03

このサンプルがほぼそのまま使えるっぽい。ということで LWP::UserAgent と組み合わせて社内システムから情報取ろうとしたけど、うまくいかない。拾ったパケットと出来上がったリクエスト情報を見比べると、どうもヘッダ(AMF::Perl::Util::Object の Header)がうまくシリアライズされていないみたい。

原因を調べてみると、AMF::Perl::IO::Serializer::writeHeader が未実装って書いてある。

sub writeHeader
{
my ($self, $i)=@_;


# for all header values
# write the header to the output stream
# ignoring header for now
}

今のところ〜とか書いてあるけど、2004 年から更新されてないモジュールだから、あまり期待はできないだろうな。そもそもこのモジュールは AMFPHP を元に実装されているみたいだから、適当にこのソース読んで自分で実装するかな。

PHP でスクレーピングするって手もあるんだけど、PHP が得意なのってせいぜい LWP::Simple 相当の処理なんじゃないかと勝手に思ってたりする。実は LWP::UserAgent 相当のモジュールとかあったりするのかなぁ。


(2008-02-18 追記)

PHP にもスクレーピング用ライブラリできたっぽい。

Liner Note - PHP汎用スクレイピングライブラリを作ってみた

LPW::UserAgent とはちょっと違う雰囲気(ブラウザの機能としては LWP::Simple くらい?)だけど、XPath とかで拾えるのはいいなあ。ということでメモメモ。


(2008-03-18 追記)

役立つライブラリはいろいろあるっぽい。組み合わせるのが面倒かも。

PHPでのスクレイピングに役立つライブラリ - (DxD)∞
posted at 09:04:54 on 2007-12-17 by miau - Category: Perl No Trackbacks - Permalink

TrackBack

このエントリにトラックバックはありません
現在トラックバックは受け付けていません。

Comments

No comments yet

Add Comments

現在コメントは受け付けていません。
お手数ですが、 こちら のコメント欄にでも記載していただければと思います。