Na dobrą sprawę to ... się go nie pozbędziesz. Możesz spróbować wyciągnać jego prawdziwe IP, poprzez:
<?php
$_SERVER['HTTP_X_FORWARDED_FOR']
?>
Ale ta zmienna nie jest zawsze przesyłana przez proxy. Jeśli on używa elite proxy, które nie przesyłają tego to nie masz szans, aby się go pozbyć. Ewentualnie pozostaje Ci geolokalizacja, ale to ograniczy wejścia użytkowników nie pochodzących z wybranego kraju. Możesz również, spróbować wykryć port z jakim łączy się on z Twoją stroną i to co jest różne niż :80 banować

Ale nigdy tego nie próbowałem to nie wiem czy da rade, nie mniej jednak powinno go trochę zniechęcić.
Jak już zdobędziesz jego prawdziwe IP to możesz próbować zlokalizować kolesia. Co do skryptu,
NuLL, dawno temu podawał taki oto skrypt:
<?php
function getClientIp() {
$ip = 0;
if (!empty($_SERVER['HTTP_CLIENT_IP'])) $ip = $_SERVER['HTTP_CLIENT_IP'];
if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { $_SERVER['HTTP_X_FORWARDED_FOR']);
if ($ip) {
$ip = 0;
}
foreach ($ipList as $v)
if (!ereg('^(192.168|172.16|10|224|240|127|0).', $v))
return $v;
}
return $ip ? $ip : $_SERVER['REMOTE_ADDR'];
}
?>
Pozdrawiam.