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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Парсинг с https с авторизацией

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
Oboronitel
Отправлено: 08 Августа, 2012 - 13:36:24
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Авг. 2012  


Помог: 0 раз(а)




Задача: создать скрипт, который будет:
1) подсоединяться к сайту https://www[dot]olark[dot]com
2) авторизовываться и скачивать со страницы https://www[dot]olark[dot]com/reports/download файлик

Тесты произвожу на Денвере (php 5.3)

Пробовал использовать
PHP:
скопировать код в буфер обмена
  1. $data = file_get_contents('https://www.olark.com/reports/download');


При парсинге адресов с http:// все ок, при парсинге с адресов https:// выдает ошибки:

"Warning: file_get_contents() [function.file-get-contents]: Unable to find the wrapper "https" - did you forget to enable it when you configured PHP? in X:\home\localhost\www\scripts\test1.php on line 5

Warning: file_get_contents(https://www.olark.com/reports/download) [function.file-get-contents]: failed to open stream: Invalid argument in X:\home\localhost\www\scripts\test1.php on line 5"

В php знания слабые, подскажите, пожалуйста как можно проделать подобное.
Слышал, что возможно с помощью сURL, но пока не нашел примеров.
 
 Top
Oboronitel
Отправлено: 08 Августа, 2012 - 19:05:20
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Авг. 2012  


Помог: 0 раз(а)




При создании кода использовал источники:
Пример авторизации на sape[dot]ru
PHP Simple HTML DOM Parser – библиотека для парсинга сайтов
Пример авторизации на sape[dot]ru

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $curl = curl_init(); // инициализируем cURL
  4. /*Дальше устанавливаем опции запроса в любом порядке*/
  5. //Здесь устанавливаем URL к которому нужно обращаться
  6. curl_setopt($curl, CURLOPT_URL, 'https://www.olark.com/login/');
  7. //Настойка опций cookie
  8. curl_setopt($curl, CURLOPT_COOKIEJAR, 'cook.txt');//сохранить куки в файл
  9. curl_setopt($curl, CURLOPT_COOKIEFILE, 'cook.txt');//считать куки из файла
  10. //устанавливаем наш вариат клиента (браузера) и вид ОС
  11. curl_setopt($curl, CURLOPT_USERAGENT, "Opera/10.00 (Windows NT 5.1; U; ru) Presto/2.2.0");
  12. //Установите эту опцию в ненулевое значение, если вы хотите, чтобы PHP завершал работу скрыто, если возвращаемый HTTP-код имеет значение выше 300. По умолчанию страница возвращается нормально с игнорированием кода.
  13. curl_setopt($curl, CURLOPT_FAILONERROR, 1);
  14. //Устанавливаем значение referer - адрес последней активной страницы
  15. curl_setopt($curl, CURLOPT_REFERER, 'http://www.olark.com/');
  16. //Максимальное время в секундах, которое вы отводите для работы CURL-функций.
  17. curl_setopt($curl, CURLOPT_TIMEOUT, 3);
  18. curl_setopt($curl, CURLOPT_POST, 1); // устанавливаем метод POST
  19. //ответственный момент здесь мы передаем наши переменные
  20. curl_setopt($curl, CURLOPT_POSTFIELDS, 'http://www.olark.com/login/');
  21. //Установите эту опцию в ненулевое значение, если вы хотите, чтобы шапка/header ответа включалась в вывод.
  22. curl_setopt($curl, CURLOPT_HEADER, 1);
  23. //Внимание, важный момент, сертификатов, естественно, у нас нет, так что все отключаем
  24. curl_setopt ($curl, CURLOPT_SSL_VERIFYPEER, 0);// не проверять SSL сертификат
  25. curl_setopt ($curl, CURLOPT_SSL_VERIFYHOST, 0);// не проверять Host SSL сертификата
  26. curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);// разрешаем редиректы
  27. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  28. $html = curl_exec($curl); // выполняем запрос и записываем в переменную
  29. curl_close($curl); // заканчиваем работу curl
  30.  
  31. //подключаем PHP Simple HTML DOM Parser с сайта http://simplehtmldom.sourceforge.net
  32. include_once('simple_html_dom.php');
  33.  
  34. $html = str_get_html($html);
  35.  
  36. //ищем в странице некий authenticity_token и записываем его в переменную $token
  37. $inputs = $html->find("input[name=authenticity_token]");
  38. $input = $inputs[0];
  39. $token = $input->value;
  40. echo $token;
  41.  
  42. // ниже авторизуемся на сайте со значением authenticity_token в переменной $token
  43. $curl = curl_init(); // инициализируем cURL
  44. /*Дальше устанавливаем опции запроса в любом порядке*/
  45. //Здесь устанавливаем URL к которому нужно обращаться
  46. curl_setopt($curl, CURLOPT_URL, 'https://www.olark.com/login/');
  47. //Настойка опций cookie
  48. curl_setopt($curl, CURLOPT_COOKIEJAR, 'cook.txt');//сохранить куки в файл
  49. curl_setopt($curl, CURLOPT_COOKIEFILE, 'cook.txt');//считать куки из файла
  50. //устанавливаем наш вариат клиента (браузера) и вид ОС
  51. curl_setopt($curl, CURLOPT_USERAGENT, "Opera/10.00 (Windows NT 5.1; U; ru) Presto/2.2.0");
  52. //Установите эту опцию в ненулевое значение, если вы хотите, чтобы PHP завершал работу скрыто, если возвращаемый HTTP-код имеет значение выше 300. По умолчанию страница возвращается нормально с игнорированием кода.
  53. curl_setopt($curl, CURLOPT_FAILONERROR, 1);
  54. //Устанавливаем значение referer - адрес последней активной страницы
  55. curl_setopt($curl, CURLOPT_REFERER, 'http://www.olark.com/');
  56. //Максимальное время в секундах, которое вы отводите для работы CURL-функций.
  57. curl_setopt($curl, CURLOPT_TIMEOUT, 3);
  58. curl_setopt($curl, CURLOPT_POST, 1); // устанавливаем метод POST
  59. //ответственный момент здесь мы передаем наши переменные
  60. //замените значения your_name и your_pass на соответственные значения Вашей учетной записи
  61. curl_setopt($curl, CURLOPT_POSTFIELDS, 'http://www.olark.com/login/&authenticity_token='.$token.'&username=Oboronitel&password=Vladislavrkfc');
  62. //Установите эту опцию в ненулевое значение, если вы хотите, чтобы шапка/header ответа включалась в вывод.
  63. curl_setopt($curl, CURLOPT_HEADER, 1);
  64. //Внимание, важный момент, сертификатов, естественно, у нас нет, так что все отключаем
  65. curl_setopt ($curl, CURLOPT_SSL_VERIFYPEER, 0);// не проверять SSL сертификат
  66. curl_setopt ($curl, CURLOPT_SSL_VERIFYHOST, 0);// не проверять Host SSL сертификата
  67. curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);// разрешаем редиректы
  68. $result = curl_exec($curl); // выполняем запрос и записываем в переменную
  69. curl_close($curl); // заканчиваем работу curl
  70.  
  71. echo $result; // Выводим на экран результат выполнения
  72.  
  73. ?>
  74.  


файлик simple_html_dom.php для include_once('simple_html_dom.php'); можно скачать здесь.

Надеюсь будет полезно)
 
 Top
Oboronitel
Отправлено: 10 Августа, 2012 - 15:51:40
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Авг. 2012  


Помог: 0 раз(а)




Ниже продолжение кода со скачиванием файлика и записью его в 2-х мерный массив

PHP:
скопировать код в буфер обмена
  1.  
  2. // ниже пытаемся скачать файл
  3. $curl = curl_init(); // инициализируем cURL
  4. /*Дальше устанавливаем опции запроса в любом порядке*/
  5. //Здесь устанавливаем URL с запросом Get для получения файлика
  6. curl_setopt($curl, CURLOPT_URL, 'https://www.olark.com/reports/download/conversation_report/1344459600/1344459600/olark-conversation-report-8-9-2012-to-8-9-2012.csv');
  7. //Настойка опций cookie
  8. curl_setopt($curl, CURLOPT_COOKIEJAR, 'cook.txt');//сохранить куки в файл
  9. curl_setopt($curl, CURLOPT_COOKIEFILE, 'cook.txt');//считать куки из файла
  10. //устанавливаем наш вариат клиента (браузера) и вид ОС
  11. curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; rv:14.0) Gecko/20100101 Firefox/14.0.1");
  12. //Установи эту опцию в ненулевое значение, если хочешь, чтобы PHP завершал работу скрыто, если возвращаемый HTTP-код имеет значение выше 300. По умолчанию страница возвращается нормально с игнорированием кода.
  13. curl_setopt($curl, CURLOPT_FAILONERROR, 1);
  14. //Устанавливаем значение referer - адрес последней активной страницы
  15. curl_setopt($curl, CURLOPT_REFERER, 'http://www.olark.com/');
  16. //Максимальное время в секундах, которое мы отводим для работы CURL-функций.
  17. curl_setopt($curl, CURLOPT_TIMEOUT, 3);
  18. curl_setopt($curl, CURLOPT_POST, 0); // устанавливаем метод неPOST (т.е. Get)
  19. //ответственный момент здесь мы передаем наши переменные
  20. //Установливаем это зеначение в 0, что бы в файлике небыло лишних значений шапки/header
  21. curl_setopt($curl, CURLOPT_HEADER, 0);
  22. //Внимание! Важный момент, сертификатов, естественно, у нас нет, так что все отключаем
  23. curl_setopt ($curl, CURLOPT_SSL_VERIFYPEER, 0);// не проверять SSL сертификат
  24. curl_setopt ($curl, CURLOPT_SSL_VERIFYHOST, 0);// не проверять Host SSL сертификата
  25. curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);// разрешаем редиректы
  26. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  27. $result = curl_exec($curl); // выполняем запрос и записываем в переменную $result весь CSV файл
  28. curl_close($curl); // заканчиваем работу curl
  29.  
  30. //теперь в $result находиться весь CSV файл
  31.  
  32. //разбираем $result на строки с помошью переноса строки (Enter'ом) и результаты заносим в массив $string
  33. $string = explode("
  34. ",$result);
  35.  
  36. //разбираем $string на строки, результаты заносим в массив $string
  37. $i=0;
  38. foreach ($string as $value) {
  39. $dbarray[$i] = explode(',',$value);
  40. $i++;
  41. }
  42.  
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB