@KevinSmash

Как провести авторизацию через curl?

Здравствуйте. Необходимо подключиться к сайту, и пройти там авторизацию, которая проходит через get параметры в адресной строке. Используя curl ничего не выходит, параметры в строку не передаются и соотвественно доступа нет, как это можно исправить? Вот сам код:
$ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, "https://site.ru/registr?");
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, "userName=kevinsmash&password=123456");


        $result = curl_exec($ch);
        $result = json_decode($result, true);

        $info = curl_getinfo($ch);
        echo '<br /> Запрос выполнился за  ' . $info['total_time'] . ' сек. к URL: ' . $info['url'] . '<br />';
    }
}
  • Вопрос задан
  • 215 просмотров
Решения вопроса 1
slo_nik
@slo_nik Куратор тега PHP
Добрый вечер.
Данные об авторизации должны быть сохранены, Вы же этого не делаете.
Необходимо создать пару файлов.
Приблизительно так:
function login($url,$login,$pass){

   $ch = curl_init();
   curl_setopt($ch, CURLOPT_URL, $url);
   // откуда пришли на эту страницу
   curl_setopt($ch, CURLOPT_REFERER, $url);
   // cURL будет выводить подробные сообщения о всех производимых действиях
   curl_setopt($ch, CURLOPT_VERBOSE, 1);
   curl_setopt($ch, CURLOPT_POST, 1);
   //curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
   curl_setopt($ch, CURLOPT_POSTFIELDS,"username=".$login."&password=".$pass);
   curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36");
   curl_setopt($ch, CURLOPT_HEADER, 1);
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
   //сохранять полученные COOKIE в файл
   curl_setopt($ch, CURLOPT_COOKIEJAR, $_SERVER['DOCUMENT_ROOT'].'/parser/cookie.txt');
   curl_setopt($ch, CURLOPT_COOKIEFILE, $_SERVER['DOCUMENT_ROOT'].'/parser/cookie.txt');
   $result=curl_exec($ch);

//echo $result;

   curl_close($ch);

   return $result;
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
dimonchik2013
@dimonchik2013
non progredi est regredi
тренируйся на

fiddler + httpbin
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы