Добрый день.
Пробовал искать но не нашел.
Вопрос простой: как узнать пользователь вошел на мой сайт через прокси или просто?
Заранее спасибо
Добрый день.
Пробовал искать но не нашел.
Вопрос простой: как узнать пользователь вошел на мой сайт через прокси или просто?
Заранее спасибо
Ну собственно по прокси ты можеш определить "якобы" местанахождение человека.
Но вот так сходу сказать нельзя, просто например ты знаеш, что человек из России, а айпи его показывает, что он например из Зимбабве - подозрительно. Хотя есть и Русские прокси)..
Только методом догадок можно.
Анализировать заголовки и переменные сервера $_SERVER.
Есть вар-т
//////////////////
proxy URI specifying address of proxy server. (e.g. tcp://proxy.example.com:5100 ).
Значит ли это, что юзер который зашел на мой сайт с адреса TCP://proxy... - использует прокси?
Если да то просто беру этот путь из $_SERVER[ "<что-то там>" ], вырезаю первые 3 символа и сравниваю....
П.С: что-то мне подсказывает, что ерунду написал..
во-первых нужно уточнить, что конкретно вы хотите определить. у многих стоят различные локальные прокси на их машинах, или например доступ к интернету на какой-нибудь фирме осуществляется с помощью прокси сервера -- отличить поведение такого "честного прокси" от так называемых "transparent public proxy servers" которые используются для сокрытия своего айпи, обхода различных банов и т.п. малореально, если не сказать невозможно
да и собственно определить является ли какой-то адрес, адресом одного из таких прокси серверов на основе только лишь данных из $_SERVER и пр. грубо говоря нельзя
а что это??proxy URI specifying address of proxy server. (e.g. tcp://proxy.example.com:5100 ).
<?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. ТАМ ГДЕ СМАЙЛ ПРОСТО : и ) слились, то есть часть кода
вот именно. прокси сервер может передать любое значение этой переменной )) и если этот прокси-сервер является "анонимным", то эта переменная будет просто дублировать переменную REMOTE_ADDR и скрипт будет думать что это не прокси.правда прокси вряд ли мечтают оставить тебе HTTP_X_FORWARDED_FOR?
Scorched.dn.ua
А ты знаешь, что-нибдуь еще о определнии, может необзяательно скриптами брать (хотя хорошо было бы скриптами), мою проксю (через честного прокси, как ты сказал) пробил один сервер, на этом сервере был сайт php-nuke+шаблонный форум, сам понимаешь, фигня )))
А проксю пробил, однако, тогда модет быть нужна прога?
Ты знаешь, какие-нибудь?
$HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"] - эта переменная содержит внутренний IP адрес, в случае использования прокси сервера
$HTTP_SERVER_VARS["REMOTE_ADDR"] - эта переменная содержит IP адрес компьютера, либо внешний IP прокси сервера
$GLOBALS[HTTP_VIA] - переменная, в которой находится информация, через какой прокси проходят данные.
А этих переменных недостаточно?
Scorched.dn.ua
Смотри скрипт. Если HTTP_X_FORWARDED_FOR не существует или равен unkown, то пишем в переменную 0, если нет, то пишем IP адрес.
Далее проверяем переменную. Если равна 0 - выводим "Прокси". Если HTTP_X_FORWARDED_FOR != REMOTE_ADDR, то тоже прокси, только не прозрачный. НЕ прокси только тогда, когда HTTP_X_FORWARDED_FOR == REMOTE_ADDR, причем оба индекса существуют.
1). Не все прокси оставляют за собой заголовки, которые бысплатно кидают, то ЛИЧНО Я тестил, многие бесплатные оставляют.
2). В основном берут платные, а это гораздо хуже, потому что они уже не оставляют, а значит отловить на PHP такие уже нельзя.
3). Все означает не %100 результат.
PS
Если боитесь взломщиков, то не волнуйтесь, они работют с high-anonymous proxy, за которые платят, и которые не раскрывают свои заголовки. Поэтому мое мнеие - просто создать очень хорошую структуру для Сайта.