Nasza-klasa – automatyczne dodawanie znajomych

Drocząc się ostatnio z moją narzeczoną (tak tak, już niedługo ślub :) ), o znajomych na naszej klasie postanowiłem napisać automat do zapraszania znajomych na naszej klasy. Okazało się to dość ciekawym zadaniem oraz pokazało mi jak łatwo jest zdobyć popularność na tym serwisie i innych :)

Jaki jest cel?

Cel jest czysto edukacyjny i sprawdzałem go na sobie i moich znajomych gotowych do przeprowadzenia testu. Kod jaki udostępniam również służy do celów edukacyjnych, czyli jak można wykorzystać php’a do innych celów niż „hello world”.

Jak to działa?

Skrypcik jest prosty, działa tak samo jak człowiek, który chce zaprosić znajomych :). Otóż działa to tak:

      1. Logowanie
      2. Wejście na profil wybranej osoby
      3. Spisanie wszystkich jej znajomych
      4. Zaproszenie ich wszystkich :)

Jak widać wszystko ładnie i prosto. :)

Czy to działa?

Jak by napisać rozbudowany system do obsługi serwisów społecznościowych, z obsługą błędów, wyjątków itp itp – to by działało, w tym stanie jakim ja prezentuje, jest tylko skryptem do analizy. Każdy średnio zaawansowany programista php może spokojnie coś takiego napisać, więc również nie ujawniam metody hakowania NK.Dodatkowo serwis Nasza-klasa wykrywa takie akcje i blokuje login na x sekund, więc taki system musiałby uwzględniać takie blokady. No ale dobra przejdźmy do konkretów.

Skrypt

Do działania potrzeba biblioteki snoopy http://sourceforge.net/projects/snoopy/, oraz phpQuery http://code.google.com/p/phpquery/. Polecam uruchamiać w terminalu, z limi poleceń, ponieważ wtedy widać logi na bierząco. Aha skrypt nie będzie działać jak powinien z założenia, bo na szczęście NK blokuje takie akcje, więc proszę nie mieć nadziei że wszystko zadziała jak powinno :)

Jest to okrojona wersja mojego skryptu, nawet nie wiem czy działa, bo po okrojeniu nie sprawdziłem, a co :). Umieszczam ten skrypt tylko i wyłaczenie w celach edukacyjnych :).

Źródło

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<?
/**
 * nasza-klasa - zapraszacz
 *
 * @author Mateusz Żeromski mateusz/zeromski.com.pl
 * @link http://blog.zeromski.com.pl/
 * @link http://sourceforge.net/projects/snoopy/
 * @link http://code.google.com/p/phpquery/
 */

set_time_limit(0);


//definiujemy dwie zmienne base i id
define('BASE', 'http://nasza-klasa.pl/');
define('ID', '00000'); // tutaj wpisujemy id znajomego
//dane do logowania
define('LOGIN', 'LOGIN');
define('PASSWORD', 'HASLO');

//ladujemy biblioteki
include "lib/Snoopy.class.php";
require('lib/phpQuery.php');


//logujemy się
$submit_url = BASE."login";
$snoopy = new Snoopy;
$submit_url = BASE."login";
$submit_vars["login"] = LOGIN;
$submit_vars["password"] = PASSWORD;
$snoopy->submit($submit_url,$submit_vars);

//sciagamy strone ze znajomymi
//WERSJA OKROJONA - sciaga tylko pierwszą stronę :)
$snoopy->fetch(BASE.'friends/'.ID);

$page = $snoopy -> results;

//tworzymy tablice ze znajomymi
$friends = array();
phpQuery::newDocument($page);
foreach(pq('.avatar_photo a') as $link)
    $friends[] =  trim(pq($link) -> attr('href'));



//pętla zapraszająca
// wersja okrojona - zapraszamy osoby tylko z pierwszej strony znajomych
$all = count($friends);
$i=0;
foreach($friends as $friend){
    $i++;
    //sciagamy strone profilu

    $snoopy->fetch(BASE.$friend);
    $html = $snoopy -> results;

    //ustawioamy parser
    phpQuery::newDocument($html);
   
    //wynajdujemy zmienne "tokenowe"
    //na NK zaprasza sie znajomych formularzem :)
    $name = trim(pq('#profile_top .avatar_name') -> html());
    $token = pq('.profile_buttons form') -> find('input@[name=t]') -> val();
    $token = trim($token);
    $action = BASE.trim(pq('.profile_buttons form') -> attr('action'));
   
    //wysylamy zaporszenie
    $submit_url = $action;
    $submit_vars = array();
    $submit_vars["t"] = $token;
    $snoopy->submit($submit_url,$submit_vars);
   

    //wypisujemy log
    $progress = round($i/$all,4)*100;
    $progress .= "%\t $i z $all \t zostalo ".($all-$i);
    $progress  .= "\tzaprosiłem $name\n";

    echo $progress;

}
?>

Podsumowanie

No cóż tu można napisać – takie rozwiązanie daje ogromne możliwości, lecz jak dla mnie działa takiego są nieetyczne :). Ale mówiąc od strony programistycznej, nawet jak by w jakims serwisie był token obrazkowy, służący do zapraszania (na NK jest normalnie wpisany w kodzie), to łatwo można zrobić system, że ktoś(człowiek) widzi tylko token rozczytuje do, wpisuje do systemu, a system zaprasza delikwenta do którego był przypisany ten token. Odpowiednio programując system można bardzo łatwo symulować zachowanie człowieka, tak dokładnie że żaden system nie rozpozna różnicy :).

Idąc dalej, można wykonać sieć serwerów która będzie sama tworzyła konta i zapraszała ludzi do na utworzone konta. Tak dokładnie wygląda spam, itp. Nikomu nie polecam takie działania, bo za SPAM można otrzymać karę 5 tys zł (od jednej osoby).

Dobra to koniec :), aha i proszę pamiętać skąd i od kogo macie ten skrypt :)

 

Tagi: , , , ,

Komentarze: 19 do “Nasza-klasa – automatyczne dodawanie znajomych”

  1. 1 Agent Nieruchomości

    Idąc dalej, można wykonać sieć serwerów która będzie sama tworzyła konta i zapraszała ludzi do na utworzone konta. Tak dokładnie wygląda spam, itp. Nikomu nie polecam takie działania, bo za SPAM można otrzymać karę 5 tys zł (od jednej osoby).
    dobrze, ze to doczytalem… ;-)))

  2. 2 ja

    A

  3. 3 Anonim

    sroka bozena

  4. 4 Anonim

    To nie SPAM, tylko „przeglądarka internetowa” z funkcją automatycznego zapraszania znajomych.

  5. 5 Curl

    A nie prościej użyć CURLa?

  6. 6 amos1411

    Witam,

    Nie mam pojecia o programowaniu. Ile bys sobie zazyczyl za przygotowanie czegos podobnego z tym ze musoalo by zaprosic wszystkich znajomych danej osoby. Potrzebuje uzyc cos takiego w celu nieszkodzacym spolecznosci.

    Dzieki

  7. 7 ds

    Ty huju zajebany spamerze zajebana mac przestan takie programy robic dziecko neostrady

  8. 8 Mateusz Żeromski

    @amos1411 – mateusz@zeromski.com.pl, skrypt raczej nie jest na sprzedaż :)

    oj chłopie @ds

    Za taki tekst mogę Ciebie pozwać do sądu i miałbyś tylko kłopot. W każdym wpisie zostawiasz IP, bez problemu można dotrzeć do Ciebie, wszystko jest wszędzie logowane – u mnie na serwerze, w tpsa i u ciebie na kompie, ehhh

    Zresztą zobacz na swój IP
    Autor : ds (IP: 83.29.12.132 , bnw132.neoplus.adsl.tpnet.pl)

    Czyżbyś to ty właśnie był dzieckiem neo? Jeżeli jesteś taki jurny to pochwal się jak się nazywasz i co robisz. A jak nie masz odwagi się podpisać pod swoimi myślami to spadaj na fotka.pl czy inne dziadostwo, ten blog nie jest dla Ciebie.

  9. 9 sceptic

    Techniczny geniusz, ale Ci ludzie na podstawie dotychczasowych doświadczeń będą sobie wyobrażać, że jakiś człowiek ich kliknął i oczekiwać, że im wszystkim ręcznie odpowiesz na losowe pytania w stylu „co słychać”. Szybko przeminie tryumf towarzyski ;> Taki spam to tylko z „kup wiagrę” ma sens, a nie w relacjach towarzyskich.

  10. 10 sceptic

    Równie dobrze możesz paralizatorem w tłocznym pociągu metra ludzi kopać i postulować fakt, że nawiązałeś z nimi kontakt. ;>

  11. 11 Mateusz Żeromski

    @sceptic – zgadzam się z Tobą dlatego ja nie mam już konta na NK. Jedyna społeczność internetowa w której biorę udział to flaker – ale tylko ze względu na informacje a nie znajomości, zdjęcia i inne takie takie :)

  12. 12 Ja

    jak to mam uruchomic?
    wrzucic na serwer i wywolac sesje czy jak?

  13. 13 Damczyn

    Siemka, nie znam sie na programowaniu, nie wiem w ogóle gdzie to powklejać, ten tekst i pobrane pliki, dlatego odnosze sie do was z prośbą o jak najlepsze opisanie co gdzie jak ^^ klawisz po klawiszu ;)

    Używam opere 9.5 ;)

  14. 14 Krzysiek

    Mateusz – weź no napisz skrypt co chociaż wykropkuje takie słowa żeby takie Ds-ie , co im coś nie poszło nie zaśmiecały bloga ! Oni są z innego podwórka!( zresztą podobno powinno być Ch…)

    Nk można nie lubić , ale sie sprawdza – sam znalazłem paru ludzi co ich szukałem 20 lat.
    ale swoją drogą przydała by się funkcja – Napisz do wszystkich znajomych.
    Próbowałem napisać taki skrypt , ale sie nieudało!

    Krzysiek z dysortografią

  15. 15 Sebastian

    Niezły pomysł.
    Niezłe komentarze swoją drogą :D

    Pozdrawiam

  16. 16 jurecki

    A ja takie coś napisałem w skrypcie shellowym używając wget – według mnie prościej i przejrzyściej.
    Teraz pracuję nad skryptem, który ściąga wszystkich znajomych i ich znajomych itd. i tworzy w bazie danych sieć powiązań pomiędzy osobami.

  17. 17 Prawko

    Dobry pomysł, ale w złych rękach może posłużyć np spamerowi.
    Pozdrawiam

  18. 18 Sebastian

    Coś nie działa, wywalało błąd na ladowaniu snoopy i phpquery, wiec je sciagnolem, wrzucilem do jednego katalogu, w skrypcie przy ladowniu usunolem przedroski lib/ zauploadowalem, nie wywala bledu, ale rowniez nic sie nie dzieje, any one help ?

    Pozdrawiam,
    Sebastian

  19. 19 Mateusz Żeromski

    Witam

    Komentarze w tym wpisie zostały zablokowane.

    Pozdrawiam
    Mateusz



Wersja mobilna