Есть сайт _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";
Тоже не помогло. Что делать?
Спустя 2 часа, 34 минуты, 7 секунд (3.03.2010 - 15:31) FatCat написал(а):
Так ты в лучшем случае закроешь от анонимайзеров, но не от проксей.
Тоже есть такая проблема, задолбали на одном ресурсы хакеры, ломящиеся через прокси.
Надо как-то прозванивать айпишник...
Сервис http://whatismyipaddress.com/staticpages/i...p=212.44.135.50 как-то у себя сумел организовать детектор прокси... Но пока не соображу даже с какой стороны подступаться.
Тоже есть такая проблема, задолбали на одном ресурсы хакеры, ломящиеся через прокси.
Надо как-то прозванивать айпишник...
Сервис 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) | ||
в .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 как-то у себя сумел организовать детектор прокси... Но пока не соображу даже с какой стороны подступаться. |
Не разбирал код в предыдущем посте и наверное он какраз и делает то о чем я сейчас напишу Можно посканировать через сокеты, те порты клиентского ip, на которых обычно вешают прокси. Собственно если порты открыты и клиент приглашает вас на проксю не спрашивая паролей то пишем ему что либо его хакнули и он раздает через себя интернеты, либо он анонимная редиска.
Спустя 5 часов, 8 минут, 7 секунд (4.03.2010 - 13:31) netruxa написал(а):
Семён, спасибо, но это не то
Сейчас залил, попробовал, пишет что я через прокси, хотя я ввожу адрес напрямую
Копать надо именно в направлении document.URL, потому что когда заходишь на сайт через прокси, оно пишет http:// не мой
Сейчас залил, попробовал, пишет что я через прокси, хотя я ввожу адрес напрямую
Копать надо именно в направлении document.URL, потому что когда заходишь на сайт через прокси, оно пишет http:// не мой
Спустя 50 минут, 44 секунды (4.03.2010 - 14:22) Alex VoDevil написал(а):
fsockopen() Или я туплю? Ну смотрите: Если на ваш сайт идут через прокси то в $_SERVER['REMOTE_ADDR'] вы увидите ip проксика, остается попинать его по популярным прокси портам. Если отвечает, при чем отвечает именно как открытый прокси - писать ip в блэклист и выдавать сообщение пользователю. Я не прав?
_____________
ввв.парсер.рф - онлайн система проверки позиций Вашего сайта в поисковиках. Для форумчан 100 рублей на счет.