Logowanie przez curl

0

Chciałbym napisać skrypt logujący się na tą stronę: http://clickad.way2traffic.com/auth/login przez curl.
Napisałem takie coś ale niestety nie działa:

<?php
$url = 'http://clickad.way2traffic.com/';
$login = "http://clickad.way2traffic.com/auth/login";
$PostFields = array(
        'username' => 'login',
        'password' => 'haslo',
        'x' => '59',
	'y' => '13',
        
        
);


$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $login);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_COOKIESESSION, 1);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($ch, CURLOPT_POSTFIELDS, $PostFields);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookie.txt');
curl_exec($ch);

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_COOKIESESSION, 1);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookie.txt');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_exec($ch);
curl_close($ch);
?>

Po uruchomieniu skryptu wyświetla się tylko pusta strona. Podejrzewam, że jest to spowodowane wysyłaniem błędnych parametrów x i y. Niestety nie wiem skąd one się biorą (są to liczby całkowite).

Może ktoś umie rozwiązać ten problem? ;)

1

Nie znam się na CURL ale spróbuj pierwsze GET http://clickad.way2traffic.com/auth/login (chyba jakies ciacha będą) a w POST ustaw Referer: http://clickad.way2traffic.com/auth/login (chyba jakos się da). No i nie wiem co będzie jak strona zwróci 301 lub 303 (redirect) czy tego nie trzeba jakoś ręcznie obsłużyć?

0

Dodałem referera ale nadal pusta strona... :/
curl_setopt($ch, CURLOPT_REFERER, 'http://clickad.way2traffic.com/auth/login');

1

A można jakoś sprawdzić czy odpowiedź serwera to 200?

EDIT//
U mnie Twój kod przy pierwszym curl_exec zwraca stronę logowania z komunikatem "Błędny login lub hasło." co jest oczywiste ponieważ nie mam prawidłowych danych logowania ale oznacza to że chyba jest dobrze. Więcej niestety bez poprawnych danych logowania nie sprawdzę.

0

Odpowiedź z serwera to 303.

1

x i y to parametry mówiące o tym, w którym miejscu przycisku go kliknąłeś. Jeśli klikniesz przycisk w jego górnym lewym rogu, wysłane zostanie około 0 i 0, im bardziej w prawo i w doł tym większe wartości x i y. Nie mają one znaczenia w tym przypadku.

Strona zawsze wyświetli się pusta, bo ustawiłeś returntransfer na 1, co oznacza, że curl_exec zwróci odpowiedź zamiast wyświetlić. Musisz odpowiedź przypisać do zmiennej i sobie wyświetlić.

Powodów niedziałania może być mnóstwo. Np. od razu wysyłasz dane do logowania - tymczasem skrypt może sprawdzać czy byłeś najpierw na stronie logowania i ustawić w sesji jakieś parametry. Jeśli od razu wysyłasz logowanie, to takich parametrów nie masz i dlatego nie działa.

Do tego włącz sobie FollowLocation na 1. I generalnie najpierw proponowałbym spróbować zalogować się curlem z linii poleceń, a dopiero potem skryptem w PHP. Z linii poleceń więcej zobaczysz, łatwiej będzie wybadać jak się logować.

1

Przepatrz jakoś zwrócone nagłówki czy nie ma Location i tamtą strone pobierz.

EDIT//
No właśnie czemu sobie nie wyrzucisz nawet przez echo curl_exec($ch); jaką faktycznie stronę zwraca? Przecież bez tego zawsze będziesz widział pustą stronę.

0

Tak naprawdę skrypt działał tylko brakowało echo ;) ehh...

1 użytkowników online, w tym zalogowanych: 0, gości: 1