PHP cURL подключиться к бэк-офису с токеном CSRF и выполнить отправку POST - PullRequest
1 голос
/ 24 сентября 2019

Я пытаюсь подключиться к интерфейсу, чтобы выполнить запрос на отправку (для экспорта файла .csv).Этот бэк-офис защищен токеном CSRF, поэтому сначала мне удалось получить уникальный токен каждый раз, когда я хочу подключиться: Код для получения токена CSRF (он работает):

$url = 'https://contact.carvivo.com/login';
$dom = new DOMDocument;
libxml_use_internal_errors(true);
$request = $dom->loadHTMLFile($url); // $request === false
$DOMxpath = new DOMXPath($dom);

$value = $DOMxpath->query("//input[@name='_csrf_token']/@value");
$list=array();
    foreach($value as $v){
       $list[]=$v->nodeValue;
      }
$_csrf_token = $list[0];

Теперь я хотел бы подключиться к этому интерфейсу и выполнить отправку POST на https://contact.carvivo.com/login_checkс 4 параметрами вот так: Код для подключения к этому бэк-офису: (кажется, не работает)

// Login to interface
$params = array(
  '_username'=>'my_login',
  '_password' => 'my_paswword',
  '_csrf_token' => $_csrf_token,
  '_submit' => 'Connexion'
);
$param = http_build_query($params);

// Curl login
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://contact.carvivo.com/login_check");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $param);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
$store = curl_exec($ch);
curl_close($ch);

В cookie.txt есть запись:

#HttpOnly_contact.carvivo.com   FALSE   /   FALSE   0   PHPSESSID   8f851310185ae7c0fd72aed84bfba924

Но похоже, что связь не установлена ​​(у меня появляется визуальное перенаправление на страницу входа, когда я выполняю код).

Итак, что мне не хватает?Как я могу выполнить другой запрос к другой странице (https://contact.carvivo.com/export/, недоступной без этой первой аутентификации) с помощью файлов cookie, сохраненных в cookie.txt?

...