wtorek, 15 lutego 2011

cURL- słów kilka

O jednej z ciekawych bibliotek, którą można wykorzystać np. do pisania botów :)


Jak mówi ciocia Wikipedia:

cURL – biblioteka programistyczna, napisana w języku C, z interfejsami dla ponad 30 innych języków, która umożliwia wysyłanie zapytań http, w tym pobieranie z serwerów stron i plików, a także wysyłanie treści formularzy. Ułatwia tworzenie aplikacji korzystających z protokołu HTTP. Biblioteka cURL posiada ogromne możliwości, jej podstawowym zastosowaniem jest tworzenie sprzęgów w złożonych systemach opartych o technologie Webowe.
cURL obsługuje m.in. HTTP, HTTPS, FTP, SFTP, FTPS, TFTP, SCP, Telnet, certyfikaty HTTPS, ciasteczka, upload FTP.
Bla, bla. bla...Do czego służy cURL?
Głównie (są inne zastosowania) do pobrania kodu html innej strony, czyli po prostu jej treści. Każdy skrypt z wykorzystaniem cURLa musi zaczynać się od uchwytu:
$uchwyt = curl_init( 'http://adresstrony.pl/' );

Następnie należałoby się "przedstawić" kim jesteśmy :) Ta opcja pozwala zmylić z jakiej przeglądarki korzystamy np. dla firefoxa należy wpisać:
curl_setopt( $uchwyt, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3' );

Strona, z której przybyliśmy:
curl_setopt( $uchwyt, CURLOPT_REFERER, 'http://stronazktorejprzybylismy.pl' );

Chcemy otrzymać stronę:
curl_setopt( $uchwyt, CURLOPT_RETURNTRANSFER, 1 );

Przypisujemy pobraną stronę do zmiennej:
$page = curl_exec($uchwyt);
 

Zamykamy uchwyt:
curl_close($uchwyt);

Podsumowując, aby pobrać treść jakiejś strony, kod wygląda następująco:
$uchwyt = curl_init( 'http://adresstrony.pl/' );
curl_setopt( $uchwyt, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3' );
curl_setopt( $uchwyt, CURLOPT_REFERER, 'http://stronazktorejprzybylismy.pl' );
curl_setopt( $uchwyt, CURLOPT_RETURNTRANSFER, 1 );
$page = curl_exec($uchwyt);
curl_close($uchwyt);

Co zrobić kiedy strona, którą chcemy pobrać wymaga bycia zalogowanym?
Z pomocą przychodzą nam następujące opcje cURLa.

Dotyczące cookiesów:
curl_setopt( $uchwyt, CURLOPT_COOKIEFILE, 'cookie.txt' );
curl_setopt( $uchwyt, CURLOPT_COOKIEJAR, 'cookie.txt' );
curl_setopt( $uchwyt, CURLOPT_COOKIE, 'cookie.txt');

Przesyłanie zmiennych(np. loginu i hasła) przez post:
curl_setopt( $uchwyt, CURLOPT_POST, 1 );
curl_setopt( $uchwyt, CURLOPT_POSTFIELDS, 'login='.$login.'&haslo='.$haslo );

Podążanie za przekierowaniem (po zalogowaniu na daną stronę najczęściej jesteśmy przekierowywani dalej):
curl_setopt($uchwyt, CURLOPT_FOLLOWLOCATION, true);

Przykład skryptu, który pobiera stronę po zalogowaniu na nk.
$cookie = 'cookie.txt';
$loginUrl = 'http://nk.pl/login';
$login = 'login';
$password = 'haslo';
$useragent = 'Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3';
/////////////////////////////////////////////////////////////
$ch = curl_init( $loginUrl );
curl_setopt( $ch, CURLOPT_COOKIEFILE, $cookie );
curl_setopt( $ch, CURLOPT_COOKIEJAR, $cookie );
curl_setopt( $ch, CURLOPT_COOKIE, $cookie);
curl_setopt( $ch, CURLOPT_USERAGENT, $useragent );
curl_setopt( $ch, CURLOPT_REFERER, 'http://nk.pl/' );
curl_setopt( $ch, CURLOPT_POST, 1 );
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt( $ch, CURLOPT_POSTFIELDS, 'login='.$login.'&password='.$password );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
$page = curl_exec($ch);
curl_close($ch);


Przedstawiłem tutaj jedną z metod wykorzystania cURLa - pobranie strony. NIe opisałem wszystkich jego funkcji. Więcej o tej bibliotece możecie znaleźć np. tutaj - KLIK

Brak komentarzy:

Prześlij komentarz