Как с помощью 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 шт):
Автор решения: Алексей Шиманский
→ Ссылка
Сделать это можно так:
- Заходим на сайт через браузер и открываем консоль разработчика (F12)
- Открываем там вкладку Network
- Вбиваем свои данные и смотрим какой запрос отсылается на сервер при авторизации
- Нажимаем на запрос ПКМ и выбираем
Copy
→Copy as cURL
. - Этот код вставляем либо в postman и там смотрим на PHP код, либо в какой-либо онлайн конвертер с "cURL to PHP"
- Также не забываем проанализировать какой ответ возвращает запрос. Возможно там будут данные, которые надо будет вставлять каждый раз в другие запросы
- Аналогично делаем для простого запроса уже будучи авторизованным: отправляем запрос когда авторизованный, копируем cURL запрос и конвертируем в код PHP в любом онлайн конвертере или в Postman'е
Как правило этого хватает.
Возможно иногда надо доп. заголовки поставить, типа CURLOPT_SSL_VERIFYPEER => false,
и CURLOPT_SSL_VERIFYPEER => false,