限定しりとり

PHPを勉強しはじめて1ヶ月そこらです;
よろしくお願いします。
現在ある会員サイトのログイン後のマイページの取得を
したいと思っています。
掲題の処理を実装するためにいろいろ見て回ったのですが、
無料のレンタルサーバーで勉強しているので、
PEARや、CURLが使えません。
ですので、下記のサイトを参考にして、ブラウザへのリクエストを
PHPの関数だけで実行しようとしています。

http://www.spencernetwork.org/memo/tips-3.php

おそらく、リクエストヘッダ部分にログイン情報的なクッキーを
書き込んでリクエストすれば、レスポンスで
ログイン後のソースが取得できるのだと思うのですが、
その際に送信すべき、ログインクッキー情報は何を設定すれば
よいのかがわからず困っています。

その会員サイトでは、ログインすると、2つのクッキーファイルが
吐き出されるのですが、それらの中のどの値をヘッダ部分に
書き込めばいいのかが判りません。

何を書き込めばログインしている、とサーバーに認識して
もらえるのか、調べる方法などはありますでしょうか?

いろいろクッキー情報内の値を送信して試しているのですが、
「ログインしてください」というレスポンスしか
得ることができません。

お詳しい方にご教授いただければ幸いです。
よろしくお願いいたします。

A 回答 (2件)

その会員サイトが、ログインした人とそうでない人、ログインした人同士をどうやって継続して区別しているか、という実装にかかわる事ですからね。


普通に考えると、クッキーを使用しているのは間違いないとして、クッキーだけで判別しているか否か。
クッキーに書かれた情報は散々送信を試しても、「ログインしてください」というレスポンスしか得られなかったという事は、クッキーだけで判別しているのではないんだろうな、と思いました。

クッキー以外に判別方法を追加する実装を想像すると、ログインの認証の際(ログインID、パスワードの送信を受け取った際)に、クッキー情報をブラウザに登録、そのクッキー情報に登録した識別IDに関連付けてサーバー上に(SESSIONやDBなどに)ブラウザ名やOS名、IPアドレスなんかを保存しているんじゃないかなと思います。
何を使用しているかは、そのサイト制作者の設計、実装しだいなので、不明ですね。
クッキーに書かれた識別IDだけではなく、その認証の際に保存された各種のデータとPHPからのアクセスが一致しなければ、不正アクセスとみなされ『ログインしてください』となるのだと思いますよ。

mixiの場合は、その判定がクッキーに書かれた識別IDのみなので、それを利用することでログイン後のHTMLソースが取得できるのでしょうね。

その会員制サイトが、クッキー以外に何を判定に利用しているとしても、ブラウザから正当な手法で(そのブラウザでログインID、パスワードを入力して送信)アクセスしてきた場合、当然ながら正常にログインできるように作られているはずです。
確実にPHPでログイン後のHTMLソースを取得したければ、PHPでブラウザを作る事が必要だと思いますよ。

ちなみにその会員制サイトの利用規約には、提供するインターフェイス以外からのアクセスをしてはいけません、みたいな記述はありませんでした?
ほとんどの会員制サイトにあるとは言いませんが、そこそこ多いですよそんな規約があるサイトは。
もしあるとすると、ブラウザで取得したクッキーを、別のプログラム(この場合はPHP)に渡してアクセスするというのは、そのサイトの規約違反に当たると個人的には思いますね。
特に同一のマシンではないという点で、PHPの場合かなり抵触度が高い気がします。

言語はPHPでも何でも、ブラウザを作ってそのブラウザの通信で、ログインしてデータ(HTML)を取得であれば、取得したデータをどのように加工しようが、上記のようなサイトの規約があっても問題ないと思いますが。
    • good
    • 0

何を、と言うと、そのサイトがクッキーとして送ってきた情報すべてですよね?


ログイン画面(ユーザIDとパスワードを入力する画面)のURLに対して、HTTPリクエストを発行して、情報(HTMLソース)を取得して、その中から実際のログイン処理を行っているURLを取得して、ユーザID、パスワードを、(必要な場合それ以外の情報も)送信します。
ユーザーIDやパスワードなどは、JavaScriptで暗号化して送信している可能性もあります。
クッキーが送られてきた場合は、すべて保存してそれ以降全て渡すようにします。

という手順が、正当な手順なので確実でしょうね。

とはいえ、かなり面倒な手順です。

小生であれば、VB.NetやC#などでローカルアプリケーションとして作成しますね。
PHPでサーバーサイドで動くブラウザを作成するよりも、IEコンポーネントを貼り付ける方がはるかに少ない労力で作成できますから。

この回答への補足

こんばんは。ご回答ありがとうございます。
ログイン画面にユーザーIDとパスワードを送信して、
とあるのですが、ログインは普通に?した後なのです。
たとえば、下記のようなサイトのmixiの自分の足跡帳を
取得するようなイメージなのですが・・・
http://winofsql.jp/VA003334/skywalker06070815294 …

ご回答の内容を照らし合わせると、
その会員サイトでログインを実行すると、Cドライブ以下の
Temporary Internet Filesにクッキー情報が2つのファイルに
保存されるのですが、そのファイル内に書かれているすべての
情報をリクエストしなくてはいけないということでしょうか?

もしそうなのであれば、そのファイル情報を取得して、
送信する際にはどのようなソースを書けばよろしいでしょう?

私自身、C言語しか使用したことがないので、VB.NetやC#は
判りかねます。
お忙しいとは存じ上げますが、ご回答いただければ幸いです。
よろしくお願いいたします。

補足日時:2008/11/24 05:50
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!