Как с помощью curl авторизоваться и перейти на любую страницу в данном сайте?

На главной странице есть модальное окно с авторизацией:

      <form action="/login_check" method="post" data-noajax-submit="true">
             <div class="form__row">
             <input class="input_xl" type="text" name="_username" placeholder="Ваш логин">
             </div>
             <div class="form__row">
            <input class="input_xl" type="password" name="_password" placeholder="Ваш пароль">
        </div>
                     <div class="form__row">
                        <input type="hidden" name="_target_path" value="/get-started">
                        <input class="button login__submit_button button_blue button_xl" type="submit" value="Войти">
                      </div>
                      <div class="form__row forgot_pass">
                      <div>
                        <a href="/resetting/request">Не можете войти?</a>
                     </div>
                   <div>
               У вас еще нет учетной записи? <a href="/registration">Создайте ее!</a>
         </div>
      </div>
    </form>

Код с curl:

$array = array(
    'login'    => 'r123',
    'password' => '12345'
);      
 
$ch = curl_init('https://berg.ru');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($array, '', '&'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
$html = curl_exec($ch);
curl_close($ch);    
 
echo $html;

Получаю только страницу без авторизации. Как правильно авторизоваться и перейти в любую страницу данного сайта?


Ответы (1 шт):

Автор решения: Алексей Шиманский

Сделать это можно так:

  1. Заходим на сайт через браузер и открываем консоль разработчика (F12)
  2. Открываем там вкладку Network
  3. Вбиваем свои данные и смотрим какой запрос отсылается на сервер при авторизации
  4. Нажимаем на запрос ПКМ и выбираем CopyCopy as cURL.
  5. Этот код вставляем либо в postman и там смотрим на PHP код, либо в какой-либо онлайн конвертер с "cURL to PHP"
  6. Также не забываем проанализировать какой ответ возвращает запрос. Возможно там будут данные, которые надо будет вставлять каждый раз в другие запросы
  7. Аналогично делаем для простого запроса уже будучи авторизованным: отправляем запрос когда авторизованный, копируем cURL запрос и конвертируем в код PHP в любом онлайн конвертере или в Postman'е

Как правило этого хватает. Возможно иногда надо доп. заголовки поставить, типа CURLOPT_SSL_VERIFYPEER => false, и CURLOPT_SSL_VERIFYPEER => false,

→ Ссылка