PROGRAMMING

Nasza klasa - prosty bot, część 1

#php

Wszystkie znajdujące się tutaj informacje są podane tylko i wyłącznie w celach edukacyjnych. Nie odpowiadam za szkody wywołane przez złe ich wykorzystanie.

Czasami gdy mi się nudzi piszę jakieś bezsensowne rzeczy. Takim wytworem jest właśnie ten bot. Kolejny bot do portali społecznościowych. Nie jest to profesjonalne programistyczne dzieło. W większości przypadków używane jest to tylko przeze mnie więc nie dbam o to jak to jest napisane. Wystaczy, że działa. Liczy się tutaj szybkość wykonania ;-)

Co będzie potrzebne? System linux z powłoką bash, curl, php.

Co bot będzie robił? Na początek.. odwiedział wszystkich na nk ;-)

Kod wygląda następująco:

<?php
    $login = 'login';
    $password = 'password';
    $agent = 'Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.3) Gecko/20100408 Gentoo Firefox/3.6.3';
    $connect = exec('/usr/local/bin/curl -s --dump-header headers -A "'.$agent.'" -d "login='.$login.'&password='.$password.'&manual=0" http://nasza-klasa.pl/login > tmp1');
    $start = (int)file_get_contents('start');
    $count = 0;
    while(1)
    {
        $time = rand(1, 11);
        echo "Sleep $time seconds..\n";
        sleep($time);
        $get_person = exec('/usr/local/bin/curl -s -b headers -A "'.$agent.'" http://nasza-klasa.pl/profile/'.$start.' > tmp2');
        $start++;
        exec("echo $start > start");
        $count++;
        if($count == 700)
        {
            echo "Break.. 1000 seconds..\n";
            sleep(1000);
            $connect = exec('/usr/local/bin/curl -s --dump-header headers -A "'.$agent.'" -d "login='.$login.'&password='.$password.'&manual=0" http://nasza-klasa.pl/login > tmp1');
            $count = 0;
        }
    }
?>

Teraz trochę wyjaśnienia. Trzecia i czwarta linia to oczywiście login i hasło do serwisu. W piątej linii należy wpisać najlepiej UserAgent jaki zwraca Twoja przeglądarka aby nie było podejrzeń ;-) Linia numer 7 - logujemy się do nk i zwrócone informacje wpisujemy do pliku tmp1. W dziewiątej linii pobieramy zawartość pliku start, w którym dalej będziemy zapisywać numer profilu, na którym bot zakończył odwiedzanie. Zmienna $count określa ilość wywołań. Profili na nk jest aktualnie bardzo dużo oraz są ponumerowane są liczbami naturalnymi więc nie stosuję tutaj żadnego sprawdzania czy profil istnieje. Jak widać zastosowałem pętlę while. Linia 14 - generujemy losowy czas z przedziału od 1 – 11. Tyle sekund bot będzie czekał między kolejnymi wejściami na profil - linia 16. W 17 linii odwiedzamy profil i zwrócone informacje zapisujemy do tmp2. Linia 18 i 19 - zwiększamy o jeden zmienną $start aby kolejne wywołanie dotyczyło następnego profilu oraz zapisujemy do pliku start. Następnie od linii 21 zaczyna się mały warunek zabezpieczający przed szybkim czasowym zablokowaniem konta. Jak widać za każdym wywołaniem profilu zwiększamy zmienną $count. Jeżeli zmienna $count dojdzie do wartości 700 bot robi pauzę w działaniu na 1000 sekund. Po tym czasie dla pewności jeszcze raz się logujemy. I tak w kółko.. ;-)

W następnym wpisie opiszę jak można zapraszać osoby i dodawać wyjątki np. dla odpowiednich miast.

Podanego kodu nię będę uaktualniał ani poprawiał. Była to moja chwilowa zachcianka zabawą w to i aktualnie bot nie jest w użyciu. Może nawet już nie działać. ;-)