Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: polecane linki
Forum PHP.pl > Inne > Hydepark
nospor
Tak się ostatnio zastanawiałem na jakiej zasadzie działają polecane linki. Znaczy, że ktoś daje linka:
http://domena.pl/?referer=34
gdzie referer to id osoby, na której konto zostaje nabity punkcik za klikniecie w ten link.
No i jak się tu zabezpieczyć przed tym, że ktoś będzie klikał ciągle w ten link?
No na pierwszy ogień idzie IP - zapamietuje IP skąd kliknięto i nie liczę wiecej punktów z tego IP lub też nie liczę przez pewien okres, np 2 dni.
No ale IP można mieć inne, np. neostrada.
No to walimi ciacho - ciacho można usunąć.
No to sprawdzamy dane przegladarki, systemu, i na tej podstawie określamy pseudounikalność.

Coś jeszcze? Czy takie systemy linków opierają się tylko na analizie IP czy może jednak kombinują bardziej?
ucho
CTR(Click-Through-Ratio) - jak ktoś ma wyższy współczynnik niż średnia przyglądasz się adresom IP czy nazwą hostów, sprawdzasz czy nie ma na stronie nabijających odwiedziny skryptów lub nie zachęca do klikania a potem banujesz =) W programach partnerskich nie ma zazwyczaj takich problemów - bo nie liczy się ile osób wejdzie przez link, tylko ile później dokona np. zakupu.
nospor
Cytat
W programach partnerskich nie ma zazwyczaj takich problemów - bo nie liczy się ile osób wejdzie przez link, tylko ile później dokona np. zakupu.
No wlasnie nie będzie tu zakupów

Nie wiem o jakim ty CTR myslisz, ale mi chodzi po glowie taki: liczba wyswietlen do liczby klikniec.
Tylko ze tu nie bedzie wyswietlen jako takich, bo link moze isc przez GG, fora i inne.
Fifi209
Zrób tak jak na forach, zamiast podawać link to wpisujesz nazwę użyszkodnika i jemu (o ile istnieje) dodasz w bazie punkcik. smile.gif
nospor
@fifi wybacz ale nie rozumiem sad.gif
Mogłbys rozwinąć mysl? Czy ma się roznic podanie nazwy usera od jego id?

edit down: dziękować, poprawione smile.gif
Cypherq
Nosporze kochany. "skąd" nie "z kąd" wstydnis.gif
Fifi209
Cytat(nospor @ 19.02.2010, 13:37:26 ) *
@fifi wybacz ale nie rozumiem sad.gif

Może to ja nie zrozumiałem. Myślałem bardziej o czymś takim jak przy rejestracji, ktoś się rejestruje i może podać nick polecającego.

Albo Ty rozwiń swoją myśl, do czego to potrzebujesz tego, bo może ja źle rozumuję.

Jeżeli chodzi Ci o inne polecanie, to ktoś kto jest polecającym (i mu zależy na tych pkt.) to w jego interesie jest podać odpowiedni link dla znajomego/znajomej, w tym przypadku można pokusić się o generowanie jednorazowych linków do polecania.
Kocurro
nospor: napisz do czego to potrzebujesz to Ci powiem jak to zrobić. Mam już spore doświadczenie w tej akurat kwestii. Jeśli nie chcesz na forum publicznym to możesz przez PW.
Fifi209
Cytat(Kocurro @ 19.02.2010, 13:47:58 ) *
nospor: napisz do czego to potrzebujesz to Ci powiem jak to zrobić. Mam już spore doświadczenie w tej akurat kwestii. Jeśli nie chcesz na forum publicznym to możesz przez PW.


Forum jest chyba po to, aby kolejni borykający się z tym problemem mogli znaleźć na nim odpowiedź. smile.gif
nospor
Cytat
Może to ja nie zrozumiałem. Myślałem bardziej o czymś takim jak przy rejestracji, ktoś się rejestruje i może podać nick polecającego.
No wlasnie to nie to miało byc.

Cytat
napisz do czego to potrzebujesz to Ci powiem jak to zrobić.
No to spróbuję inaczej to opisac smile.gif

Zarejestrowany użytwkonik w serwisie ma swoj unikalny link, np:
http://serwis.pl/user/5

Użytkownik ten dodaje ten swoj link do różnych serwisów i gdy ktoś kliknie w jego link to ten użytkownik, którego unikalny link wciśnięto, dostaje punkty.
No i chodzi o to, by się nie okazało, że koleś sam sobie klika albo dał kumplom by klikali non stop
Kocurro
Zgadzam się z tym w zupełności ale być może nospor nie chce na forum publicznym pisać, że potrzebuje tego w takim i takim celu winksmiley.jpg

A jeśli chodzi o tego typu działania to jednak znajomość problemu pozwala dobrać najlepsze rozwiązanie. Wiem, że może powinienem ale nie chce mi się pisać o każdym możliwym rozwiązaniu bo to by było dużo pisania - lepiej napisać o tym co jak najbardziej nadaje się do rozwiązania takiego problemu smile.gif
nospor
Doskonale rozumiem zasade dzialania forum, problem opisany publicznie w poprzednim poscie. Koccuro to dziela, inni tez smile.gif
Fifi209
A użyszkodnik ma tylko kliknąć w link? Czy może ma się później zarejestrować etc. ?

Jeżeli ma przejść na stronę przez link usera i coś na niej wykonywać (choćby tylko czytać artykuły) to możesz zrobić na sesjach coś w ten deseń:

Wrzucasz jego ip do sesji. Ustalasz sobie, że ma wejść na x podstron (z zaznaczeniem, że mają być unikalne). Potem tylko do sesji na podstronach dodajesz informację, że na tej podstronie był i zwiększasz licznik. Przy odpowiednim stanie licznika dodajesz jego ip do bazy (że już odwiedził), następnie dodajesz punkty użyszkodnikowi od którego linka dostał.
nospor
Cytat
Czy może ma się później zarejestrować etc.
No własnie nie musi nic robic, tylko kliknąc - to niestety utrudnia sprawe.
Fifi209
Cytat(nospor @ 19.02.2010, 14:01:24 ) *
No własnie nie musi nic robic, tylko kliknąc - to niestety utrudnia sprawe.

Pozostaje tylko zapisać jego ip w bazie (nawet w neo każdy użyszkodnik ma swój zakres ip z tego co wiem). Do tego wysyłasz mu cookie, jeżeli nie ma cookie to sprawdzasz czy jego ip jest w bazie - jeżeli nie ma to dodajesz pkt. jeżeli jest to wysyłasz mu cookie.


Drugi pomysł:
Możesz pokusić się o wyświetlenie jakiegoś alerta w javascript i trzeba kliknąć po wejściu na stronę np. ok i ajaxem sobie wyślesz info (+ jakiś jednorazowy klucz, aby curlem tak łatwo nie można zrobić tego)

Ogólnie to nie ma zabezpieczeń, który nie można obejść - koniec kropka. : ) Możesz tylko utrudnić zadanie.
nospor
Cytat
Pozostaje tylko zapisać jego ip w bazie (nawet w neo każdy użyszkodnik ma swój zakres ip z tego co wiem). Do tego wysyłasz mu cookie, jeżeli nie ma cookie to sprawdzasz czy jego ip jest w bazie - jeżeli nie ma to dodajesz pkt. jeżeli jest to wysyłasz mu cookie.
Tak tez od razu pomyslalem, ale chciałem się własnie dowiedziec czy jest to wystarczające zabezpieczenie - chodziło mi własnie o zmienność IP

Cytat
Możesz pokusić się o wyświetlenie jakiegoś alerta w javascript i trzeba kliknąć po wejściu na stronę np. ok i ajaxem sobie wyślesz info (+ jakiś jednorazowy klucz, aby curlem tak łatwo nie można zrobić tego)
Przy ludziach klikaczach ze zmiennym IP to też nic nie da - równie dobrze moze byc samo IP. Aczkolwiek utrudnia napewno to już napisanie bota.

Cytat
Ogólnie to nie ma zabezpieczeń, który nie można obejść - koniec kropka. : ) Możesz tylko utrudnić zadanie.
Doskonale zdaję sobie z tego sprawę.
Chciałem jednak poznać opinie ludzi co już tym się bawili i mają jakieś doswiadczenia, które mogą pomoc w utrudnianiu tej "sprawy" smile.gif
Kocurro
Ok już widzę smile.gif

To tak - musisz zapisywać takie informacje:
- czas kliknięcie (unix timestamp)
- id osoby, której link kliknięto (jeszcze lepiej jak całą treść linka dodatkowo zapiszesz)
- ip z jakiego pochodzi kliknięcie
- id z ciasteczka, tutaj dobrze jest je sprytnie schować (wiadomo - mogą skasować ale i tak warto zapisać)
- informacje o przeglądarce (tutaj bardziej potrzebne jest id z tabeli linkującej w której masz wszystkie browser info jaki się pojawiły)
- informacje o referrer (także można zastosować tablicę linkującą)

Oczywiście opisuję tutaj sposób, który zbiera sporo informacji więc trzeba uprościć sobie na tyle na ile się chce.

Przetwarzanie danych:

Należy co jakiś czas odpalać skrypt, który będzie informacje o przeglądarce rozbijał na fragmenty i zapisywał w bazie (czyli rozpoznawał typ, wersję przeglądarki, systemu operacyjnego, używanej wersji .NET itp.). Oczywiście jak podzielisz to już zależy od Ciebie smile.gif

Referrery także przetwarzasz skryptem według kryteriów jakie uznasz za skuteczne

W efekcie mamy tablice z listą typów przeglądarek i danych z nich wyciągniętych, do tego dochodzi lista referrerów przetworzonych.

W zapytaniach będziemy jeszcze używać tablic geolokalizacyjnych.

Algorytm:

Zapisujemy każde kliknięcie i zwiększamy nim ilość kliknięć. Co jakiś czas odpalamy skrypt, który sprawdza zebrane dane i na podstawie raportu: blokujemy konto, usuwamy możliwość korzystania z systemu, odejmujemy kliknięcia lub nie robimy nic.

Skrypt sprawdzający to po prostu olbrzymie zapytanie dynamiczne (czyli po prostu funkcja składowana bazy danych, która wykonuje dynamiczne zapytania) które daje w efekcie raport.

Skrypt sprawdza wyznacza współczynnik podobieństw kliknięć - jeśli jest zbyt wielki lub zbyt mały wtedy należy wygenerować raport szczegółowy dla danego użytkownika.

Można dołożyć automatyczne działanie na podstawie raportu.

Dzięki temu mechanizmowi można wyłapać nawet multikonta - bo nagle okaże się, że rozkład kliknięć jest niemal identyczny.

W wielu rozwiązaniach łączyłem te dane zebrane w tabeli z danymi w tabeli aktywności - jeśli odsetek osób, które są unikalne a tylko klikną i nic więcej na stronie nie robią to to jest podejrzane.

Inne rozwiązania:

Captcha i podobne są półśrodkiem - widziałem projekty studentów drugiego roku elektroniki i telekomunikacji na jednej z politechnik, które to projekty dawały sobie radę ze sporą ilością już dostępnych rozwiązań. Dźwiękowa captcha także nie daje rozwiązania.

Częściowym rozwiązaniem może być podwójny głos - czyli klikasz w link a potem musisz podać swój email i na niego dostajesz list z jednorazowym linkiem do kliknięcia.

Ogólnie to należy łączyć rozwiązania blokujące zliczenie kliknięcia (captcha, podwójny głos, blokada w ciasteczku itp.) z analizą raportu. Wtedy szanse na znalezienie oszusta bardzo mocno rosną.

Wiadomo, że zawsze ktoś może się przecisnąć ale jeśli użyjemy odpowiedniej kombinacji środków to dla potencjalnego oszustwa gra może okazać się niewarta świeczki.

Oczywiście należy jeszcze rozważyć czy warto się zabezpieczać - takie zabezpieczenia potrafią sprawić, że ludzie nie chcą korzystać z serwisu itp. Dodatkowo większy ruch na serwisie to ... winksmiley.jpg

To tak w skrócie jak wygląda sprawa - dokładne rozwiązanie się projektuje pod specyficzny problem. Jeśli w grę wchodzi prestiż w grze to nie ma co się wysilać, jeśli zaś wchodzą pieniądze to dla spokoju własnego tyłka warto coś z tym zrobić.

Wiadomo, że ilość zebranych danych może być olbrzymia i ich przetwarzanie zajmować sporo czasu więc trzema pomyśleć samemu czy warto smile.gif
nospor
fju, fju.... nieźle smile.gif
Już mam o czym myśleć. Dzięki panowie.
ps: jak ktoś ma coś jeszcze do dodania to się proszę nie krępować i walić smiało smile.gif
Blame
Ja chcę coś dodać! 2+4 tongue.gif
A tak na serio, to chyba nikt nie wspomniał, że kiedy mamy ciasteczko "blokujące" to dobrze by było uaktualnić ip tej osoby w bazie. Bo ktoś zmieni sobie ip, wejdzie, zobaczy że dalej go blokuje to usunie ciasteczka i w tedy będzie miał dostęp, a tak to go dodatkowo zniechęcimy smile.gif Mój pomysł, nie poparty żadnymi badaniami winksmiley.jpg
chlebik
Mozna tez zastosowac inny mechanizm, ktory moznaby wprowadzic gdyby nam zalezalo na rownosci (mniej wiecej rzecz jasna) rozdzialu punktow. W grach kompterowych (a glownie o takie browser-game chodzi w linkach zliczajacych) czesto wystepuje jakas forma "konta VIP", co objawia sie pewnymi bonusami, ale najczesciej po zaplaceniu za takowe. Czyli motyw potencjalnej nierownosci graczy jest immanentnie wpisany w mechanizm gry.Zatem tam wielokrotne kliki sa zasadniczo sprawdzane o tyle by ktos nie zdobyl za duzo punktow pod katem tego, iz inni za to placa, a taki kolo sobie napisal skrypcik i omija system. I takich sie probuje wylapac - mimo to nie sa to AZ TAK SKUTECZNE rozwiazania, gdyz gdyby nie dalo sie czasem czegos obejsc to ludzie przestaliby grac smile.gif Chcesz na rownych szansach to graj w szachy smile.gif

Co do zabezpieczenia zas - moznaby tez poza wymienionymi przez Kocurro zabezpieczen dorzucic tez ew. kolejkowanie klikow. Czyli wprowadzamy z gory limit - codziennie w ten sposob mozemy dobonusowac uzytkownika np. 20 kliknieciami w link. Jesli jest ich wiecej to bonus z tego tytulu zostanie dodany dopiero nastepnego dnia. W ten sposob nawet maksymalni cheaterzy nie beda mieli az tak duzego wplywu na gre.
pyro
Osobiście dla wrażliwych danych używam IP/Cookies/Flash Storage/Java/iframe. jeszcze nikt nie obszedł.
nospor
Lekka zmiana planów:
teraz po kliknięciu ma się koleś zarejestrować.

W takim wypadku chyba nie należy już się za bardzo bawić w super sprawdzanie? Jak się zarejestruje, znaczy ze adres e-mail jest poprawny. Oczywiście jedna osoba może założyć kilka/kilkanascie/kilkakdziesiat kont i nabić parę punktów no ale to już raczej mówi się trudno, mam racje?
Oczywiscie trzeba się zabezpieczyc przed takim kontem w gmail, gdzie na jedno konto operując kropką i czyms tam jeszcze mozna natworzyc mase kont. Jakies inne skrzynki tez tak mają?
pablo89pl
mozesz pokazać przykład? tego z gmaila
nospor
http://wrzasq.pl/blog/62.html
thek
Ale filtrowanie wszystkich adresów z gmaila to przecież pryszcz w takim wypadku winksmiley.jpg Usuń wszystkie kropki i olej wszystko od znaku + włącznie aż do @ jeśli konto jest w domenie gmail.com, a to przecież nietrudne. Filtr banalny a eliminuje to co wspominasz o gmailu. Trzeba tylko wiedzieć jakie konta określonych typów dają aliasy. Choćby z o2.pl... Dają też go2.pl, tlen.pl i jeszcze kilka innych smile.gif Sam korzystałem to wiem winksmiley.jpg
pablo89pl
Cytat(nospor @ 26.02.2010, 22:42:05 ) *

Lol ciekawe smile.gif, człowiek całe zycie się uczy, ciekawe ile jeszcze innych kruczków uda się znaleźć
Crozin
Jeszcze co do poprzednich planów - jak już jesteśmy przy temacie. Local Shared Objects, czyli takie flashowe ciasteczka są o tyle dobre, że większość osób nie ma pojęcia o ich istnieniu.
Nie jestem pewien ale aplety Javy chyba również mają podobne możliwości.

Zawsze można tego użyć jako kolejnej warstwy "obrony".
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.