| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 | ||
А вот это ты в исходном коде сайберфорумской формы входа видел?
Не получится просто заполнить поля в POST-запросе, надо смотреть, каким образом джаваскрипты сайберфорума твои логин-пароль хэшируют перед отправкой. |