io non ho detto di lasciar stare!
c'è già qualcosa di costruito, da cui si può prendere spunto, per es. guarda questa funzione...che non ho costruito personalmente:
Codice PHP:
<?
/**
* TOR BLOCK Function
*
* @access public
* @param ip
* @return true/false
*/
public function check_proxy($ip)
{
//BLOCK TOR
$file = ROOT_HTTP_PATH . PROTECTION_PATH . 'cache/' . "list.php";
if (@file_exists($file)) {
$proxy_list = file_get_contents($file);
$tor_exit_node_list = $proxy_list;
preg_match('/<!(.*)!>/', $proxy_list, $time_created);
if (date('G') > trim($time_created[1])) {
unset($tor_exit_node_list);
unlink($file);
$tor_exit_node_list = file_get_contents('http://torstatus.kgprog.com/ip_list_exit.php/Tor_ip_list_EXIT.csv');
$tor_exit_node_list = '<?die;?>' . "\n" . '<!' . date('G') . '!>' . "\n" . $tor_exit_node_list;
file_put_contents($file, $tor_exit_node_list);
}
} else {
$create = file_get_contents('http://torstatus.kgprog.com/ip_list_exit.php/Tor_ip_list_EXIT.csv');
$create = '<?die;?>' . "\n" . '<!' . date('G') . '!>' . "\n" . $create;
file_put_contents($file, $create);
$tor_exit_node_list = $create;
}
$ip_tor = explode("\n", $tor_exit_node_list);
foreach ($ip_tor as $tor_ip) {
if ($tor_ip == $ip) {
if (self::$settings["en_logging"] == 'checked') {
self::write_log("User With Pseudo-IP: " . $ip . " is behind a proxy!");
}
return true;
}
}
//X-Forwarded-For Checking
if (self::$settings['en_x_forwared_f'] == 'checked') {
$forwaded = array($_SERVER['HTTP_X_FORWARDED_FOR'], $_SERVER['HTTP_X_FORWARDED'],
$_SERVER['HTTP_FORWARDED_FOR']);
$forwaded = array_filter($forwaded);
if (!empty($forwaded)) {
foreach ($forwaded as $forward) {
if (substr($forward, 0, 7) != '192.168') {
if (self::$settings["en_logging"] == 'checked') {
self::write_log("User With Pseudo-IP: " . $ip . " is behind a proxy!");
return true;
}
}
}
}
}
//Port Checking
if (self::$settings['remote_port_viewer'] == 'checked') {
$ports = @explode(",", self::$settings['ports_to_check']);
//Lucky eh?
if (is_array($_SERVER['REMOTE_PORT'])) {
foreach ($_SERVER['REMOTE_PORT'] as $port_to_check_if_exists) {
foreach ($ports as $port) {
if ($port_to_check_if_exists == $port) {
if (self::$settings["en_logging"] == 'checked') {
self::write_log("User With Pseudo-IP: " . $ip . " is behind a proxy!");
}
return true;
}
}
}
} else {
foreach ($ports as $port) {
if ($_SERVER['REMOTE_PORT'] == $port) {
if (self::$settings["en_logging"] == 'checked') {
self::write_log("User With Pseudo-IP: " . $ip . " is behind a proxy!");
}
return true;
}
}
}
}
//lets check for open ports now
if (self::$settings['en_port_checking'] == 'checked') {
$ports = @explode(",", self::$settings['ports_to_check']);
foreach ($ports as $port) {
if (@fsockopen($ip, $port, $errno, $errstr, 2)) {
//Open Port Found... Proxy Behind. Block user
if (self::$settings["en_logging"] == 'checked') {
self::write_log("User With Pseudo-IP: " . $ip . " is behind a proxy!");
}
return true;
}
}
}
return false;
}
?>