вот хочу узнать как это работает нашла в статискике своего счетчика на "Ливинтернет"
Установка ловушки для поисковых роботов на страницах вашего сайта
Данная задача не может решаться установкой в код вашей страницы традиционного счетчика, основанного на картинках и яваскрипте, так как роботы скачивают картинки по своим алгоритмам, не вместе со страничками. А уж яваскрипт тем более они не выполняют.
Единственный способ "поймать робота" - вставить в код каждой страницы SSI вставку с простейшим скриптом. Так как SSI выполняется на стороне сервера, робот его запустит и это можно будет отследить.
Данная врезка не повредит вашему сайту, так как реально что то считаться и передаваться на сервер обработки будет только в том случае, когда действительно на сайте появился тот или иной поисковый робот, что бывает не так уж и часто.
Технология установки счетчика - надо вставить SSI вставку в коды ваших страниц. Для этого надо в код, расположенный ниже, подставить значение site_id=, равным идентификатору вашего сайта. Узнать свой идентификатор можно, посмотрев на URL страниц статистики на нашем сайте. Например для www3dnews.ru УРЛ статистики http://www.liveinternet.ru/stat/3dnews.ru/, а значит надо подставить site_id=3dnews.ru.
<!--#include virtual="/li_spider_check.php?site_id=yourdomain.ru"-->
Далее - надо выложить на ваш сервер код PHP скрипта. В качестве языка выбран PHP для того, чтобы у вас не возникло трудностей с компилированием, адаптированием, а главное - не возникло вопросов безопасности - мало ли какой скрипт просят выложить. Тут же вы можете посмотреть на его код и увидеть, что все что он делает - определяет поисковый робот ли его вызвал. И если да - пересылает запрос на сервер подсчета.
Данный код надо сохранить в файл li_spider_check.php и выложить в корневую веб - директорию на вашем сервере. В случае, если вы назовете файл по другому или выложите его в другую директорию (главное, чтобы она была видна из Веба), то этот адрес надо изменить в верхней врезке.
Необходимость вам выкладывать на свой сервер скрипт связана с тем, что SSI может вызывать только скрипты, находящиеся на том же сервере, что и страницы, на которых этот код стоит.
<?
// version 03.12.2004
class LiveinternetSeTracker {
var $path = '/cgi-bin/robot.cgi';
var $server = 'host45.rax.ru';
var $se = Array(
'google' => 'Google',
'yandex' => 'Yandex',
'scooter' => 'AltaVista',
'stack' => 'Rambler',
'aport' => 'Aport',
'lycos' => 'Lycos',
'fast' => 'Fast Search',
'rambler' => 'Rambler',
);
function liveinternetSeTracker($site_id) {
if (!isset($site_id)) exit ;
$this->siteid=$site_id;
if(preg_match('/(google)|(yandex)|(scooter)|(stack)|(aport)|(lycos)|(fast)|(rambler)/msi',$_SERVER['HTTP_USER_AGENT'],$out))
{
$liveinternet_se = $this->se[strtolower($out[0])];
$url = $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
$liveinternet_post_data = Array(
'url' => $url,
'useragent' => $liveinternet_se,
'site' => $this->siteid,
);
$this->PostToHost($this->server,$this->path,$this->URLEncodeArray($liveinternet_post_data));
}
}
function URLEncodeArray($QueryVars) {
unset($QueryBits);
while (list($var, $value) = each($QueryVars)) {
$QueryBits[] = urlencode($var).'='.urlencode($value);
}
return( implode('&', $QueryBits) );
}
function PostToHost($host, $path, $data_to_send, $port=80, $proto="1.0") {
$rval = -1;
$data_len = strlen($data_to_send);
$fp = fsockopen($host, $port);
if ($fp) {
fputs($fp, "POST $path HTTP/$proto\r\n");
fputs($fp, "Host: $host\r\n");
fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
fputs($fp, "Content-length: ".$data_len."\r\n");
fputs($fp, "Connection: close\r\n\r\n");
fputs($fp, $data_to_send);
while(!feof($fp)) { $rval .= fgets($fp, 128); }
fclose($fp);
}
return($rval);
}
}
new LiveinternetSeTracker($REQUEST['site_id']);
?>