![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
PHPを勉強しはじめて1ヶ月そこらです;
よろしくお願いします。
現在ある会員サイトのログイン後のマイページの取得を
したいと思っています。
掲題の処理を実装するためにいろいろ見て回ったのですが、
無料のレンタルサーバーで勉強しているので、
PEARや、CURLが使えません。
ですので、下記のサイトを参考にして、ブラウザへのリクエストを
PHPの関数だけで実行しようとしています。
http://www.spencernetwork.org/memo/tips-3.php
おそらく、リクエストヘッダ部分にログイン情報的なクッキーを
書き込んでリクエストすれば、レスポンスで
ログイン後のソースが取得できるのだと思うのですが、
その際に送信すべき、ログインクッキー情報は何を設定すれば
よいのかがわからず困っています。
その会員サイトでは、ログインすると、2つのクッキーファイルが
吐き出されるのですが、それらの中のどの値をヘッダ部分に
書き込めばいいのかが判りません。
何を書き込めばログインしている、とサーバーに認識して
もらえるのか、調べる方法などはありますでしょうか?
いろいろクッキー情報内の値を送信して試しているのですが、
「ログインしてください」というレスポンスしか
得ることができません。
お詳しい方にご教授いただければ幸いです。
よろしくお願いいたします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
その会員サイトが、ログインした人とそうでない人、ログインした人同士をどうやって継続して区別しているか、という実装にかかわる事ですからね。
普通に考えると、クッキーを使用しているのは間違いないとして、クッキーだけで判別しているか否か。
クッキーに書かれた情報は散々送信を試しても、「ログインしてください」というレスポンスしか得られなかったという事は、クッキーだけで判別しているのではないんだろうな、と思いました。
クッキー以外に判別方法を追加する実装を想像すると、ログインの認証の際(ログインID、パスワードの送信を受け取った際)に、クッキー情報をブラウザに登録、そのクッキー情報に登録した識別IDに関連付けてサーバー上に(SESSIONやDBなどに)ブラウザ名やOS名、IPアドレスなんかを保存しているんじゃないかなと思います。
何を使用しているかは、そのサイト制作者の設計、実装しだいなので、不明ですね。
クッキーに書かれた識別IDだけではなく、その認証の際に保存された各種のデータとPHPからのアクセスが一致しなければ、不正アクセスとみなされ『ログインしてください』となるのだと思いますよ。
mixiの場合は、その判定がクッキーに書かれた識別IDのみなので、それを利用することでログイン後のHTMLソースが取得できるのでしょうね。
その会員制サイトが、クッキー以外に何を判定に利用しているとしても、ブラウザから正当な手法で(そのブラウザでログインID、パスワードを入力して送信)アクセスしてきた場合、当然ながら正常にログインできるように作られているはずです。
確実にPHPでログイン後のHTMLソースを取得したければ、PHPでブラウザを作る事が必要だと思いますよ。
ちなみにその会員制サイトの利用規約には、提供するインターフェイス以外からのアクセスをしてはいけません、みたいな記述はありませんでした?
ほとんどの会員制サイトにあるとは言いませんが、そこそこ多いですよそんな規約があるサイトは。
もしあるとすると、ブラウザで取得したクッキーを、別のプログラム(この場合はPHP)に渡してアクセスするというのは、そのサイトの規約違反に当たると個人的には思いますね。
特に同一のマシンではないという点で、PHPの場合かなり抵触度が高い気がします。
言語はPHPでも何でも、ブラウザを作ってそのブラウザの通信で、ログインしてデータ(HTML)を取得であれば、取得したデータをどのように加工しようが、上記のようなサイトの規約があっても問題ないと思いますが。
No.1
- 回答日時:
何を、と言うと、そのサイトがクッキーとして送ってきた情報すべてですよね?
ログイン画面(ユーザ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#は
判りかねます。
お忙しいとは存じ上げますが、ご回答いただければ幸いです。
よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) Windowsのマクロプログラムで、こんなことできますか? 3 2022/06/28 14:30
- MySQL 「掲示板のログイン画面」はPHP~MySQLに「データベース認証のシステム」方式です。 1 2022/09/27 05:00
- PHP 掲示板のセキュリティについてアドバイスお願い致します 1 2023/08/11 20:44
- PHP 「ログイン機能を持たせる」説明が気難しいです。 2 2022/10/11 02:59
- PHP ログインした掲示板ですが、直接開かないような設計するには? 2 2022/10/29 16:30
- YouTube SMS認証が出来なくて乗っ取られたアカウントを取り戻せません。 2 2023/04/02 15:29
- その他(SNS・コミュニケーションサービス) 【至急】Microsoft teamsログインできないループ・・ 3 2023/05/17 13:17
- その他(悩み相談・人生相談) これって、もう触らないで。って意味ですか? 1 2023/01/10 12:35
- その他(悩み相談・人生相談) 大至急!困っております。 LINE clothと言うサイトの7日間無料お試し期間に申し込んだのですが 2 2022/08/30 04:35
- ハッキング・フィッシング詐欺 OKWAVEのログインと会員登録と新規登録 1 2023/04/10 17:09
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
異なるドメインのサイトでcooki...
-
cookieにカンマ区切りでつめこ...
-
インクルードファイルからのリ...
-
ログイン後のソースの取得
-
ポインター引数の関数でコンパ...
-
Excel VBA メール作成について ...
-
char str[256]の256の意味は?
-
エクセルシート名の制限を変更...
-
UTF-8で5~6バイトになる文字コ...
-
Excel 1セル当りの文字数が2...
-
メールフォームで改行スペース...
-
バイナリとBCDコード
-
オセロゲーム 2次元配列で困...
-
ワイド文字のバイト数が取得で...
-
fortranで、C言語のsizeof関数...
-
ListView重複データ削除
-
DataGridViewの特定列に入力さ...
-
【Excel VBA】10進数を2進数に...
-
2バイト文字の判定はString#get...
-
10Mバイトて文字数に すると何...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
COleDateTime とtime_t
-
異なるドメインのサイトでcooki...
-
PHPのCookieが有るか無いかで、...
-
PHPの可変変数で数字部分を演算
-
ブラウザ間でCookieを共有する...
-
ログインに関するフラグについて
-
クッキーが消せない
-
cookieが無効のブラウザへの対...
-
なんでブラウザでPHPを動かすた...
-
クッキーの発行と取得
-
cURLでcookieを送受信する方法...
-
現在日時から、任意の時日時を...
-
クッキーを連想配列で扱う方法...
-
PHPで違うサーバーのスクリプト...
-
javascriptでcookieを削除するには
-
cookieにカンマ区切りでつめこ...
-
一度回答した人をはじくアンケ...
-
Perlのフリーソフトの掲示板
-
LWP::Simple;でWebページを取得...
-
ゲームノベルのような分岐のあ...
おすすめ情報