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.