Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Как получить авторизованную куки, что бы потом передать её в запрос.

php
Теги: #<Tag:0x00007f7b650bd488>

(Elvis Presley ) #1

Всем привет! Задача отправить запрос с URL страницы, которая доступна только после авторизации и после этого получить ответ от сервера. Подскажите пожалуйста как можно получить авторизованную куку, что бы передать в запрос. Я сделал следующим образом (пост запросом отправляю параметры login, password на URL c формой логина):

public function getAuthCookie()
    {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, 'https://mysite.com/auth/login/');
        curl_setopt($ch, CURLOPT_HEADER, 1);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, 'back=%2F&email=user123456%40mail.ru&password=123456&login=Login');
        $response = curl_exec($ch);
        curl_close($ch);
        preg_match("/AllSubdomains=([^&]*)path/", $response, $matches);
        $cookie = $matches[1];

        return $cookie;
    }

Этим методом я рассчитывал получить авторизованную куки, и после чего передать её в запрос:

    public function getCurlResponse($url, $cookie)
    {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_HEADER, 1);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_COOKIE, $cookie);
        $response = curl_exec($ch);
        curl_close($ch);

        return $response;
    }

Почему то куки получаю не авторизованная. Подскажите пожалуйста что делаю не так? И как получить авторизованную куки?