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)
$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'];
$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, не существует эффективной защиты.