Ok już widzę

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

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 ...

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