Войдите в систему с помощью curl и перейдите на другую страницу

Я пытаюсь получить доступ к одной странице на веб-сайте с CURL, однако он должен быть зарегистрирован, я попробовал код для входа в систему, и он был успешным

<?php $user_agent = "Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20140319 Firefox/24.0 Iceweasel/24.4.0"; $curl_crack = curl_init(); CURL_SETOPT($curl_crack,CURLOPT_URL,"https://www.vininspect.com/en/account/login"); CURL_SETOPT($curl_crack,CURLOPT_USERAGENT,$user_agent); CURL_SETOPT($curl_crack,CURLOPT_PROXY,"183.78.169.60:37899"); CURL_SETOPT($curl_crack,CURLOPT_PROXYTYPE,CURLPROXY_SOCKS5); CURL_SETOPT($curl_crack,CURLOPT_POST,True); CURL_SETOPT($curl_crack,CURLOPT_POSTFIELDS,"LoginForm[email]=naceriwalid%40hotmail.com&LoginForm[password]=passwordhere&toploginform[rememberme]=0&yt1=&toploginform[rememberme]=0"); CURL_SETOPT($curl_crack,CURLOPT_RETURNTRANSFER,True); CURL_SETOPT($curl_crack,CURLOPT_FOLLOWLOCATION,True); CURL_SETOPT($curl_crack,CURLOPT_COOKIEFILE,"cookie.txt"); //Put the full path of the cookie file if you want it to write on it CURL_SETOPT($curl_crack,CURLOPT_COOKIEJAR,"cookie.txt"); //Put the full path of the cookie file if you want it to write on it CURL_SETOPT($curl_crack,CURLOPT_CONNECTTIMEOUT,30); CURL_SETOPT($curl_crack,CURLOPT_TIMEOUT,30); $exec = curl_exec($curl_crack); if(preg_match("/^you are logged|logout|successfully logged$/i",$exec)) { echo "yoooha"; } ?> 

Теперь единственная проблема, с которой я столкнулся, скажу, что я не хочу, чтобы меня перенаправляли на зарегистрированную страницу, я хочу, чтобы ее перенаправляли на эту страницу http://example.com/buy , как я могу это сделать в такой же код?

Если вы хотите перейти в /buy после входа в систему, просто используйте один и тот же ручок зависания и выполните другой запрос для этой страницы. cURL сохранит файлы cookie на протяжении всего дескриптора (и на последующих запросах, так как вы сохраняете их в файл и читаете их обратно в банке cookie.

Например:

 $user_agent = "Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20140319 Firefox/24.0 Iceweasel/24.4.0"; $curl_crack = curl_init(); CURL_SETOPT($curl_crack,CURLOPT_URL,"https://www.vininspect.com/en/account/login"); CURL_SETOPT($curl_crack,CURLOPT_USERAGENT,$user_agent); CURL_SETOPT($curl_crack,CURLOPT_PROXY,"183.78.169.60:37899"); CURL_SETOPT($curl_crack,CURLOPT_PROXYTYPE,CURLPROXY_SOCKS5); CURL_SETOPT($curl_crack,CURLOPT_POST,True); CURL_SETOPT($curl_crack,CURLOPT_POSTFIELDS,"LoginForm[email]=naceriwalid%40hotmail.com&LoginForm[password]=passwordhere&toploginform[rememberme]=0&yt1=&toploginform[rememberme]=0"); CURL_SETOPT($curl_crack,CURLOPT_RETURNTRANSFER,True); CURL_SETOPT($curl_crack,CURLOPT_FOLLOWLOCATION,True); CURL_SETOPT($curl_crack,CURLOPT_COOKIEFILE,"cookie.txt"); //Put the full path of the cookie file if you want it to write on it CURL_SETOPT($curl_crack,CURLOPT_COOKIEJAR,"cookie.txt"); //Put the full path of the cookie file if you want it to write on it CURL_SETOPT($curl_crack,CURLOPT_CONNECTTIMEOUT,30); CURL_SETOPT($curl_crack,CURLOPT_TIMEOUT,30); $exec = curl_exec($curl_crack); if(preg_match("/^you are logged|logout|successfully logged$/i",$exec)) { $post = array('search' => 'keyword', 'abc' => 'xyz'); curl_setopt($curl_crack, CURLOPT_POST, 1); // change back to GET curl_setopt($curl_crack, CURLOPT_POSTFIELDS, http_build_query($post)); // set post data curl_setopt($curl_crack, CURLOPT_URL, 'http://example.com/buy'); // set url for next request $exec = curl_exec($curl_crack); // make request to buy on the same handle with the current login session } 

Вот несколько других примеров использования PHP и cURL для выполнения нескольких запросов:

Как войти в систему с помощью Curl и SSL и файлов cookie (ссылки на несколько других примеров)

Получение данных с веб-сайта cURL после входа в систему?

Вход в Pinterest с PHP и cURL не работает

Войдите в Google с помощью PHP и Curl, Cookie отключился?

PHP Curl – проблема с файлами cookie

Вам просто нужно изменить URL-адрес после того, как логин соревнуется, а затем запустите curl_exec так:

 <?php //login code goes here if(preg_match("/^you are logged|logout|successfully logged$/i",$exec)) { echo "Logged in! now lets go to other page while we are logged in, shall we?"; //The new URL that you want to go to while logged in goes in bottom line : CURL_SETOPT($curl_crack, CURLOPT_URL, "https://new_url_to_go.com/something"); $exec = curl_exec($curl_crack); // now $exec contains the the content of new page with login } curl_close($curl_crack);//dont forgert to close curl session at last ?> 

Сначала определите эту функцию, чтобы получить ассоциативный массив, содержащий заголовок и контент url (см. http://nadeausoftware.com/articles/2007/06/php_tip_how_get_web_page_using_curl ):

 /** * Get a web file (HTML, XHTML, XML, image, etc.) from a URL. Return an * array containing the HTTP server response header fields and content. */ function get_web_page( $url, $params, $is_post = true ) { $options = array( CURLOPT_RETURNTRANSFER => true, // return web page CURLOPT_HEADER => false, // don't return headers CURLOPT_FOLLOWLOCATION => true, // follow redirects CURLOPT_ENCODING => "", // handle all encodings CURLOPT_USERAGENT => "Mozilla/4.0 (compatible;)", // i'm mozilla CURLOPT_AUTOREFERER => true, // set referer on redirect CURLOPT_CONNECTTIMEOUT => 120, // timeout on connect CURLOPT_TIMEOUT => 120, // timeout on response CURLOPT_MAXREDIRS => 10, // stop after 10 redirects ); if($is_post) { //use POST $options[CURLOPT_POST] = 1; $options[CURLOPT_POSTFIELDS] = http_build_query($params); } else { //use GET $url = $url.'?'.http_build_query($params); } $ch = curl_init( $url ); curl_setopt_array( $ch, $options ); $content = curl_exec( $ch ); $err = curl_errno( $ch ); $errmsg = curl_error( $ch ); $header = curl_getinfo( $ch ); curl_close( $ch ); $header['errno'] = $err; $header['errmsg'] = $errmsg; $header['content'] = $content; return $header; } 

попробуйте загрузить « http://www.example.com/buy » после успешного входа в систему.

 // after curl login setup $exec = curl_exec($curl_crack); if(preg_match("/^you are logged|logout|successfully logged$/i",$exec)) { // close login CURL resource, and free up system resources curl_close($curl_crack); $params = array('product_id'=>'xxxx', qty=>10); $url = 'http://www.example.com/buy'; //use above function to get the url content via POST params $result = get_web_page($url, $params, true); if($result['http_code'] == 200) { //echo the content echo $result['content']; die(); } }