Pokaż wyniki 1 do 2 z 2

Temat: [PHP][cURL] Obejście klikania flashowego przycisku

  1. #1
    Zarejestrowany
    Mar 2010
    Postów
    1

    Domyślnie [PHP][cURL] Obejście klikania flashowego przycisku

    Witam. Mam sprawę związaną z pewną nietypową, dziwaczną wręcz sprawą. Mianowicie chodzi o konkurs Projekt Assasin. W konkursie tym chodzi o to, że każdy zarejestrowany użytkownik otrzymuje swój własny, unikalny link. Mój wygląda tak:

    http://www.projektassassin.pl/5204.html

    (z powodu słabego serwera wejście na tę stronę często owocuje komunikatem o błędzie 503, trzeba kilka razy pod rząd spróbować)

    Każde wejście na niego naliczało użytkownikowi określoną ilość punktów. Dodatkowo fakt, że zabezpieczenia tego konkursu są niemal żadne, pozwalał wszystkim na naginanie zasad. Jedynym ograniczeniem były Ciasteczka w przeglądarce, ale wystarczyło wyłączyć ich obsługę, by każde wejście na link dostarczało kolejnych punktów. Teraz tak nie ma, organizatorzy niedawno wprowadzili małe zabezpieczenie w postaci potwierdzania za pomocą dodatkowego przycisku we flashowej animacji. Wystarczy wejść na powyższy odnośnik i zobaczyć, że po kilkusekundowej animacji pojawiają się dwa przyciski, w tym jeden "Potwierdź"; dopiero jego kliknięcie nalicza punkty.

    Nie będę ukrywał, że obecnie zajmuję pierwszą pozycję i zacząłem się obawiać jednego z użytkowników. Jako jedyny znalazł metodę na poradzenie sobie z koniecznością klikania w przycisk, dzięki czemu od kilku dni zyskuje ogromne ilości punktów (podczas gdy cała reszta stawki tak naprawdę stoi w miejscu). Za 1-2 dni ów użytkownik dogoni mnie, do czego nie chciałbym dopuścić. Konkurs kończy się za 8 dni, czasu więc jest wbrew pozorom dużo i wiele może się wydarzyć. Zależy mi tylko na tym, by obronić swoją pozycję i nic więcej.


    Ważna jest tutaj kwestia uczciwości. Otóż, wbrew pozorom, wpływanie na ilość punktów w tym konkursie organizatorów... nie obchodzi. Na początku akcji wielu użytkowników zaczęło zdobywać znacznie więcej punktów, niż inni. Dziwiło to tę resztę, zaczęto więc pisać listy do organizatora z krytycznymi uwagami (ja też pisałem). Po jakimś czasie odpowiedzieli mówiąc, że niczego podejrzanego nie zauważyli i najwyraźniej wszystko odbywa się uczciwie. Napisali to mając tak ewidentne dowody nagięć, jak fake'owe konta (po poleceniu komuś konkursu otrzymuje się dodatkowe punkty; sporo osób polecało stronę samemu sobie, rejestrując się przy użyciu tymczasowych kont pocztowych)! W regulaminie istnieje zapis o ostrzeżeniu dla podejrzanej osoby i usunięciu jej profilu w razie potrzeby. Zaskakujące, że jeszcze nikomu nie usunięto konta. Nawet teraz, gdy jeden, jedyny użytkownik, stosuje metodę o wątpliwej uczciwości, a organizatorzy nic sobie z tego nie robią, można z pełną szczerością uznać ten konkurs za jeden wielki cyrk.

    Zgodnie z powyższym kwestia uczciwości w ramach omawianego konkursu traci rację bytu. Bo co to za konkurs, w którym jest jawne przyzwolenie na cwaniackie praktyki?


    Poniżej przedstawiam pewien skrypt korzystający z bibliotek cURL, do lekkiego zwiększania ilości punktów. Chciałbym go zmodyfikować w celu dostosowania do zaistniałej sytuacji. Tylko że moja wiedza jest niewystarczająca, dlatego proszę o pomoc.

    Kod php:
    <?php
    $numer
    ="5204"//numer z linka
    $ile="10"//ile razy ma zostac trafiony
    $time_start=time();
    function 
    getsite($url,$proxy)
    {
    $rand=rand();
    $ch=curl_init();
    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_TIMEOUTCURLTIME);
    curl_setopt($ch,CURLOPT_CONNECTTIMEOUTCURLTIME);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch,CURLOPT_HEADER,1);
    curl_setopt($ch,CURLOPT_REFERER,'http://www.projektassassin.pl/');
    curl_setopt($chCURLOPT_USERAGENT"$rand Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
    $body=curl_exec($ch);
    curl_close($ch);
    return 
    $body;
    }
    for (
    $i 0$i $ile$ixi++) {
    echo
    "con: ";
    $b=getsite("http://www.projektassassin.pl/$numer.html",$file[$ix]);
    $message="";
    if (
    stristr($b"HTTP/1.0 503 Service Unavailable")) {$message="FAIL";}
    if (
    stristr($b"HTTP/1.1 503 Service Unavailable")) {$message="FAIL";}
    if (
    stristr($b"<title>Konkurs - Projekt Assassin")) {$message="OK!";}
    $x=strlen($b);
    echo
    "$ixi : $message : $x
    "
    ;
    //licznik
    if ($message=="OK!"){$global++;$i++;}
    }
    $time_end=time();
    $time=$time_end-$time_start;
    $skutecznosc=round($i/$ixi*100,2);
    echo
    "
    ------------------------------
    lacznie dodano : 
    $global"."00 punktow, czas: $time"."s. skutecznosc: $skutecznosc"."%
    "
    ;
    ?>

    Zainstalowałem rozszerzenie do Firefoxa o nazwie Live HTTP headers. Wszedłem na własną, unikalną stronę, kliknąłem przycisk potwierdzający i sprawdziłem, co zostało zarejestrowane po kliknięciu. W zakładce "Headers" przeglądarkowego rozszerzenia pojawiają się następujące dane:

    Kod:
    http://www.projektassassin.pl/index.php?dzial=potwierdz_pulapke
    
    POST /index.php?dzial=potwierdz_pulapke HTTP/1.1
    Host: www.projektassassin.pl
    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; pl; rv:1.9.2) Gecko/20100115 Firefox/3.6
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: pl
    Accept-Encoding: gzip,deflate
    Accept-Charset: ISO-8859-2,utf-8;q=0.7,*;q=0.7
    Keep-Alive: 115
    Connection: keep-alive
    Referer: http://www.projektassassin.pl/flash/zostales_trafiony2.swf
    Content-type: application/x-www-form-urlencoded
    Content-length: 33
    
    trap%5Fid=23653999&user%5Fid=5204
    
    HTTP/1.1 200 OK
    Server: IdeaWebServer/v0.60
    Date: Mon, 01 Mar 2010 21:28:51 GMT
    X-Powered-By: PHP/5.2.6
    Set-Cookie: PHPSESSID=40d97f43f2952582554f83ce6780b158; path=/
    Expires: Thu, 19 Nov 1981 08:52:00 GMT
    Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
    Pragma: no-cache
    Content-Type: text/html
    Transfer-Encoding: chunked
    Connection: Keep-Alive
    Jak się domyślam, zapis, na który mam zwrócić uwagę, to "trap%5Fid=23653999&user%5Fid=5204". Teraz chyba wystarczy 'zsyntetyzować' z tego odnośnik do potwierdzania (dodać identyfikator do znajdującego się na górze odnośnika z ciągiem 'potwierdz_pulapke'?). Nie wiem jednak, czy dobrze myślę i jak trzeba by było to zrobić.

    Przy okazji pojawiła mi się myśl, że jeśli mając takie dane jak te powyższe można uzyskać czysty odnośnik do potwierdzania, na który można wejść spod przeglądarki, to nie będę potrzebował skryptu. Wystarczy otworzyć kilka razy tę samą stronkę w kilku kartach przeglądarki i zainicjować automatyczne odświeżanie tej strony. A punkty będą swobodnie lecieć. To by mi całkowicie wystarczyło. Mam nadzieję, że da się zrobić. Jeśli nie, to dalej proszę o pomoc z modyfikowaniem kodu.

  2. #2
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    Powiedzialbym ze wrecz banalne - rozpracowanie calosci zajelo 1 request i 2 minuty czasu... ale nie pomagamy w oszukiwaniu w grach, zwlaszcza jesli do wygrania sa nagrody materialne.

    watek zamykam
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj

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