Форум программистов, компьютерный форум, киберфорум
PHP: сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
 Аватар для paha444
9 / 9 / 4
Регистрация: 04.08.2013
Сообщений: 161

Авторизация через CURL

30.01.2015, 17:06. Показов 2983. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Пишу парсер и нужно авторизовываться на сайте, авторизация вроде проходит но возвращает ошибку :

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
/// Вот тут делаю первый запрос для того чтобы получить токен
$base = 'https://supply.elfmoney.ru/accounts/login/';
 
$curl = curl_init();
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_URL, $base);
curl_setopt($curl, CURLOPT_REFERER, $base);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
$str = curl_exec($curl);
curl_close($curl);
 
$html_base = new simple_html_dom();
$html_base->load($str);
 
$hidden_value = $html_base->find('input[type=hidden]',0)->value; // выбираю токен
 
 
 
// делаю второй запрос с параметрами (логин, пароль, токен)
 
$urlTo = 'https://supply.elfmoney.ru/accounts/login/';
$post = 'username='.$this->login.'&password='.$this->password.'&csrfmiddlewaretoken='.$hidden_value.'&next=/new/'; // POST данные авторизации (укажите правильно)
 
 $cookie="csrftoken=$hidden_value;";
 
 $ch = curl_init();
 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
 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, $urlTo);
 curl_setopt($ch, CURLOPT_POST,1);
// curl_setopt($ch, CURLOPT_COOKIEJAR,$_SERVER['DOCUMENT_ROOT'].'/cookiefile.txt'); 
 curl_setopt($ch, CURLOPT_COOKIE, $cookie);
 curl_setopt($ch, CURLOPT_POSTFIELDS, $post); 
// curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
 // не проверять SSL сертификат
 curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
 // не проверять Host SSL сертификата
 curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
 
 $content = curl_exec($ch);
 
 curl_close($ch);
 
 
 echo $content;

Вот что возвращает :

HTTP/1.1 302 FOUND Server: nginx/1.6.0 Date: Fri, 30 Jan 2015 12:38:35 GMT Content-Type: text/html; charset=utf-8 Transfer-Encoding: chunked Connection: keep-alive Expires: Fri, 30 Jan 2015 12:38:35 GMT Vary: Cookie Last-Modified: Fri, 30 Jan 2015 12:38:35 GMT Location: https://supply.elfmoney.ru/new/ Cache-Control: max-age=0 Set-Cookie: sessionid=zd5h3k2a5xhkwmos2fjvvflg7igq6p sf; expires=Fri, 13-Feb-2015 12:38:35 GMT; httponly; Max-Age=1209600; Path=/ HTTP/1.1 301 MOVED PERMANENTLY Server: nginx/1.6.0 Date: Fri, 30 Jan 2015 12:38:36 GMT Content-Type: text/html; charset=utf-8 Transfer-Encoding: chunked Connection: keep-alive Vary: Cookie Location: https://supply.elfmoney.ru/ HTTP/1.1 302 FOUND Server: nginx/1.6.0 Date: Fri, 30 Jan 2015 12:38:36 GMT Content-Type: text/html; charset=utf-8 Transfer-Encoding: chunked Connection: keep-alive Vary: Cookie Location: https://supply.elfmoney.ru/login?next=/ HTTP/1.1 301 MOVED PERMANENTLY Server: nginx/1.6.0 Date: Fri, 30 Jan 2015 12:38:36 GMT Content-Type: text/html; charset=utf-8 Transfer-Encoding: chunked Connection: keep-alive Location: https://supply.elfmoney.ru/login/?next=/ HTTP/1.1 503 Service Temporarily Unavailable Server: nginx/1.6.0 Date: Fri, 30 Jan 2015 12:38:36 GMT Content-Type: text/html Content-Length: 212 Connection: keep-alive

503 Service Temporarily Unavailable
nginx/1.6.0

1

-------

а если к примеру ввести не тот логин или пароль то возвращает HTML код формы и полей. Значит авторизация проходит, только почему ошибка "503 Service Temporarily Unavailable" и нет самой страницы с данными после авторизации?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.01.2015, 17:06
Ответы с готовыми решениями:

Авторизация через curl
Здравствуйте. Есть проблема, нужна помощь в ее решении. В общем нужно перейти по ссылке авторизоваться там и получить xml файл. ...

Авторизация через cURL – как?
Доброго времени суток! В наличии php 5.4, apache 2.4, мой личный аккаунт на hh.ru. Задача: получить доступ к страницам hh.ru...

Авторизация через cURL QIWI
Код не работает, выдает ошибку. <?php error_reporting(E_ALL); $USER_LOGIN = ""; $USER_PASSWORD = ""; ...

2
Заблокирован
30.01.2015, 20:43
Заголовки надо отправлять. Ну так, для приличия. юзер-агент например..

Добавлено через 1 минуту
кстати сервер может ответить любой ошибкой. какой захочет и 503 означает "инна"
1
 Аватар для paha444
9 / 9 / 4
Регистрация: 04.08.2013
Сообщений: 161
30.01.2015, 21:12  [ТС]
Немного изменил код:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
$base = 'https://supply.elfmoney.ru/accounts/login/';
 
$curl = curl_init();
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_URL, $base);
curl_setopt($curl, 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($curl, CURLOPT_REFERER, $base);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
$str = curl_exec($curl);
curl_close($curl);
 
//echo $str;
 
   preg_match('/^Set-Cookie:\s*([csrftoken=][^;]*)/mi', $str, $m);
   parse_str($m[1], $cookies);
 
  // var_dump($cookies);
   // print_r($m);
   
     
     preg_match("/^Set-Cookie:\s*([sessionid=][^;]*)/mi",$str,$sessionId);
   parse_str($sessionId[1], $sessionId);
   
  // print_r($sessionId);
   
   echo '-'.$sessionId['sessionid'].'-';
   echo '-'.$cookies['csrftoken'].'-';
 
 
    $cookies = $cookies['csrftoken'];
    $sessionid = $sessionId['sessionid'];
 
//$html_base = new simple_html_dom();
//$html_base->load($str);
 
//$hidden_value = $html_base->find('input[type=hidden]',0)->value; // выбираю токен
 
 
 
// делаю второй запрос с параметрами (логин, пароль, токен)
    
     //  $cookie="csrftoken=$cookies; sessionid=$sessionid";
 
 
      $reffer = 'https://supply.elfmoney.ru/';
      $urlTo  = 'https://supply.elfmoney.ru/login/';
      $post   = 'username='.$this->login.'&password='.$this->password.'&csrfmiddlewaretoken='.$cookies.'&next=/new/'; // POST данные авторизации (укажите правильно)
       
     
 
 
 $ch = curl_init();
 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
 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, $urlTo);
 curl_setopt($ch, CURLOPT_POST,1);
// curl_setopt($ch, CURLOPT_COOKIEJAR,$_SERVER['DOCUMENT_ROOT'].'/cookiefile.txt'); 
 curl_setopt($ch, CURLOPT_COOKIE, $cookie);
 curl_setopt($ch, CURLOPT_POSTFIELDS, $post); 
// curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
       // не проверять SSL сертификат
       curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, false);
       // не проверять Host SSL сертификата
       curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, false);
 
 $content = curl_exec($ch);
 
 curl_close($ch);
 
 
 echo $content;
Возвращает

HTTP/1.1 403 FORBIDDEN Server: nginx/1.6.0 Date: Fri, 30 Jan 2015 16:58:41 GMT Content-Type: text/html Transfer-Encoding: chunked Connection: keep-alive Vary: Cookie
Forbidden (403)

CSRF verification failed. Request aborted.

More information is available with DEBUG=True.
1
---

Заголовки надо отправлять. Ну так, для приличия. юзер-агент например..
пробовал я и с заголовками и без. Не идет.
Очень надо.

если ставлю curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); тогда возвращает вообще пустую страницу.

Добавлено через 10 минут
добавил вывод ошибок
PHP
1
2
3
4
5
6
7
 $content = curl_exec($ch);
 
    print_r(curl_getinfo($ch));  
    echo "cURL error number:".curl_errno($ch)."<br/>";  
    echo "cURL error:".curl_error($ch)."<br/>";   
 
 curl_close($ch);
выдаёт

Array ( [url] => https://supply.elfmoney.ru/login/ [content_type] => [http_code] => 0 [header_size] => 0 [request_size] => 0 [filetime] => -1 [ssl_verify_result] => 0 [redirect_count] => 0 [total_time] => 0.047 [namelookup_time] => 0 [connect_time] => 0.047 [pretransfer_time] => 0 [size_upload] => 0 [size_download] => 0 [speed_download] => 0 [speed_upload] => 0 [download_content_length] => -1 [upload_content_length] => -1 [starttransfer_time] => 0 [redirect_time] => 0 [certinfo] => Array ( ) [redirect_url] => ) cURL error number:60
cURL error:SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:cer tificate verify failed

я так понимаю ошибка сертификата, но у меня бывало что несколько раз я получал нужную страницу, но после обновления опять вылетала 503, что делать???
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.01.2015, 21:12
Помогаю со студенческими работами здесь

Авторизация на сайте через curl php
Пишу парсер школьных оценок с сайта cliend.ru. Пытаюсь авторизоваться на сайте через cURL Lib. Отследил через браузер, что запрос на...

Авторизация и вступление в группу в Одноклассниках через cURL
Всем привет :)Ну думаю что название темы самое подходящее и вы поняли о чём будет идти речь :)Собственно к делу.. Пришло мне на дурную...

Авторизация через curl на сайте elec.ru (без вас не разобраться )
Друзья помогите пожалуйста разобраться не получается залогинится на сайт с помощью curl Возвращается ошибка 403 - Доступ запрещен! ...

Авторизация в одноклассниках, используя CURL и невозможность авторизоваться повторно, через другой профиль
Здравствуйте, уважаемые умельцы. Суть, собственно, в названии темы. Используется следующий код: $user_agent = 'Mozilla/5.0 (Windows; U;...

Авторизация curl (различие между curl и ajax запросами)
Есть ли различие в передаче данных в json формате через curl и ajax? Я хочу написать запрос, который будет авторизировать пользователя на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru