[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как закрыть доступ на сайт проксерам
netruxa
Привет всем!
Есть сайт _balda4fun.ru
Сервис платный, но предоставляет бесплатный доступ 5 раз в сутки всем пользователям. И недавно стал замечать, что находятся халявщики, которые через всевозможные прокси серверы заходят и юзают сервис. Как в переменную php передать значение 0, если document.URL != 'balda4fun.ru'?

Попробовал сделать через куки, примерно так:
if (!isset($_COOKIE['proxy'])) setcookie('proxy', 0, time()+$time, "/");
?>
<NOINDEX><noscript><p style="font-size:30px;color:red;">Для использования бесплатных подсказок включите Java Script!</p></noscript></NOINDEX>
<
script type="text/javascript">
function strstr (haystack, needle) {
var pos = 0;
haystack += '';
pos = haystack.indexOf( needle );
if (pos == -1) {
return false;
} else{
return true;

}
}

if (strstr(document.URL,'balda4fun.ru'))
{
//alert('OK!');
}
else
{
//alert('NO!');
document.cookie="proxy=1; path=/; expires=Mon, 01-Jan-2011 00:00:00 GMT";
}
</script>

Но это не помогло, т.к. $_COOKIE['proxy'] возвращает 0

Попробовал еще
document.cookie="proxy=1; path=/; domain= balda4fun.ru ; expires=Mon, 01-Jan-2011 00:00:00 GMT";

Тоже не помогло. Что делать? smile.gif



Спустя 2 часа, 34 минуты, 7 секунд (3.03.2010 - 15:31) FatCat написал(а):
Так ты в лучшем случае закроешь от анонимайзеров, но не от проксей.

Тоже есть такая проблема, задолбали на одном ресурсы хакеры, ломящиеся через прокси.
Надо как-то прозванивать айпишник...
Сервис http://whatismyipaddress.com/staticpages/i...p=212.44.135.50 как-то у себя сумел организовать детектор прокси... Но пока не соображу даже с какой стороны подступаться.

Спустя 12 минут, 25 секунд (3.03.2010 - 15:44) Семён написал(а):
Мб просто сделать базу прокси? И посылать по 3-ём буквам?

Спустя 14 минут, 27 секунд (3.03.2010 - 15:58) DedMorozzz написал(а):
Цитата
если document.URL != 'balda4fun.ru'
в .htaccess позапрещай/поразрешай реферов. Доступ к сайту будет разрешён/запрешён тока с определёных доменов иль страниц сайта, настраеваемо легко.

Спустя 7 минут, 26 секунд (3.03.2010 - 16:05) FatCat написал(а):
Цитата (Семён @ 3.03.2010 - 16:44)
Мб просто сделать базу прокси?

Не катит.
Бестолковых сисадминов в мире навалом, открытых релеев сотни тысяч или даже миллионы, и насканировать новых проксей - вопрос лишь времени и желания хакера.

Была идея джаваскриптом писать айпишник в куки и читать куки. Но так мы не отличим проксю от роутера или сервера локальной сети...

Спустя 2 часа, 46 минут, 24 секунды (3.03.2010 - 18:52) netruxa написал(а):
Цитата (DedMorozzz @ 3.03.2010 - 12:58)
Цитата
если document.URL != 'balda4fun.ru'
в .htaccess позапрещай/поразрешай реферов. Доступ к сайту будет разрешён/запрешён тока с определёных доменов иль страниц сайта, настраеваемо легко.

Думаю, не лучший вариант
Допустим, я разрешу доступ к сайту только рефам с url balda4fun.ru
Что мы теряем:
Во-первых, всех юзеров, кто напрямую заходит на сервис с какого-либо каталога
Во-вторых, всех юзеров, которые имеют оплаченный аккаунт, но зашли по какойто причине с прокси
В-третьих, поисковые системы неизвестно как на это отреагируют

У кого еще идеи есть?

Спустя 5 минут, 1 секунда (3.03.2010 - 18:57) Семён написал(а):
<?

class
proxy_detector {

/**
* CONSTRUCTOR
* Set defaults...
*/

function proxy_detector(){
$this->config = array();
$this->lastLog = "";

//set default headers
$this->scan_headers = array(
'HTTP_VIA',
'HTTP_X_FORWARDED_FOR',
'HTTP_FORWARDED_FOR',
'HTTP_X_FORWARDED',
'HTTP_FORWARDED',
'HTTP_CLIENT_IP',
'HTTP_FORWARDED_FOR_IP',
'VIA',
'X_FORWARDED_FOR',
'FORWARDED_FOR',
'X_FORWARDED',
'FORWARDED',
'CLIENT_IP',
'FORWARDED_FOR_IP',
'HTTP_PROXY_CONNECTION'
);
}


/**
* VOID setHeader( STRING $trigger )
* Set new header trigger...
*/

function setHeader($trigger){
$this->scan_headers[] = $trigger;
}


/**
* ARRAY $triggers = getHeaders( VOID )
* Get all triggers in one array
*/

function getHeaders(){
return $this->scan_headers;
}


/**
* VOID setConfig( STRING $key, STRING $value)
* Set config line...
*/

function setConfig($key,$value){
$this->config[$key] = $value;
}


/**
* MIXED $config = getConfig( [STRING $key] )
* Get all config in one array, or only one config value as a string.
*/

function getConfig($key=''){
if($key)
return $this->config[$key];
else
return
$this->config;
}


/**
* STRING $log = getLog( VOID )
* Get last logged information. Only works AFTER calling detect()!
*/

function getLog(){
return $this->lastLog;
}


/**
* BOOL $proxy = detect( VOID )
* Start detection and return true if a proxy server is detected...
*/

function detect(){
$log = "";

//scan all headers
foreach($this->scan_headers as $i){
//proxy detected? lets log...
if($_SERVER[$i])
$log.= "trigger $i: ".$_SERVER[$i]."\n";
}

//let's do something...
if($log){
$log = $this->lastLog = date("Y-m-d H:i:s")."\nDetected proxy server: ".gethostbyaddr($_SERVER['REMOTE_ADDR'])." ({$_SERVER['REMOTE_ADDR']})\n".$log;

//mail message
if($this->getConfig('MAIL_ALERT_TO'))
mail($this->getConfig('MAIL_ALERT_TO'),"Proxy detected at {$_SERVER['REQUEST_URI']}",$log);

//write to file
$f = $this->getConfig('LOG_FILE');
if($f){
if(is_writable($f)){
$fp = fopen($f,'a');
fwrite($fp,"$log\n");
fclose($fp);
}else{
die("<strong>Fatal Error:</strong> Couldn't write to file: '<strong>$f</strong>'<br>Please check if the path exists and is writable for the webserver or php...");
}
}


//done
return true;
}

//nope, no proxy was logged...
return false;
}
}


?>


<?

//include detector class, assuming it's in the same directory as this file...
include_once(dirname(__FILE__)."/proxy_detector.class.php");

//init class
$proxy = new proxy_detector();

//set optional extra triggers, no need to... I think I've got all of them covered in the class...
// $proxy->setTrigger('HTTP_SOME_HEADER_1');
// $proxy->setTrigger('HTTP_SOME_HEADER_2');

//set optional config
// $proxy->setConfig('MAIL_ALERT_TO','me@daantje.nl');
// $proxy->setConfig('LOG_FILE','/home/daantje/public_html/proxy/proxy_detector.log');

//start detect

if($proxy->detect()){

//returned true, lets die...
echo "<h1>Proxy detected</h1>";
echo "Please disable your proxy server in your browser preferences or internet settings, and try again.<br><br>";

//parse logged info
echo nl2br($proxy->getLog());

//some credits...
echo "<hr><strong>proxy detector v0.1</strong> - ©2006 <a href=\"http://www.daantje.nl\" target=\"_blank\">daantje.nl</a>";

//and do nothing anymore! (but not in my example)
//exit();

}

//else, proceed as normal, put your code here...
?>

Спустя 13 часов, 26 минут, 7 секунд (4.03.2010 - 08:23) Alex VoDevil написал(а):
Цитата (FatCat @ 3.03.2010 - 17:31)
Так ты в лучшем случае закроешь от анонимайзеров, но не от проксей.

Тоже есть такая проблема, задолбали на одном ресурсы хакеры, ломящиеся через прокси.
Надо как-то прозванивать айпишник...
Сервис http://whatismyipaddress.com/staticpages/i...p=212.44.135.50 как-то у себя сумел организовать детектор прокси... Но пока не соображу даже с какой стороны подступаться.

Не разбирал код в предыдущем посте и наверное он какраз и делает то о чем я сейчас напишу smile.gif Можно посканировать через сокеты, те порты клиентского ip, на которых обычно вешают прокси. Собственно если порты открыты и клиент приглашает вас на проксю не спрашивая паролей то пишем ему что либо его хакнули и он раздает через себя интернеты, либо он анонимная редиска. wink.gif

Спустя 5 часов, 8 минут, 7 секунд (4.03.2010 - 13:31) netruxa написал(а):
Семён, спасибо, но это не то sad.gif
Сейчас залил, попробовал, пишет что я через прокси, хотя я ввожу адрес напрямую

Копать надо именно в направлении document.URL, потому что когда заходишь на сайт через прокси, оно пишет http:// не мой

Спустя 50 минут, 44 секунды (4.03.2010 - 14:22) Alex VoDevil написал(а):
fsockopen() wink.gif Или я туплю? Ну смотрите: Если на ваш сайт идут через прокси то в $_SERVER['REMOTE_ADDR'] вы увидите ip проксика, остается попинать его по популярным прокси портам. Если отвечает, при чем отвечает именно как открытый прокси - писать ip в блэклист и выдавать сообщение пользователю. Я не прав?


_____________
ввв.парсер.рф - онлайн система проверки позиций Вашего сайта в поисковиках. Для форумчан 100 рублей на счет.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.