определить, использует ли пользователь прокси - PullRequest
19 голосов
/ 24 декабря 2010

Привет, я создаю игру и хотел бы узнать, использует ли пользователь прокси.Если они есть, то это в основном ставит флаг на их счет.Я могу заставить это сделать флаг и все, но я не совсем уверен, как сказать, использует ли пользователь прокси.Я видел, что вы можете использовать заголовки, но я не совсем уверен, что искать и как вы будете проверять, есть ли у пользователя "заголовок" (помимо обычного http_referrer, а что нет).

Любая помощьочень ценится.

Редактировать

if ( $_SERVER['HTTP_X_FORWARDED_FOR']
|| $_SERVER['HTTP_X_FORWARDED']
|| $_SERVER['HTTP_FORWARDED_FOR']
|| $_SERVER['HTTP_CLIENT_IP']
|| $_SERVER['HTTP_VIA']
|| in_array($_SERVER['REMOTE_PORT'], array(8080,80,6588,8000,3128,553,554))
|| @fsockopen($_SERVER['REMOTE_ADDR'], 80, $errno, $errstr, 30))
{
     exit('Proxy detected');
}

Таким образом, этот код в основном работает, когда пользователь является прокси, он быстро завершает работу.Но когда это не так, загрузка занимает целую вечность (около 10 секунд).Есть ли способ использовать этот сценарий, но заставить его работать быстрее?

РЕДАКТИРОВАТЬ 2

Изменено время ожидания для fsockopen с 30 до 1, и он работает намного быстрее и работает до сих порза работой.Спасибо всем за предложения :)

1 Ответ

7 голосов
/ 24 декабря 2010

После поиска в Google по запросу php detect http proxies я обнаружил следующее:

http://forums.digitalpoint.com/showthread.php?t=58964

http://forums.digitalpoint.com/showthread.php?t=365467

http://www.roscripts.com/PHP_Proxy_Detector-75.html

... и целый ряд других интересных хитов.

EDIT:

AFAIK, нет способа обнаружить HTTP прокси ни с абсолютной уверенностью, ни безопасно:

  • Службы анонимайзера не добавляют надлежащие заголовки к своим запросам - фактически они удаляют некоторые из них. Вам необходимо вести список самых популярных сервисов анонимайзера и их блоков IP-адресов и определять их таким образом. Есть некоторые списки онлайн, которые вы можете использовать, но они далеко не полны, особенно если учесть, что большинство крупных учреждений (ISP, компании, университеты и т. Д.) Предоставляют прокси-сервер для своих пользователей. Некоторые даже требуют, чтобы их пользователи использовали их.

  • Многие прокси-серверы HTTP настроены так, что они просто пересылают запросы без изменения заголовков.

  • Установки VPN имеют тот же эффект, что и прокси-сервер HTTP, а именно - позволяют HTTP-запросам отправляться с IP-адреса, отличного от IP-адреса компьютера, на котором находится веб-браузер, - но не один.

  • Любой SSH-сервер может использоваться в качестве прокси-сервера SOCKS его пользователями, который на самом деле не обнаруживается, поскольку на самом деле это не HTTP-прокси.

  • Существует много законных прокси-серверов HTTP, которые не являются общедоступными. Например есть HTTP прокси-продукты, которые установлены в домашней сети и обеспечить родительский контроль и сомнительного содержания (порнография, фишинг-сайты и т.д.) фильтрации для всей сети.

Какое злоупотребление вы видите, где может быть полезным обнаружение HTTP-прокси?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...