@magogo

Парсер Яндекса. Что не так?

$options = array(
          CURLOPT_RETURNTRANSFER => true,
          CURLOPT_HEADER         => true,
          CURLOPT_URL            => $url,
          CURLOPT_FOLLOWLOCATION => true,
          CURLOPT_USERAGENT      => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36", 
          CURLOPT_AUTOREFERER    => true,
          CURLOPT_CONNECTTIMEOUT => 120,
          CURLOPT_TIMEOUT        => 120,
          CURLOPT_MAXREDIRS      => 10,
          CURLOPT_REFERER        => null,
          CURLOPT_SSL_VERIFYPEER => false,
          CURLOPT_INTERFACE      => $ip,
          CURLOPT_COOKIEJAR      => $_SERVER['DOCUMENT_ROOT'].'/cookie.txt',
          CURLOPT_COOKIEFILE     => $_SERVER['DOCUMENT_ROOT'].'/cookie.txt'
        );


Выводит: В вашем браузере отключены файлы cookies.

Что не так?
  • Вопрос задан
  • 154 просмотра
Пригласить эксперта
Ответы на вопрос 1
orlov0562
@orlov0562 Куратор тега PHP
I'm cool!
Вангую Яндекс умеет ставить куку JavaScript-ом и потом чекать ее наличие. А тк твой curl не выполняет JS то и кука не ставится. Ну, или вариации по типу, JS-ом скрывается это сообщение и происходит дальнейшая загрузка, а тк JS у тебя не выполняется... ну в общем, идея думаю ясна.

Выход: посмотреть в инструментах разработчика, как происходит загрузка страницы и какие куки устанавливаются после ее открытия. Тот же набор надо воспроизвести в запросе курла.

Вариант попроще использовать Chrome в Headless режиме, т.е. не эмулировать браузер через курл, а использовать полноценный браузер.
Ответ написан
Ваш ответ на вопрос

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

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