みのねっとぶろぐ
2012-09-08 [長年日記]
■ WWW::Mixiの修正(ログイン認証)
ずっと以前から、WWW::Mixiを利用して、ブログの内容をmixi日記に自動投稿するようにしていたが、mixiがapiを提供していない時代のものであり、あたかも実際にブラウザからログインして、mixi日記を投稿操作するなどの処理を提供しているCPANモジュールです。
従って、mixi側の画面のページ操作やクッキーの名称などが変更されてしまうと動作しなくなると言うリスクを持っていました。
それを分かって使っていたのですが、その時は随分前にやって来て動作しなくなりました。変更されたmixi画面、クッキー名称に修正を加えれば良いのですが、残念ながら、オーナーは更新を行わなくなってしまいました。自動的に、私のブログの内容が自動でmixi日記として投稿されることはなくなりました(涙)
まぁ、どこが変わったのか、画面を見て、画面ソースを見たり、クッキー名称を見て、それに合わせて修正すればいいのですが、面倒で放置しておりました。
そして、mixiから公式のAPIが公開されました。
それを利用するように修正すれば良い話なのですが、それも結構面倒で放置しておりました。
ところが、最近になって、ちょっと見てみようかなとWWW::Mixiとmix画面の動き、ソース、クッキー名称などを比べると明らかに、クッキー名称が違う。これを変更すれば、ログインできて、mixi日記への投稿もできるのではと思い、修正してみたら、あら!?動いてしまった。これで、良いの・・・
いやー正常に動いているから、これで良いみたいです。
修正内容は、以下の通りです。
% diff -u -0 Mixi.pm-bck Mixi.pm --- Mixi.pm-bck 2007-08-01 14:38:45.000000000 +0900 +++ Mixi.pm 2012-09-06 00:18:19.178000000 +0900 @@ -52 +52 @@ - my $page = 'login.pl'; + my $page = 'login.pl?from=login0'; @@ -97 +97 @@ - $self->cookie_jar->set_cookie(undef, BF_SESSION', $session, '/', 'mixi.jp', undef, 1, undef, undef, 1); + $self->cookie_jar->set_cookie(undef, 'session', $session, '/', 'mixi.jp', undef, 1, undef, undef, 1); @@ -100 +100 @@ - return ($self->cookie_jar->as_string =~ /\bSet-Cookie.*?:.*? BF_SESSION=(.*?);/) ? $1 : undef; + return ($self->cookie_jar->as_string =~ /\bSet-Cookie.*?:.*? session=(.*?);/) ? $1 : undef; @@ -108 +108 @@ - $self->cookie_jar->set_cookie(undef, 'BF_STAMP', $stamp, '/', 'mixi.jp', undef, 1, undef, undef, 1); + $self->cookie_jar->set_cookie(undef, 'stamp', $stamp, '/', 'mixi.jp', undef, 1, undef, undef, 1); @@ -111 +111 @@ - return ($self->cookie_jar->as_string =~ /\bSet-Cookie.*?:.*? BF_STAMP=(.*?);/) ? $1 : undef; + return ($self->cookie_jar->as_string =~ /\bSet-Cookie.*?:.*? stamp=(.*?);/) ? $1 : undef;
ちなみに、この自動でブログの内容をmixi日記に投稿するようにしていたら、当時働いていた会社の役員さんから、業務時間中にmixi日記を書いていると言う噂があるんだけど、本当か?と聞かれた覚えがあります。誰か、当時、mixiに同僚がいたんでしょうね。それを投稿日時を見て業務時間中に投稿していると役員にちくったのではないかと推測しております。仕方がないです。時間差でmixi日記に投稿を行っているんですから。当時は、そんなことを気にする役員、上司、同僚に対して、違和感を覚えた記憶があります(笑)