Я пытаюсь использовать cURL для входа на сайт jsp / tomcat (мы будем называть его https://unknown.com по соображениям конфиденциальности) и вернуть HTML со страницы. Я наблюдал панель Net в firebug и панель cookie с Firecookie, чтобы описать руководство:
Таким образом, в основном у меня нет большого опыта работы с cURL, и мне не очень повезло, мне просто нужно начать с понимания шагов, которые cURL потребует входа на сайт и перехода на целевую страницу.
EDIT: Вот мой код:
//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 в указанном выше файле, не будет ли я сталкиваться с проблемами с тем, что этот идентификатор сеанса не изменяется или он будет меняться по мере необходимости?