@GrimJack

Как в Guzzle получить куки?

Пытаюсь авторизоваться на мегого (megogo.net/ru).
Помимо заполнения спец полей внутри формы, сервер проверяет еще наличие куки (эксперементальным путем выяснил еще когда игрался с курлом). Потому алгоритм выходит таков:
-получить куки
-отправить с ними данные через пост по адресу megogo.net/auth/login
-получить новые куки залогиненного юзера и работать с ними дальше

Собственно проблема с 1 и 3 пунктами - в заголовках нет куков.
use GuzzleHttp\Client;
use GuzzleHttp\Cookie\CookieJar;

$cookieJar = new CookieJar();

$client = new Client([
	'base_url' => 'http://megogo.net',
	'cookies' => $cookieJar,
	'allow_redirects' => true,
	'decode_content' => true
]);

$res = $client->get('ru');
echo "<pre>";
print_r($res->getHeaders());

Вывод:
Array
(
    [Server] => Array
        (
            [0] => nginx/Zenon version
        )

    [Date] => Array
        (
            [0] => Mon, 27 Feb 2017 12:03:52 GMT
        )

    [Content-Type] => Array
        (
            [0] => text/html
        )

    [Transfer-Encoding] => Array
        (
            [0] => chunked
        )

    [Connection] => Array
        (
            [0] => keep-alive
        )

)

Не могу понять почему не приходят куки и как их считать в строку? (потом планирую заносить в бд, а не файл)
Документация внятного ответа не дала.

UPD
Заметил особенность, что при первом переходе, куки не ставятся в браузере.
  • Вопрос задан
  • 3776 просмотров
Решения вопроса 1
@GrimJack Автор вопроса
Отвечаю сам себе:
на мегого куки ставятся каким-то магическим образом со второго захода на стриницу
use GuzzleHttp\Client;
use GuzzleHttp\Cookie\CookieJar;

$jar = new CookieJar();

$client = new Client([
	'base_url' => 'http://megogo.net',
	'cookies' => $jar,
	'allow_redirects' => true,
	'decode_content' => true
]);

$req = $client->request('get', 'http://megogo.net/ru')->getBody()->getContents();
$req = $client->request('get', 'http://megogo.net/ru')->getHeaders();
echo "<pre>";
print_r($req);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@vkdv
$request = $client->request('get', 'http://megogo.net',[
            'headers' => [
                'User-Agent' => 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0'
            ]
        ])->getHeaders();


Не забывайте добавлять юзер-агента
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы