トップページ⇒tech
54コメント17KB

perlでmixiの足跡一覧を取得するぞ!

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2010/02/09(火) 20:08:56
俺、がんばる。みてて。
0002デフォルトの名無しさん2010/02/09(火) 20:11:42
とりあえず実行環境を準備する。

アクティブパールをインストールしても良いけど
http://www.activestate.com/

今回はvmware + ubuntuの環境で開発するよ
http://www.vmware.com/jp/products/player/
http://www.ubuntulinux.jp/download/
0003デフォルトの名無しさん2010/02/09(火) 20:25:25
・まずは色々とググッてみる
(mixi perl html 取得 ログイン情報 ログイン ssh 等々…)

・次にwiresharkを使ってログイン時に送受信されているパケットをスニッフィング
POST /login.pl HTTP/1.1
Host: mixi.jp
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.78 Safari/532.5
Referer: http://mixi.jp/home.pl
Content-Length: 80
Cache-Control: max-age=0
Origin: http://mixi.jp
Content-Type: application/x-www-form-urlencoded
Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Encoding: gzip,deflate,sdch
Cookie: gadgetUserPrefs-7157=; emid=省略; rsi_ct=省略; IMPASEG=省略
Accept-Language: ja,en-US;q=0.8,en;q=0.6
Accept-Charset: Shift_JIS,utf-8;q=0.7,*;q=0.3

next_url=%2Fhome.pl&email=メールアドレス&password=パスワード&x=43&y=8HTTP/1.1 200 OK
Date: Tue, 09 Feb 2010 10:44:00 GMT
Server: Apache
X-Dealer: 170105
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 101
Content-Type: text/html; charset=ISO-8859-1
Set-Cookie: BF_SESSION=省略; path=/
Set-Cookie: BF_STAMP=省略; path=/
Connection: close

文字化け
0004デフォルトの名無しさん2010/02/09(火) 20:29:09
参考になりそうなページを見つけたのでメモ

第74回HTTP(5) メソッド
ttp://www5e.biglobe.ne.jp/~aji/3min/74.html

ちなみに自分はど素人なので一つ一つ調べながら行きます。
0005デフォルトの名無しさん2010/02/09(火) 20:32:36
スニッフィングした情報を見た感じ
/login.pl(http://mixi.jp/login.pl)に対してログインIDとPWがPOSTされているみたいですね。

↓この部分かな?
next_url=%2Fhome.pl&email=メールアドレス&password=パスワード&x=43&y=8HTTP/1.1 200 OK
0006デフォルトの名無しさん2010/02/09(火) 20:40:05
・なら/login.plにメールアドレスとパスワードをPOSTして
帰ってきた値はどうなるのかを見てみる。

・参考にしたページ
ttp://www2u.biglobe.ne.jp/~MAS/perl/waza/pageget.html

・LWPっていうモジュールでwebページを取得できるらしい
ttp://homepage3.nifty.com/hippo2000/perltips/LWP/UserAgent.html

・ソース
use strict;
use warnings;
use LWP::Simple;

# ファイルに保存
getstore('http://mixi.jp/login.pl?next_url=%2Fhome.pl&email=メールアドレス&password=パスワード&x=43&y=8', 'save.html');

・結果(失敗)
ログイン画面のソースがかえってきてしまった
0007デフォルトの名無しさん2010/02/09(火) 20:56:28
なんかすでに作られたものがあった

ttp://digit.que.ne.jp/work/index.cgi?Perl%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB/WWW::Mixi

0008デフォルトの名無しさん2010/02/09(火) 21:11:47
このまま車輪の再発明をしろ
0009デフォルトの名無しさん2010/02/09(火) 21:31:15
お風呂はいってきた。
なんか7のモジュールをcpanからインストールして
サンプルソースを動かしてみたら簡単取得できた。
やる気が1000下がった。

・サンプルソース
#!/usr/bin/perl -w
use WWW::Mixi;
use HTTP::Cookies;
use HTTP::Request::Common;
use strict;
my $mixi_email = 'メールアドレス';
my $mixi_password = 'パスワード';
my $login_url = 'http://mixi.jp/login.pl';
my $home_url = 'http://mixi.jp/home.pl';
my $mixi = WWW::Mixi->new($mixi_email, $mixi_password);
print "Cookieを有効にします。\n";
my $cookie = sprintf('cookie_%s_%s.txt', $$, time);
my $cookie_jar = HTTP::Cookies->new(file => $cookie, ignore_discard => 1);
$mixi->cookie_jar($cookie_jar);
print "ログインします。\n";
my @form = ('email' => $mixi_email, 'password' => $mixi_password, 'next_url' => $home_url);
my $request = &HTTP::Request::Common::POST($login_url, [@form]);
my $response = $mixi->request($request);
print "ホームを取得します。\n";
$request = &HTTP::Request::Common::GET($home_url);
$response = $mixi->request($request);
print $response->content;

・でも
>>8に激励を頂いたのでこのままもうちょっとがんばってみる。
0010デフォルトの名無しさん2010/02/09(火) 22:01:13
参考になりそうなページを見つけたのでメモ
ttp://okwave.jp/qa/q3578497.html
ttp://www.augustus.to/blog/3128/archives/2004/08/perl_cookie.html
ttp://www.dengeki.ne.jp/tohoho/search.cgi?key=%BA%C6%B5%A2
ttp://space.geocities.jp/y4yet3/
http://digit.que.ne.jp/work/wiki.cgi?Perl%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB/LWP#i7
0011デフォルトの名無しさん2010/02/09(火) 22:16:18
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                  京都大学霊長類研究所
001212010/02/10(水) 22:39:35
なんかチンパンジーとか言われてる><
今日もがんばるよ!
0013デフォルトの名無しさん2010/02/10(水) 22:44:28
D言語最高!
0014デフォルトの名無しさん2010/02/11(木) 19:35:31
彼女にふぇらちおしてもらえるかもしれないぞ
JavaScriptとVBScriptバージョンも作るんだ
0015デフォルトの名無しさん2010/02/11(木) 21:29:56
そろそろ次のことを考えようじゃないか。
特定のコミュニティの更新情報を取得
なんてどう?
0016デフォルトの名無しさん2010/02/12(金) 20:18:03
おい、まだかよ
あと完成したらレンタルサーバーでいいから公開するんだぞ
001712010/02/13(土) 00:29:43
まぁまぁゆっくりやらせてくれ。
あまりにもperl初心者すぎて先にすすまん

入門書読んでます。

>>16
ソースを公開するから動作環境は自分たちで用意して
001812010/02/13(土) 00:44:24
>>15
たとえば何処の?
001912010/02/13(土) 12:33:14
そこそこおっきい本屋に来た
誰かオススメの入門書教えて><
0020デフォルトの名無しさん2010/02/13(土) 13:35:49
フェラチオについてのお勧め本なら紹介できるんだが…
0021デフォルトの名無しさん2010/02/13(土) 13:51:15
ど素人にしては手馴れてるように見えるが
単にPerl素人ってことなのだろうか

>>19
初めてのPerlの新版が最近出たからそれにしる
002212010/02/13(土) 13:59:33
まだ本屋にいます

>>21
ありがとう!じゃぁとりあえず一冊は定番のらくだ本にするね
5版が最新?

あとLWPモジュールについて詳しく解説されてる本ってない?
002312010/02/13(土) 14:09:41
ディズニーランドの本を間違えて買ってしまいました
0024デフォルトの名無しさん2010/02/13(土) 14:11:51
トイレ行きたい・・・
本屋に来ると払いたくなります
002512010/02/13(土) 14:14:57
LWPモジュールうんぬん以前にクッキーの扱い方とかhtmlプロトコルの仕組みとかがわかってなさ過ぎる
もうしばらく本屋で勉強します。

Haskellの入門書があったので少しだけ浮気しました
002612010/02/13(土) 14:15:48
23,24はもりあげようとしてくれてるのか邪魔しようとしてるのかどっちなんだw
002712010/02/13(土) 14:31:14
ウェルコット スーパー61テイクオフ! オーヴァー!

アイリーーーーーーン!ファック!アイリーン
002812010/02/13(土) 15:04:35
GoogleAppEngineで動かすにはどうすればいいのでしょうか?
002912010/02/14(日) 00:13:15
Pythonでやることにしました。
0030デフォルトの名無しさん2010/02/14(日) 08:09:03
なんで?
0031デフォルトの名無しさん2010/02/14(日) 13:05:19
その前に本屋に行ったのは本物なのか
003212010/02/14(日) 18:26:41
本屋に行ったのは本物だよー
>>23,24,27,28,29あたりは盛り上げ約なので気にせずに
003312010/02/14(日) 18:58:07
>>21氏に頂いたアドバイス通りオライリーの「初めてのperl 第5版」買ってきました。
4,5日はこの本読むのに時間使います。

当方仕事の関係上流れが非常に遅くなります。
ゆっくり行きますので暖かく見守って下さい。

目的の物が完成するまでの間利用するアドレスを作りました。

:激励、アドバイス、指摘はこちらへ
[email protected]
0034デフォルトの名無しさん2010/02/14(日) 20:20:42
どーでも良いからトリップつけてくれよ
0035デフォルトの名無しさん2010/02/14(日) 22:12:42
1が頑張ります系のスレって寒いんすけど
なんでスレ立てるの? 自己顕示?
0036デフォルトの名無しさん2010/02/14(日) 22:24:42
つーかもうできたんで
GAEか何かで公開していいかね?
Perlじゃないんだけどね。
00371 ◆1/FYB0.jU2 2010/02/15(月) 00:48:39
>>34 トリップって知らなかったよ! 今回から投稿する時はそうします。
>>35 うん、そうです。
>>36 どうぞ、perlにも既にモジュールがあるみたいですよ

0038デフォルトの名無しさん2010/02/15(月) 03:11:09
削除依頼だしとけよ
0039デフォルトの名無しさん2010/02/21(日) 03:12:06
ぜひ公開してくれ
ちなみにmixiアプリというものもあるぞ
あれでもいろいろmixiの情報を取得できる
0040デフォルトの名無しさん2010/02/21(日) 13:54:28
バカだな
あれじゃダメなんだよ
0041デフォルトの名無しさん2010/02/21(日) 14:04:57
このスレ終わったの?
HTTPやPerlの勉強チマチマやるスレになるかと思ってたのに
0042デフォルトの名無しさん2010/02/21(日) 18:34:47
どうせこういう流れになるのは分かってる
だからこそ、こういうスレ見るとムカツク
00431 ◆1/FYB0.jU2 2010/03/18(木) 01:09:30
test
00441 ◆1/FYB0.jU2 2010/03/18(木) 01:12:27
久しぶり!

ログインはできたよ。
mixiのサーバーからはクッキー情報が送られてきてるのに指定したファイルに保存されないのはどうして?

#!/usr/bin/perl -w
use HTTP::Cookies;
use HTTP::Request::Common;
use LWP::UserAgent;
#cookieを保存するファイル
$file="cookies_mixi.txt";
# UserAgentの生成
$ua = LWP::UserAgent->new;
#ユーザエージェントを設定
$ua->agent('Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.89 Safari/532.5');
#ログイン情報の送り先、メールアドレス、パスワード等の各種必要情報をセット
my $url = 'http://mixi.jp/login.pl';
my %formdata = (
"next_url" => '/home.pl',
"email" => '[email protected]',
"password" => 'XXXXX',
"x" => '43',
"y" => '10',
);
#リクエストの生成
my $req = POST($url, [%formdata]);
#リファラーを設定
$req->referer('http://mixi.jp/home.pl');
#cookie_jarの生成
$ua->cookie_jar(HTTP::Cookies->new(file => $
00451 ◆1/FYB0.jU2 2010/03/18(木) 01:17:08
・メモ

44のスクリプトを実行した時に送信するパケット
POST /login.pl HTTP/1.1
Connection: close
Host: mixi.jp
Referer: http://mixi.jp/home.pl
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.89 Safari/532.5
Content-Length: 81
Content-Type: application/x-www-form-urlencoded

y=10&email=XXXXX%40gmail.com&password=XXXXX&next_url=%2Fhome.pl&x=43HTTP/1.1 200 OK
Date: Wed, 17 Mar 2010 16:14:01 GMT
Server: Apache
X-Dealer: 170087
Vary: Accept-Encoding
Content-Type: text/html; charset=ISO-8859-1
Set-Cookie: BF_SESSION=XXXXX; path=/
Set-Cookie: BF_STAMP=XXXXX; path=/
Connection: close
Transfer-Encoding: chunked

5c

<html><head><meta http-equiv="refresh" content="0;url=/check.pl?n=%2Fhome.pl"></head></html>

0
0046デフォルトの名無しさん2010/03/18(木) 01:42:44
cookie_jarを生成してるところが途中で切れてないか
あとはHTTP::Cookiesのコンストラクタのautosaveパラメタを試してみる
0047デフォルトの名無しさん2010/03/19(金) 01:53:24
相手すんな
0048デフォルトの名無しさん2010/04/19(月) 16:27:14
mixi login後にproxyにして8080ポートから見れるようにできないかな

0049デフォルトの名無しさん2010/05/08(土) 19:58:22
期待保守
0050デフォルトの名無しさん2010/05/25(火) 01:44:14
何が難しくて「perlでmixiの足跡一覧を取得」することができないのでしょうか?
超素人の僕にはさっぱり分かりません

ログイン後の処理でしょうか?
0051デフォルトの名無しさん2010/05/26(水) 17:59:21
cockie_jar使わなくともセッションを取得したあとそれを使ってアクセスすれば普通に見れるんじゃね
0052デフォルトの名無しさん2010/10/13(水) 19:08:12
ライス
0053デフォルトの名無しさん2010/10/16(土) 02:11:50
かん
0054デフォルトの名無しさん2010/11/26(金) 16:51:50
javascriptで書かれた隠しクッキーをSetしないとダメ
Cookieは3つで
s_sq
s_vsn_mixijpmain_1
s_cc

そのjavascriptってのはhome.plとかアクセスしたときのhtmlに書かれている
<script type="text/javascript" src="/static/js//mixi/analysis.production.js?XXXXXXXXXX"></script>
ってやつ
その中にいろいろ書いてあって解読してクッキーにセットすればOK
■ このスレッドは過去ログ倉庫に格納されています