Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > curl авторизация на сайте


Автор: safronowmax 26.11.2015, 21:27
Здравствуйте, подскажите пж-та, пытаюсь с помощью curl авторизоваться на сайте avito.ru, авторизация проходит без проблем. С помощью этого же скрипта пытаюсь авторизоваться на сайте cyberforum.ru (подставляю в переменную $urlOut http://www.cyberforum.ru/, в переменную $urlTo http://www.cyberforum.ru/login.php?do=login, меняю логин пароль в переменных $login, $password). Текст скрипта ниже:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ru" xml:lang="ru">
<head>
<meta http-equiv="Content-type" content="text/html; charset=UTF-8" />

<?php
$urlOut = ' http://www.cyberforum.ru/; // Куда данные послать
$urlTo = ' http://www.cyberforum.ru/login.php?do=login'; // Куда данные послать
$login = 'login; // Логин
$password = 'password'; // Пароль
$auth = 'login='.$login.'&password='.$password; // POST данные
$ch = curl_init(); // Инициализация сеанса
curl_setopt($ch, CURLOPT_URL, $urlTo);
curl_setopt($ch, CURLOPT_HEADER, 1); // получать заголовки
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,30);
curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36');
curl_setopt($ch, CURLOPT_REFERER, 'http://www.avito.ru');
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_COOKIEJAR,$_SERVER['DOCUMENT_ROOT'].'/cookiefile.txt');
curl_setopt($ch, CURLOPT_POSTFIELDS, $auth);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // Говорим скрипту, чтобы он следовал за редиректами которые происходят во время авторизации
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true);
curl_setopt ($ch, CURLOPT_HTTPHEADER, array('Expect:')); // это необходимо, чтобы cURL не высылал заголовок на ожидание
$result = curl_exec($ch);

curl_setopt($ch, CURLOPT_URL, $urlOut);
curl_setopt($ch, CURLOPT_HEADER, 0); // получать заголовки
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,30);
curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36');
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_COOKIEFILE,$_SERVER['DOCUMENT_ROOT'].'/cookiefile.txt');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // Говорим скрипту, чтобы он следовал за редиректами которые происходят во время авторизации
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true);
$result = curl_exec($ch); // Забираем страницу

curl_close($ch); // Завершаем сеанс
?>

</head>
<body>

<?php echo $result; // Оказываемся в вашем аккаунте ?>

</body>
</html>

Автор: wgent 29.11.2015, 07:13
А вот это ты в исходном коде сайберфорумской формы входа видел?
Код

<form action="/login.php?do=login" method="post" onsubmit="md5hash(vb_login_password, vb_login_md5password, vb_login_md5password_utf, 0)">

Не получится просто заполнить поля в POST-запросе, надо смотреть, каким образом джаваскрипты сайберфорума твои логин-пароль хэшируют перед отправкой.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)