Добрый день.
Вопрос простой: как узнать пользователь вошел на мой сайт через прокси или просто?
Есть вар-т анализировать заголовки и переменные сервера $_SERVER.
//////////////////
proxy URI specifying address of proxy server. (e.g. tcp://proxy.example.com:5100 ).
Значит ли это, что юзер который зашел на мой сайт с адреса TCP://proxy... - использует прокси?
Если да то просто беру этот путь из $_SERVER[ "<что-то там>" ], вырезаю первые 3 символа и сравниваю....
<?php
$ip = (empty($_SERVER['HTTP_X_FORWARDED_FOR']) || $_SERVER['HTTP_X_FORWARDED_FOR'] == 'unkown') ? 0 : $_SERVER['HTTP_X_FORWARDED_FOR'];
if (!$ip || $ip != $_SERVER['REMOTE_ADDR'])) {
echo 'Proxy? ';
} else {
echo 'Norm';
}
?>
правда прокси вряд ли мечтают оставить тебе HTTP_X_FORWARDED_FOR?
P.S. ТАМ ГДЕ СМАЙЛ ПРОСТО : и ) слились, то есть часть кода
////////////////
Если HTTP_X_FORWARDED_FOR не существует или равен unkown, то пишем в переменную 0, если нет, то пишем IP адрес.
Далее проверяем переменную. Если равна 0 - выводим "Прокси". Если HTTP_X_FORWARDED_FOR != REMOTE_ADDR, то тоже прокси, только не прозрачный. НЕ прокси только тогда, когда HTTP_X_FORWARDED_FOR == REMOTE_ADDR, причем оба индекса существуют.
Отсутствует
Что-то я индекса 'HTTP_X_FORWARDED_FOR' не нашёл в документации по php5. Что это?
«I actually hate programming, but I love solving problems» © Rasmus Lerdorf, PHP's Creator
Отсутствует
Ты там этого и не найдешь...
Ты думаешь в док-тации php5 можно найти инфу насчет прокси-пробивалки?
Отредактировано Testing001 (06-04-2007 20:47:20)
Отсутствует
1). Не все прокси оставляют за собой заголовки, которые бысплатно кидают, то ЛИЧНО Я тестил, многие бесплатные оставляют.
2). В основном берут платные, а это гораздо хуже, потому что они уже не оставляют, а значит отловить на PHP такие уже нельзя.
3). Все означает не %100 результат.
PS
Если боитесь взломщиков, то не волнуйтесь, они работют с high-anonymous proxy, за которые платят, и которые не раскрывают свои заголовки. Поэтому мое мнеие - просто создать очень хорошую структуру для Сайта.
Отсутствует
Testing001
был недавно у меня проект один. именно таким способом проверял юзеров на прокси.
ещё можно попробовать подсоединиться через fsockopen к данному ip по определённом диапазону портов (прокси-протов) и почитать поток. если читает - значит прокси.
Добавлено Sun Sep 16 12:58:21 2007 :
НЕ прокси только тогда, когда HTTP_X_FORWARDED_FOR == REMOTE_ADDR, причем оба индекса существуют.
а вот это не всегда верно. на сколько мне известно, HTTP_X_FORWARDED_FOR не существует в большинстве случаев, но у всех прозрачных прокси он есть.
Отсутствует
Testing001
Можете посмотреть пример реализации, сделанный на нашем форуме (его код общедоступен). Функция называется get_remote_address()
Все микробы умрут
Отсутствует