Не баньте Google - он ходит как умеет :)

В марте 2015 года без особого анонса Google вывел новый плагин для Google Chrome - Экономия траффика (бета). Суть его работы примерно такая же, как и у Opera Mini - браузер направляет свой запрос не напрямую на сайт, а промежуточному серверу компании, который, исполняя роль прокси-сервера, скачивает запрашиваемую страницу, сжимает ее и отдает Вам.

Положительные моменты: сжимается трафик, ускоряется загрузка страниц на медленных каналах, возможные блокировки серфинга в Сети администратором корпоративной сети становятся не актуальными, так как весь трафик идет через одну точку :)

Но есть и отрицательные моменты: сплошь и рядом на посещаемых мной сайтах нарываюсь на сообщения о блокировке моего IP-адреса... Дело в том, что многие webmaster'ы не разобравшись просто блокируют IP-адреса, с которых резко возрос трафик, опасаясь спамеров или DDOS-атаки. Ведь теперь многие пользователи одного из лидирующих браузеров ходят по Сети всего лишь с нескольких IP-адресов компании Google :) Мне известно, как минимум, о 5-ти таких серверах - все они имеют адреса из подсети 66.249.0.0/16, из которой так же ходят гуглоботы (googlebot), сканирующие сайты для поисковой системы Google.

Так же надо учитывать этот нюанс при построении тех или иных систем, базирующихся на IP-адресе посетителя - ограничение пользования услугами, частота комментирования материалов сайта и т.д.

К примеру, при работе с Apache и PHP, web-sever передает в суперглобальной переменной $_SERVER три таких параметра:

$_SERVER['REMOTE_ADDR'] - IP-адрес, с которого пользователь просматривает текущую страницу
$_SERVER['REMOTE_HOST'] - Удаленный хост, с которого пользователь просматривает текущую страницу
$_SERVER['HTTP_X_FORWARDED_HOST'] - В случае запроса с прокис-сервера хост, в интересах которого производится данный запрос.

И вот если движок Вашего сайта анализирует только первую переменную, игнорируя третью, то все посетители, которые заходят через один и тот же прокси-сервер, будут считаться одним лицом.

И эта проблема достаточно актуальна: только за последнюю неделю я два раза столкнулся с блокировкой доступа по этой причине на сайтах, где аудитория измеряется многими десятками, если не сотнями тысяч уникальных посетителей в сутки. Если у Вас стоит этот компонент и Вы не можете открыть какую-то страницу, воспользоваться сервисом или оставить комментарий, то попробуйте сначала отключить в браузере экономию трафика и повторить свою операцию - скорее всего у Вас все получится.

В обсуждениях на сайте http://php.net раздела об этой суперглобальной переменной $_SERVER обнаружил образец полностью рабочей функции, которая будет возвращать истинный IP-адрес посетителя сайта, очищенный от всех прокси, кроме "анонимных":

Цитата:
function getRealIP(){
if( $_SERVER['HTTP_X_FORWARDED_FOR'] != '' ){
$client_ip =
( !empty($_SERVER['REMOTE_ADDR']) ) ?
$_SERVER['REMOTE_ADDR']
:
( ( !empty($_ENV['REMOTE_ADDR']) ) ?
$_ENV['REMOTE_ADDR']
:
"unknown" );

$entries = split('[, ]', $_SERVER['HTTP_X_FORWARDED_FOR']);

reset($entries);
while (list(, $entry) = each($entries)){
$entry = trim($entry);
if ( preg_match("/^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/", $entry, $ip_list) ){
// http://www.faqs.org/rfcs/rfc1918.html
$private_ip = array(
'/^0\./',
'/^127\.0\.0\.1/',
'/^192\.168\..*/',
'/^172\.((1[6-9])|(2[0-9])|(3[0-1]))\..*/',
'/^10\..*/');

$found_ip = preg_replace($private_ip, $client_ip, $ip_list[1]);

if ($client_ip != $found_ip){
$client_ip = $found_ip;
break;
}
}
}
} else {
$client_ip =
( !empty($_SERVER['REMOTE_ADDR']) ) ?
$_SERVER['REMOTE_ADDR']
:
( ( !empty($_ENV['REMOTE_ADDR']) ) ?
$_ENV['REMOTE_ADDR']
:
"unknown" );
}
return $client_ip;
}

Популярные среди определенной публики "анонимные" прокси потому и являются анонимными, что не заполняют значение переменной 'HTTP_X_FORWARDED_FOR' - для нас все такие посетители с одного и того же прокси-сервера будут оставаться "едиными в одном лице". А что делать? :)


Отправить новый комментарий

Содержимое этого поля хранится скрыто и не будет показываться публично.
  • Доступны HTML теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.
  • You can use BBCode tags in the text.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.

Больше информации о возможностях форматирования

CAPTCHA
Этот вопрос задается для проверки того, не является ли обратная сторона программой-роботом (для предотвращения попыток автоматической регистрации).