Задать вопрос
@molodtsov

Как при помощи cURL передать кукис в следующий запрос?

Нужно авторизоваться на сайте через форму средствами php. Но в форме также присутствует токен, который каждый раз обновляется. Чтобы этот момент обойти, мне нужно сначала этот токен узнать, а потом кукис, которая этот токен хранит, перенести в следующий cURL запрос уже для авторизации в форме.

Мой скрипт выглядит так:
function authUser($url=null, $token = '1') {
    $login = 'login';
    $pass = 'pass';
    $parser['url'] = $url;
    $EvilCurl = curl_init();
    curl_setopt($EvilCurl,CURLOPT_URL,(isset($url)) ? $url : $parser['url']);
    curl_setopt($EvilCurl, CURLOPT_USERAGENT, "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36");
    curl_setopt($EvilCurl, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($EvilCurl, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($EvilCurl, CURLOPT_POST, 1);
    curl_setopt($EvilCurl, CURLOPT_POSTFIELDS, "USER_LOGIN=".$login."&USER_PASSWORD=".$pass."amotok=".$token);
    curl_setopt($EvilCurl, CURLOPT_HEADER, 1);
    curl_setopt($EvilCurl, CURLOPT_REFERER, (isset($url)) ? $url : $parser['url']);
    curl_setopt($EvilCurl, CURLOPT_COOKIESESSION, true);
    curl_setopt($EvilCurl, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($EvilCurl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($EvilCurl, CURLOPT_COOKIEJAR,  dirname(__FILE__).'/cookie.txt'); 
    curl_setopt($EvilCurl, CURLOPT_COOKIEFILE, dirname(__FILE__).'/cookie.txt'); 
    $response = curl_exec($EvilCurl);
    
    if($token=='1') {
      $pos = strpos($response,'amotok=');
      $data = substr($response, $pos,strlen($response));
      $pos = strpos($data,"; expires");
      $data = substr($data, 0, $pos);
      $amotok = str_replace("amotok=",'',$data);
      echo "<h1>$amotok</h1>";

      /////////////////////////////////////////////////////////////////////////////////
      $thisa = authUser($url, $amotok);
    } else {
      die($response);
    }
    
	#закрываем соединение
    curl_close($EvilCurl);
    #return $response;
  }


Вопрос по той строке где куча слэшей: в этой строке я уже знаю токен и повторно отправляю запрос уже для авторизации. Как мне в этот запрос передасть куку, которая хранит токен?
  • Вопрос задан
  • 209 просмотров
Подписаться 1 Оценить 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
@DuD
Используйте там
curl_setopt($EvilCurl, CURLOPT_COOKIEJAR, dirname(__FILE__).'/cookie.txt');
curl_setopt($EvilCurl, CURLOPT_COOKIEFILE, dirname(__FILE__).'/cookie.txt');
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы