Я пытаюсь использовать cURL для входа на сайт jsp / tomcat (мы будем называть это https://unknown.com по соображениям конфиденциальности) и вернуть HTML-код со страницы.Я наблюдал за панелью Net в Firebug и панелью cookie с Firecookie, чтобы описать в руководстве следующие шаги:
- Открыть веб-корень - https://unknown.com
- Перенаправлено на https://unknown.com/common/frames.jsp -Cookie Создано: JSESSIONID
- Заполните j_username и j_password
- Опубликовать "j_username = user & j_password = pass & submit = logon" на https://unknown.com/common/j_security_check
- Перенаправить на https://unknown.com/common/frames.jsp
- Пользователь выбирает ссылку с домашней страницы, где находится HTML-код для возврата.
Так что в основном у меня нет большого опыта работы с cURL, и мне не везетМне действительно нужно начать с понимания шагов, которые cURL потребует для входа на сайт и перехода на страницу назначения.
РЕДАКТИРОВАТЬ: Вот мой код:
//user login information
$username = "user";
$password = "pass";
$postData = "j_username=".$username."&j_password=".$password."&logon=submit";
$cookie_file = "/tmp/curl_cookies.txt";
//$fp = fopen($cookie_file, "w");
//fclose($fp);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://unknown.com/common/j_security_check');
curl_setopt($ch, CURLOPT_POSTFIELDS,$postData);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3");
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
curl_setopt($ch, CURLOPT_REFERER, "https://unknown.com/common/Frames.jsp");
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($ch);
curl_close($ch);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://unknown.com/claritymatch/ClarityBatchViewer.jsp?id=123');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3");
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($ch);
curl_close($ch);
echo $data;
Он не работает, когда я впервые запускаю файл .php, но во второй раз он вызывает целевой HTML-код - как я могу получить его, чтобы он просто вызывался в первый раз?Кроме того, поскольку я сохраняю файл cookie JSESSIONID в указанном выше файле, не возникнут ли у меня проблемы с тем, что идентификатор сеанса не изменяется или он изменится при необходимости?