PHPで楽天にログインをし、現在の自分の楽天ポイントを表示するプログラムを作っていますが、うまくいきません。


【やりたい事】
楽天にログイン

楽天のTOP or ポイントが確認できるページへ移動

正規表現を用いて、楽天ポイントの部分を取得

ポイントを表示

【情報】
ログイン画面

https://grp02.id.rakuten.co.jp/rms/nid/vc?__event=login&service_id=p11
のソースから、
ユーザーID「u=」
パスワード「p=」

他に何か必要な情報か?などやり方がわからず行き詰まっています。

【PHP】【mixi】

http://q.hatena.ne.jp/1248220478
を参考にし試しましたが、
楽天のTOPページがログインされていない状態で表示されるだけで駄目でした。

file_get_contentsでも構いませんし、PHPでできる方法などをお教え頂ければ幸いです。
宜しくお願い致します。

(調べたサイトのURLを記載しようと思いましたが文字制限にひっかかったので一部割愛して書かせて頂きました)

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2010/04/16 09:11:35
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:gekikawa No.2

回答回数110ベストアンサー獲得回数11

ポイント100pt

はじめまして。

具体的なスクリプトではなく方法というか指針程度ですが、ゴリゴリとHTTPヘッダの

中身を読んで、リダイレクト先とかクッキーなどを見つけていけばブラウザと同様の

挙動ができますよ。


ちょっと古いページですが

http://www.atmarkit.co.jp/fsecurity/rensai/securitytips/030liveh...

に紹介されているLiveHTTPHeadersを使えば、ブラウザの送るリクエストヘッダー

とサーバから返されるレスポンスヘッダーが簡単に確認できます。


まずは、通常のブラウザで、ログインからポイントを確認するまで、全てのヘッダー

を記録して、その中でブラウザが送っている情報(リクエストヘッダー)を送るような

スクリプトを組めばOKです。


サーバから送られるクッキーも、正規表現などでパラメータの値を読み取って

その値をfsockopen()などを使ってサーバに返せば良いと思います。


リダイレクトが入ると上記の事を複数回繰り返す(もちろんサーバからの応答に

応じてリクエストを順次送ります。)感じになりますが、(環境依存らしいですが)

PHPでもssl通信できますので十分作成可能ですよ。

http://jp2.php.net/manual/ja/function.fsockopen.php


スマートな方法ではありませんでしたが、まずはどういったヘッダーのやりとりが

されているのかを確認するのが第一でしょう。

id:cabomania

有難う御座います。

教えて頂いたサイトを見て実際にLiveHTTPHeadersをダウンロードしFirefoxで色々と試してみました。

「難しそうだから自分には無理だな…」と思いましたが、学ぶことがありました。

結論から申し上げると、

doumotoさんが以前にはてなでご質問をされていた、

「PHPスクリプトの質問です。」

http://q.hatena.ne.jp/1242080378

に関する、

「PEAR::HTTP_Clientでサイトの内容取得」

http://itpro.nikkeibp.co.jp/article/COLUMN/20070507/270079/

を改めて見直し、試したら成功致しました。

($login_params と $login_url の見直しにて)

あまりにあっけなくできて逆に驚きました。

「PEAR::HTTP_Client」は凄いです…(^^;

皆様、有難う御座いました。

2010/04/16 09:09:52

その他の回答1件)

id:Bombastus No.1

回答回数409ベストアンサー獲得回数52

ポイント50pt

私も楽天にマイページを持っていますが、ログイン後にSSL通信に移行してセッション管理しているようですので、PHPでポイントを抜き出すのは不可能に近いと思います。


逆に考えて、そんなに簡単にポイントを確認できるようでは、セキュリティ上のリスクを抱えていることになります。

id:cabomania

お答え有難う御座います。

追記で下のコメント欄に書かせて頂きましたが、

「PHP&Curlの オークションに出品模擬問題」

http://www.phppro.jp/qa/detail.php?id=290

によると、

2006年の12月にはPHPのcURLでログインできている方がいるので、

「curl_setopt」などの設定がきちんとできればログインできるのかと思っていました…。

2010/04/15 15:48:10
id:gekikawa No.2

回答回数110ベストアンサー獲得回数11ここでベストアンサー

ポイント100pt

はじめまして。

具体的なスクリプトではなく方法というか指針程度ですが、ゴリゴリとHTTPヘッダの

中身を読んで、リダイレクト先とかクッキーなどを見つけていけばブラウザと同様の

挙動ができますよ。


ちょっと古いページですが

http://www.atmarkit.co.jp/fsecurity/rensai/securitytips/030liveh...

に紹介されているLiveHTTPHeadersを使えば、ブラウザの送るリクエストヘッダー

とサーバから返されるレスポンスヘッダーが簡単に確認できます。


まずは、通常のブラウザで、ログインからポイントを確認するまで、全てのヘッダー

を記録して、その中でブラウザが送っている情報(リクエストヘッダー)を送るような

スクリプトを組めばOKです。


サーバから送られるクッキーも、正規表現などでパラメータの値を読み取って

その値をfsockopen()などを使ってサーバに返せば良いと思います。


リダイレクトが入ると上記の事を複数回繰り返す(もちろんサーバからの応答に

応じてリクエストを順次送ります。)感じになりますが、(環境依存らしいですが)

PHPでもssl通信できますので十分作成可能ですよ。

http://jp2.php.net/manual/ja/function.fsockopen.php


スマートな方法ではありませんでしたが、まずはどういったヘッダーのやりとりが

されているのかを確認するのが第一でしょう。

id:cabomania

有難う御座います。

教えて頂いたサイトを見て実際にLiveHTTPHeadersをダウンロードしFirefoxで色々と試してみました。

「難しそうだから自分には無理だな…」と思いましたが、学ぶことがありました。

結論から申し上げると、

doumotoさんが以前にはてなでご質問をされていた、

「PHPスクリプトの質問です。」

http://q.hatena.ne.jp/1242080378

に関する、

「PEAR::HTTP_Clientでサイトの内容取得」

http://itpro.nikkeibp.co.jp/article/COLUMN/20070507/270079/

を改めて見直し、試したら成功致しました。

($login_params と $login_url の見直しにて)

あまりにあっけなくできて逆に驚きました。

「PEAR::HTTP_Client」は凄いです…(^^;

皆様、有難う御座いました。

2010/04/16 09:09:52
  • id:cabomania
    追記・・・

    【その他】
    「PHP&Curlの オークションに出品模擬問題」
    http://www.phppro.jp/qa/detail.php?id=290
    にて、
    ログインをしている方がいるのでPHPのcURL関数を用いてもログインできるようではあります。

    【参考にしたサイト等】
    ◆【PHP】【mixi】
    http://q.hatena.ne.jp/1248220478
    ◆ CURLのセッションを引き継ぐ方法
    http://itpro.nikkeibp.co.jp/article/COLUMN/20070704/276685/
    ◆ PHPでcURL
    http://www.phppro.jp/qa/detail.php?id=290
    ◆ PHP5.2.8でCurlを利用してhttps~から始まる、gmailやネットバンクのサイトへログイン
    http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1033349010
  • id:koriki-kozou
    koriki-kozou 2010/04/15 16:09:17
    2007年楽天API発表と前後してシステムは改変されている
    不可能という言葉は不適切
    今はここまで
  • id:doumoto
    楽天オークションのトップから抜けないのかな?(´ー`)y-~~。ヤフオクならログインして抜けるんだけど。
  • id:cabomania
    koriki-kozouさん、doumotoさんコメント有難う御座います。

    Perlですが、以下のサイトを見つけました。
    「WWW::Mechanize::Pluggableで楽天証券の資産残高を取得する」
    http://perlsystemtrade.blog20.fc2.com/blog-entry-8.html
    「楽天アフィリエイトの確定レポートを自動取得してタブ区切りテキストに出すスクリプト(2007年2月26日)」
    http://neta.ywcafe.net/000721.html

    これらを拝見させて頂くと、PHPでも出来ない事はないように思えます。
    (Perlにおいては「WWW::Mechanize::Pluggable」や「Crypt::SSLeay(Net::SSLeay)」を利用)

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません