Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Получить данные со стороннего сайта
Форумы портала PHP.SU » » Работа с сетью » Получить данные со стороннего сайта

Страниц (1): [1]
 

1. babib - 13 Июня, 2014 - 09:05:36 - перейти к сообщению
Добрый день. Возникла задачка вытащить со стороннего сайта некую информацию.
Пытался реализовать это при помощи cURL. И вот что получилось.

Было подмечено что сначала отправляется POST запрос на сервер с логином и паролем.
После перезагрузки страницы отправляется GET запрос с сохраненными куками. (рис. 1. op=home)

Мною были выявлены нужные поля для авторизации.
Был организован POST запрос на этот сайт с правильными логином и паролем.

привожу пример кода

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $url = 'http://freebitco.in';                                // URL сайта на котором будем авторизоваться
  3. $urlTo = 'http://freebitco.in';                               // URL на которой будем слать POST данные
  4. $login = 'blabla@mail.ru';                          // Ваш логин
  5. $pass = 'parol';                                     // Ваш пароль
  6. $post = 'op=login&btc_address=' . $login . '&password=' . $pass . '&recaptcha_challenge_field=';  // POST данные
  7.  
  8. $ch = curl_init();                              // Инициализируем сеанс CURL
  9. curl_setopt($ch, CURLOPT_URL, $url);            // Заходим на сайт
  10. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Делаем так, чтобы страница не выдавалась сразу в поток, а можно было ее записать в переменную
  11. $html = curl_exec($ch);                         // Имитируем заход на сайт
  12.  
  13. curl_setopt($ch, CURLOPT_URL, $urlTo);              // Устанавливаем адрес куда будем слать POST данные
  14. curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');  // Записываем cookies в файл, чтобы потом можно было их считать
  15. curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt'); // Теперь читаем cookies с файла
  16. //curl_setopt( $ch, CURLOPT_USERAGENT, "" );
  17. curl_setopt($ch, CURLOPT_POST, true);               // Говорим, что информация будет отправляться методом POST
  18. curl_setopt($ch, CURLOPT_POSTFIELDS, $post);        // Передаем POST данные
  19. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);     // Иногда бывает, что после отправки данных происходит редирект heaer('Location:...').
  20.                                                     // Этот параметр говорит о то, чтобы мы следовали за ними, а не оставались на месте после отправки данных
  21.  
  22. $html = curl_exec($ch); // Записываем пришедшие данные в переменную    
  23. curl_close($ch);        // Закрываем сеанс работы CURL
  24. echo $html;             // И вуаля :) Выводим авторизованную страницу
  25. ?>


После чего мне присылается в ответ белая страница с такой информацией (рис. 2. логинпароль)

Если в строке
PHP:
скопировать код в буфер обмена
  1. $post = 'op=login&btc_address=' . $login . '&password=' . $pass . '&recaptcha_challenge_field=';  // POST данные

поменять параметр op на home
PHP:
скопировать код в буфер обмена
  1. $post = 'op=home&btc_address=' . $login . '&password=' . $pass . '&recaptcha_challenge_field=';  // POST данные


тогда будет выводится сайт, но я на нем не буду авторизован.

Прикладываю картинку на котором находится GET запрос с куками
Я думаю что надо отправить ЭТИ куки на сервер.
Вопрос 1: Как отправить куки на сервер (Желательно код полностью)
Вопрос 2: как организовать авторизацию на сайте и вытащить информацию от туда???

P.S. Чисто спортивный интерес. Не для спама
2. babib - 13 Июня, 2014 - 09:07:47 - перейти к сообщению
(рис.2. op=home)
Удалил картинку
3. esterio - 13 Июня, 2014 - 11:14:01 - перейти к сообщению
делать два запроса
1. логин
2. сам запрос страницы

кукы здесь
babib пишет:
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt'); // Записываем cookies в файл, чтобы потом можно было их считать
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt'); // Теперь читаем cookies с файла
4. babib - 13 Июня, 2014 - 12:35:53 - перейти к сообщению
esterio пишет:
делать два запроса
1. логин
2. сам запрос страницы

кукы здесь
babib пишет:
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt'); // Записываем cookies в файл, чтобы потом можно было их считать
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt'); // Теперь читаем cookies с файла


А куки должны содержать теже параметры что и на картинке (не должны быть зашифрованы)? если да тогда там нету именно тех.

Тема еще АКТУАЛЬНА
5. babib - 13 Июня, 2014 - 15:03:34 - перейти к сообщению
Задача решена. Спасибо всем. Решение нашел на этом сайте --> http://www[dot]pilot34[dot]com/2008/07/c[dot][dot].php-cookies[dot]html

Зашел как зарегистрированный пользователь. Осталось получить нужную информацию
6. valfame - 27 Декабря, 2014 - 23:01:04 - перейти к сообщению
babib пишет:
Задача решена. Спасибо всем. Решение нашел на этом сайте --> http://www[dot]pilot34[dot]com/2008/07/c[dot][dot].php-cookies[dot]html

Зашел как зарегистрированный пользователь. Осталось получить нужную информацию


Столкнулся с подобной проблемой, пытаюсь авторизоваться на этом же сайте.
После отправки данных логин/пароль на сайт, получаю содержимое сайта в переменную.
Но анализируя это содержимое вижу, что пользователь не залогинился.
Поделитесь пож. вашим решением этой задачи.
7. zatvorius - 09 Января, 2015 - 15:56:16 - перейти к сообщению
Приветствую, буду тоже очень признателен, если ТС поделится своими наработками, пытаюсь авторизоваться на этом сайт, но получаю пустую страницу в ответ, сохраняю куки и при их отправке вижу, что я не авторизован, не могу понять в чем причина.

 

Powered by ExBB FM 1.0 RC1