Automatyczne przeglądanie kont na naszej klasie

Ostatnio zapragnąłem trochę posurfować po największym portalu społecznościowym w Polsce jakim jest Nasza-Klasa. Poniżej prościutki kod odwiedzający losowe konta.

Deklarujemy zmienne do logowania, plik przetrzymujący ciasteczka i nazwę przeglądarki z jaką będzie się przedstawiał nasz automat.

$cookie = 'cookie.txt';

$loginUrl = 'http://nasza-klasa.pl/login';
$login = 'login';
$password = 'pass';
$useragent = 'Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3';

Logujemy się na konto n-k:

$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_POST, true );
curl_setopt( $ch, CURLOPT_POSTFIELDS, 'login='.$login.'&password='.$password );
curl_setopt( $ch, CURLOPT_REFERER, 'http://nasza-klasa.pl/' );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1);
$afterLogin = curl_exec($ch);
curl_close($ch);

Wywołujemy adresy losowych kont:

for( $i=1; $i<=100; $i++ ) {
	$profileID = rand( 1000, 15000000 ); // rand
	
	$ch = curl_init( 'http://nasza-klasa.pl/profile/'.$profileID );
	curl_setopt( $ch, CURLOPT_COOKIEJAR, $cookie);
	curl_setopt( $ch, CURLOPT_COOKIEFILE, $cookie);
	curl_setopt( $ch, CURLOPT_COOKIE, $cookie);
	curl_setopt( $ch, CURLOPT_USERAGENT, $useragent );
	curl_setopt( $ch, CURLOPT_HEADER, 0);
	curl_setopt( $ch, CURLOPT_REFERER, 'http://nasza-klasa.pl/' );
	curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
        curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1);
	$profile = curl_exec($ch);
	curl_close($ch);
	
	if( !preg_match( '/Nie znaleziono strony \(404\)/', $profile ) ) {
		// konto istnieje
		// z danymi konta możemy zrobić co chcemy...
	} else {
		// nie ma konta takiego konta
	}
}

Ustawiamy w contab'ie wywołanie skryptu co 10 minut:

*/10 * * * * curl -s -o /dev/null PATH_TO_SCRIPT

Z uwagi na bardzo dużą liczbę kont prawdopodobieństwo odwiedzenia w niedługim czasie 2 razy tego samego konta jest stosunkowo niewielkie.

Jednak jeżeli chcemy odwiedzić każde konto jedynie raz to należy zmodyfikować skrypt tak aby przy każdym wywołaniu iterował po kolejnej setce kont. Informacje o ID od którego mamy zacząć możemy zapisywać w bazie danych lub w pliku.

23 myśli na temat “Automatyczne przeglądanie kont na naszej klasie”

  1. Niby wszystko ok, ale jakoś nie chce zadziałać;)

    Wklejam wszystko do jednego pliku (curl.php) i gdy go odpalam z serwera to wyswietla sie tylko masa „Przekierowanie”, w cookie.txt nic sie nie zapisuje.

  2. Gdy debugujesz zmienną $afterLogin to wyświetla “Przekierowanie” gdyż po zalogowaniu do n-k jest automatyczne przekierowanie ze strony n-k.pl/login na n-k/

    Poniżej skryptu logowania wstaw kod wyświetlający jakiś profil (listing 3 na tej stronie) i zdebuguj zmienną $profile – powinien wyświetlić się profil odwiedzanej osoby.

    Zwróć uwagę na prawy górny róg powinieneś zobaczyć „Jesteś zalogowany jako XXX” – gdzie XXX to login konta, które wykorzystujesz do logowania – to będzie oznaczać, że skrypt działa poprawnie.

  3. Witam
    Skrypt jest genialnie prosty, ale jest niestety jeden problem: Nasza klasa sie flooduje. Przy tej ilosci odwiedzin nalezaloby korzystac z gamy roznych kont… Ktore byłyby dobierane w odpowiedniej kolejności przy każdym uruchomieniu skryptu. No chyba, ze masz inny pomysl na rozwiazanie tego problemu ;)

  4. Ok już wiem jak to ominąć: Trzeba zastosować funkcję usleep i dokładniej przetestować tak aby skrypt się odpalał i serwer naszej klasy działał ;) Opóźnienie w kilku milisekundach powinno bardziej przyjaźnie przeglądać naszą klasę.

  5. Kolejna sprawa, którą myślę warto poruszyć mianowicie: http://l.interia.pl/eyg – czyli kwestia legalności. Czy ktoś orientuje się, czy takie „łażenie” po profilach i zostawianie informacji o pojawianiu się na profilu w rubryce „gość”, w momencie kiedy mam linki partnerskie na swoim profilu – czy jest to również spam? Druga sprawa: Czy możliwe są jakieś sankcje ze strony NK za rzekome obciążenie systemu?

  6. Hej

    Hmm… ciekawe jak się zakończy ta sprawa z tymi 16-latkami…
    Jak zauważyłeś powyższy skrypt niczego nie wysyła (nie spamuje) a jedynie odwiedza konta (konto wyświetla się w ostatnio odwiedzonych). Wydaje mi się że to za mało aby takie konto podpiąć pod spam… chociaż muszę przyznać, że n-k zablokowała mi już dwa konta tego typu.
    Pierwsze konto za jego reklamową działalność (fakt jest to niezgodne z regulaminem n-k – to się tyczy Twojej uwagi dot linków PP – konta reklamowe n-k blokuje), blokadę drugiego dopiero wyjaśniam.

    Co do sankcji za obciążenie serwera to każdy użytkownik go obciąża, jeżeli nie przesadzi się z liczbą ‚wywoływanych kont na godzinę’ to nie widzę problemu.

  7. mozecie dokladniej opisać co zrobić abym mogl przegladac automatycznie konta bo sie na tym zbytnio nie znam.jesli dobrze zrozumialem ze mam utworzyc plik .php w ktorym mam to umiescić.co dalej z tym plikiem? otworzyc go firefoxem i juz?

  8. Hmmm ja na przyklad nie rozumiem jak ustawic wywloanie skyptu co 10 min. Wywala mi ,ze serwery sa przeciazone.

  9. mam Twoj kod:

    $cookie = ‚cookies.txt’;
    $loginUrl = ‚http://nasza-klasa.pl/login’;
    $login = ‚xxx’;
    $password = ‚xxx’;
    $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_POST, true );
    curl_setopt( $ch, CURLOPT_POSTFIELDS, ‚login=’.$login.’&password=’.$password );
    curl_setopt( $ch, CURLOPT_REFERER, ‚http://nasza-klasa.pl/’ );
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
    $afterLogin = curl_exec($ch);
    curl_close($ch);

    $profileID = rand( 1000, 15000000 ); // rand
    echo $profileID; echo „”;

    $ch = curl_init( ‚http://nasza-klasa.pl/profile/’.$profileID );
    curl_setopt( $ch, CURLOPT_COOKIEJAR, $cookie);
    curl_setopt( $ch, CURLOPT_COOKIEFILE, $cookie);
    curl_setopt( $ch, CURLOPT_COOKIE, $cookie);
    curl_setopt( $ch, CURLOPT_USERAGENT, $useragent );
    curl_setopt( $ch, CURLOPT_HEADER, 0);
    curl_setopt( $ch, CURLOPT_REFERER, ‚http://nasza-klasa.pl/’ );
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
    $profile = curl_exec($ch);
    curl_close($ch);

    if( !preg_match( ‚/Nie znaleziono strony \(404\)/’, $profile ) ) {
    echo $profile;
    } else {
    echo „Blad”;
    }
    echo „”;

    i jedyne co wyświetla to:

    4856679
    Przekierowanie <- http://nasza-klasa.pl/login?target=%2Fprofile%2F4856679

    a gdy wejdze na nk to nie jestem zalogowy, wiesz może na czym polega problem?

  10. @Tomek:
    1. Sprawdz czy danymi (log/pass) mozesz sie zalogowac na stronie n-k.
    2. Przed curl_exec($ch) dodaj linie curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1); (dodalem to tez w moim kodzie).
    3. Poprzez echo $afterLogin; mozesz sprawdzic czy skrypt sie zalogowal.
    U mnie skrypt dziala bez zarzutu.

  11. Nk zmieniła niedawno stronę logowania i dotychczasowy nk bot już nie działa. Poprawiona wersję można znależć na NASZA KLASA BOT 2 + instrukcja obsługi bota zapraszajacego. Pozdro

  12. Do zaoferowania mam dziś darmowy program wykonany w technologii PHP służący do masowego zapraszania znajomych na Naszą-Klasę. Ilość i zakres zaproszonych osób zależy całkowicie od Ciebie!
    Ps:Aby program zadziałał należy wyłaczyć NKTalk i posiadać IE 5,6 lub 7
    http://bezlimit.pl/viewtopic.php?f=51&t=151

  13. Jak sprawdzić kto ma jaki login do nk? :) czy w ogóle to jest możliwe w jakiś w miarę prosty sposób?

Dodaj komentarz

Twój adres email nie zostanie opublikowany.