По всем вопросам пишите на webmaster@info-pages.com.ua. Вы можете свободно использовать/размещать/перепечатывать статьи сайта всего лишь указав ссылку на источник.
Использование cURL для авторизации на sape.ru
Авторизация на sape.ru средствами cURL
Размещено: 25 марта 2009
В этой статье я немного коснусь вопроса использования сURL в php и напишу подключение на сURL к sape.ru.
Как Вы знаете,
это популярный ссылочный брокер в Интернете, который активно используется веб мастерами для дополнительного заработка на своих сайтах и seo оптимизаторами для успешной раскрутки веб сайтов. Так, как покупка/продажа ссылок довольно трудоемкий процесс, хотя и автоматизированный самой системой sape, некоторые веб мастера хотели бы еще увеличить автоматизацию, например, получать списки ссылок, проверять их показатели, отказывается от ссылок или проверять статус баланса в удаленном режиме. Для этого лишь нужно провести авторизацию на сайте и парсить нужные страницы. Поэтому я решил сделать такую авторизацию средствами сURL и поделится с Вами решением этой задачи.
сURL - это специальная библиотека в виде php_curl.dll файла. Она может поддерживает такие протоколы, как HTTPS (SSL), FTP, FTPS, GOPHER, LDAP, DICT, TELNET и FILE. С помощью сURL можно выполнить практически любой удаленный запрос, а веб сервер может выступать полноценным клиентом использующим любой сервис основаный на HTTP протоколе.
Библиотека сURL - open source продукт с оригинальной MIT/X лицензией, позволяющей использовать этот пакет в любых: как коммерческих, так и некоммерческих целях, включать ее в свой дистрибутив (даже если он распространяется без открытого исходного кода).
Чтобы узнать, включена ли поддержка cURL в php, выполните "phpinfo()" и посмотрите в разделе cURL строку "cURL support". Если поддержка cURL в php "disabled", то Вы можете активировать библиотеку розкомментировав строку эту строку в php.ini (убрать впереди точку с запятой)
;extension=php_curl.dll
Поскольку cURL использует библиотеку openssl для SSL (HTTPS) соединений, Вам необходимо установить сервер с поддержкой SSL. В случае, если при инсталляции cURL библиотека openssl найдена не будет, произойдет установка cURL без поддержки SSL соединений. Для использования cURL при авторизации на различных сайтах (в том числе и на sape.ru), Вам придется передавать данные по протоколу HTTPS. Так что, проверьте (опять же с помощью функции "phpinfo()") включена ли на Вашем сервере поддержка "OpenSSL support". Если нет, значит переустанавливайте веб сервер. Apache c поддержкой ssl протокола Вы можете скачать здесь
.
Теперь рассмотрим небольшой пример использование cURL на php и авторизируемся на сайте sape.ru. Для этого посетим сайт sape.ru и одолжим у них кусочек кода, связанный с авторизацией на сайте.
Код мы получили. Давайте его детально разберем и посмотрим что у нас есть в наличие:
1. адрес (хост), которому отсылается запрос https://auth.sape.ru/login/
2. метод передачи
Post
3. передаются такие переменные act=login, r=http://www.sape.ru/,
username = имя пользователя (присваивается, когда пользователь вводит его в форму),
password = пароль пользователя
(присваивается, когда пользователь вводит его в форму).
Вот и все, довольно немного информации. попробуем на ее основе составить правильный запрос к сайту sape.ru.
<?php
$curl = curl_init(); // инициализируем cURL /*Дальше устанавливаем опции запроса в любом порядке*/
//Здесь устанавливаем URL к которому нужно обращаться curl_setopt($curl, CURLOPT_URL, 'https://auth.sape.ru/login/'); //Настойка опций cookie curl_setopt($curl, CURLOPT_COOKIEJAR, 'cook.txt');//сохранить куки в файл curl_setopt($curl, CURLOPT_COOKIEFILE, 'cook.txt');//считать куки из файла //устанавливаем наш вариат клиента (браузера) и вид ОС curl_setopt($curl, CURLOPT_USERAGENT, "Opera/10.00 (Windows NT 5.1; U; ru) Presto/2.2.0"); //Установите эту опцию в ненулевое значение, если вы хотите, чтобы PHP завершал работу скрыто, если возвращаемый HTTP-код имеет значение выше 300. По умолчанию страница возвращается нормально с игнорированием кода. curl_setopt($curl, CURLOPT_FAILONERROR, 1); //Устанавливаем значение referer - адрес последней активной страницы curl_setopt($curl, CURLOPT_REFERER, 'http://www.sape.ru/'); //Максимальное время в секундах, которое вы отводите для работы CURL-функций. curl_setopt($curl, CURLOPT_TIMEOUT, 3); curl_setopt($curl, CURLOPT_POST, 1); // устанавливаем метод POST //ответственный момент здесь мы передаем наши переменные
//замените значения your_name и your_pass на соответственные значения Вашей учетной записи curl_setopt($curl, CURLOPT_POSTFIELDS, 'r=http://www.sape.ru/&act=login&username=your_name&password=your_pass'); //Установите эту опцию в ненулевое значение, если вы хотите, чтобы шапка/header ответа включалась в вывод. curl_setopt($curl, CURLOPT_HEADER, 1); //Внимание, важный момент, сертификатов, естественно, у нас нет, так что все отключаем curl_setopt ($curl, CURLOPT_SSL_VERIFYPEER, 0);// не проверять SSL сертификат curl_setopt ($curl, CURLOPT_SSL_VERIFYHOST, 0);// не проверять Host SSL сертификата curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);// разрешаем редиректы
$result = curl_exec($curl); // выполняем запрос и записываем в переменную curl_close($curl); // заканчиваем работу curl echo $result; // собственно печатаем результат
?>
Вставьте этот код, в Ваш скрипт, предварительно поменяв значение переменных username и password, и вуаля, перед Вами должна открыться главная страница sape.ru, авторизированного пользователя.
Еще раз напомню, Ваш веб сервер должен быть собран с поддержкой ssl (он же https) протокола.
Более детальную информацию по опциям cURL Вы можете найти здесь .
Творческих Вам успехов.
хочу ваш скрипт использовать с воем коде, но также учесть авторство, как ваше имя написать?
Комментарий добавил: admin 10:57 22.04.09
напишите, как указано внизу "Семен Горбунков", если уж так хотите
Комментарий добавил: masha 12:49 23.04.09
ок
а почему у вас уведомления о том, что коммент добавлен, не приходят?
Комментарий добавил: admin 14:43 23.04.09
почему же, должны приходить, когда я отвечаю на комент: один ответ добавляется в коментарии к статье, другой отправляется на указаный почтовый ящик посетителя, если ящик указан правильный, то обычно доходят, если нет, то мне назад возращаются. Но возврата предыдущего ответа не было, может где-то зависло