PHP
1 2<?php 3$homepage = file_get_contents('とあるサイトのURL'); 4 5preg_match('/PHPSESSID\" value=\"(\w+)/', $homepage, $match); 6$phpsessid = $match[1]; 7 8preg_match_all('/hidden\" value=\"(\w+)/', $homepage, $match); 9$hidden1 = $match[1][0]; 10$hidden2 = $match[1][1]; 11$hidden3 = $match[1][2]; 12$bot_check = $match[1][3]; 13 14//***** POST ***** 15$url = 'とあるサイトのURL'; 16$data = array( 17 'username' => 'ユーザー名', 18 'password' => 'パスワード', 19 'login' => "ログイン", 20 'PHPSESSID' => $phpsessid, 21 $hidden1 => $hidden1, 22 $hidden2 => $hidden2, 23 $hidden3 => $hidden3, 24 'bot_check' => $bot_check, 25); 26 27$headers = array( 28 'Content-Type: application/x-www-form-urlencoded', 29); 30 31$options = array('http' => array( 32 'method' => 'POST', 33 'content' => http_build_query($data), 34 'header' => implode("\r\n", $headers), 35)); 36$contents = file_get_contents($url, false, stream_context_create($options)); 37echo $contents;
上記のPHPでとあるサイトへ自動ログインする処理を作りました。
最初の数回は無事ログインでき、ログイン後のhtmlが$contentsに返ってきましたが、その後はログイン後のhtmlが取得できなくなりました。
($homepageにはログイン画面のhtmlが問題なく取得できており、またPOSTする各要素も問題ないことを確認しています)
この場合、どのような原因が考えられるでしょうか?
よろしくお願い致します。
追記:
ご指摘ありがとうございます。その後の調べた状況ですが、
「さくらインターネット」上では最初の数回成功した後は、ずっと失敗(ログイン後のhtmlが取得できない)が続いています。
また、別の環境でも試しているのですが、こちらは成功したり失敗したりという状況ですので、「実行しているサーバ環境」と「ログインしたいサービス側のサーバの状況(重さ?)」の問題ではないか…と推測しています。
以上、現状報告です。
回答3件
あなたの回答
tips
プレビュー