WebWarper
Старый интерфейс
(копия на сайте AlgART)

Сайт автора
AlgART.net

Библия, статьи,
программы
Информация
Что такое
WebWarper?
Возможности
WebWarper
Зачем нужна оптимизация веб-сайта
Privacy Policy
(безопасность)
DISCLAIMER
(отвод претензий)
F.A.Q.
(ответы на вопросы)
Популярные:
Free Downloads
(скачать бесплатно)
English Version
Новая 3D-модель:
Сферополиэдры!

Rambler's Top100

Версия для печати (в новом окне)

WebWarper / Часто Задаваемые Вопросы (F.A.Q.) / Вопросы разработчиков сайтов

Препятствует ли WebWarper анонимным постингам на мой сайт? Как определить IP посетителя, отправляющего сообщения через WebWarper?

WebWarper не препятствует отправке сообщений в форумы, гостевые книги, почтовые системы и т.п. При отправке сообщений через WebWarper исходный сервер "считает", что IP-адресом отправителя (REMOTE_ADDR) является IP-адрес сервера webwarper.net — так же, как при использовании анонимайзеров.

Однако, в отличие от анонимизирующих сервисов, WebWarper передает исходный IP-адрес посетителя на сервер в заголовке HTTP-запроса x-forwarded-for. (Это относится только к отправке сообщений, т.е. к обращениям к серверу методом POST. При обычном просмотре страниц, т.е. при обращениях к серверу методом GET, исходный IP не передается.)

Иначе говоря, WebWarper при отправке сообщений ведет себе как обычный, не анонимный proxy. Серверный скрипт, реализующий форум или гостевую книгу, вместо IP-адреса посетителя "видит" адрес proxy (в данном случае IP сервера webwarper.net), но может узнать исходный адрес посетителя из заголовка x-forwarded-for.

Более того, при отправке сообщений WebWarper добавляет к сообщению подпись, в котором указан исходный IP: в результате IP-адрес посетителя публикуется на форуме или гостевой в явном виде. Это делает WebWarper крайне неудобным средством для спамеров, желающих опубликовать какие-либо некорректные сообщения. См. по этому поводу вопрос "При попытке написать в форум к моему сообщению добавляеся текст с моим IP. Можно ли избавиться от этого?"

Авторы сайта, желающие правильно определить IP посетителя (например, для бана), должны использовать следующий алгоритм:

IP= заголовок запроса x-client-ip
если такого заголовка нет, то IP= заголовок запроса x-forwarded-for
если один из этих 2 заголовков есть, то:
    найти в строке IP первую запятую
    если запятая найдена, то отбросить конечную часть IP начиная с этой запятой
        (IP может содержать через запятую несколько proxy, использованных
        для доступа к сайту, причем исходный адрес указывается первым)
иначе (IP до сих пор не найден)
    IP= обратный адрес соединения (REMOTE_ADDR)
На языке PHP этот алгоритм выглядит так:
$clientIP= $_SERVER['HTTP_X_CLIENT_IP'];
if (!$clientIP) $clientIP= $_SERVER['HTTP_X_FORWARDED_FOR'];
if ($clientIP) {
    $clientIP= explode(",", $clientIP);
    $clientIP= $clientIP[0];
}
if (!$clientIP) $clientIP= $_SERVER['REMOTE_ADDR'];
На языке Perl:
$clientIP= $ENV{'HTTP_X_CLIENT_IP'};
$clientIP= $ENV{'HTTP_X_FORWARDED_FOR'} unless $clientIP;
$clientIP=~s/^(\d+\.\d+\.\d+\.\d+).*/$1/gs;
$clientIP= $ENV{'REMOTE_ADDR'} unless $clientIP;

При использовании этого алгоритма, сервис WebWarper, а также обычные (не анонимные) proxy не будут мешать правильной идентификации IP посетителей.

Следует помнить, что спамер может воспользоваться одним из анонимайзеров, отличных от WebWarper. См., например:

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

К оглавлению