Сборщик статистики поисковых запросов
Среда, 18 ноября 2009 г.
Просмотров: 10032
Подписаться на комментарии по RSS
Походив по интернету я не мог найти действительно стоящий скрипт на php для сбора поисковых запросов по которым ко мне приходили на сайт, по набрав там сям собрал как на мой взгяд очень даже не плохой скриптик который собирает всю статистику в отдельный файлик
, который в дальнейшем можно импортировать в сапу для покупки ссылок.
В скрипте реализован сбор поисковых запросов с 8 всем нам известных поисковиков
вот их списочек: google
Yandex
rambler
aport
bing бывший msn
qip
nigma
Список легко расширяем)), но думаю этого вполне достаточно.
У меня скрипт работает без ошибок! и да файл с поисковыми запросами сохраняется в кодировке windows-1251, так как я ее предпочитаю больше чем utf-8, и в формате
<a href="ссылка на которую пришли кнам">поисковый запрос</a>
каждый новый запрос сохраняется с новой строчки.
Собсна сам скрипт: - сохраняет в кодировке win1251
- <?php
- $Domain = strtolower($_SERVER['SERVER_NAME']);
- if (is_int(strpos($_SERVER['SERVER_NAME'], "www.", 0))) {
- $Domain = substr($_SERVER['SERVER_NAME'], 4);
- }
- define('StatFileName', "searchwords.html");
- function GetSearchText() {
- $Result = '';
- if (isset($_SERVER['HTTP_REFERER'])) {
- $Ref= $_SERVER['HTTP_REFERER'];
- if (!(empty($Ref))) {
- $UrlArray = parse_url($Ref);
- if ( $UrlArray['scheme'] == 'http' ) {
- $RefHost = $UrlArray['host'];
- $IsGoogle = strpos($RefHost, 'www.google.');
- if (($RefHost == 'search.msn.com') ||
- ( is_int($IsGoogle) && ($IsGoogle == 0) )) {
- parse_str($UrlArray['query']);
- $Result=utf8_win($q);
- } elseif (($RefHost == 'images.google.')||($RefHost == 'video.google.')||($RefHost == 'news.google.')) {
- parse_str($UrlArray['query']);
- $Result= utf8_win($q);
- } elseif (($RefHost == 'www.bing.com')||($RefHost == 'bing.com')) {
- parse_str($UrlArray['query']);
- $Result= utf8_win($q);
- } elseif (($RefHost == 'www.rambler.ru')||($RefHost == 'nova.rambler.ru')||($RefHost == 'news.rambler.ru')) {
- parse_str($UrlArray['query']);
- $Result= utf8_win($query);
- } elseif ($RefHost == 'top100.rambler.ru') {
- parse_str($UrlArray['query']);
- $Result= $query;
- } elseif (($RefHost == 'go.mail.ru')||($RefHost == 'mail.ru')||($RefHost == 'soft.mail.ru')) {
- parse_str($UrlArray['query']);
- $Result= $q;
- } elseif (($RefHost == 'yandex.ru')||($RefHost == 'www.yandex.ru')||($RefHost == 'www.ya.ru')||($RefHost == 'ya.ru')||($RefHost == 'images.yandex.ru')||($RefHost == 'news.yandex.ru')||($RefHost == 'blogs.yandex.ru')||($RefHost == 'video.yandex.ru')) {
- parse_str($UrlArray['query']);
- $Result = utf8_win($text);
- } elseif (($RefHost == 'nigma.ru')||($RefHost == 'www.nigma.ru')) {
- parse_str($UrlArray['query']);
- $Result = utf8_win($s);
- } elseif (($RefHost == 'qip.ru')||($RefHost == 'search.qip.ru')) {
- parse_str($UrlArray['query']);
- $Result = utf8_win($query);
- } elseif (($RefHost == 'aport.ru')||($RefHost == 'sm.aport.ru')) {
- parse_str($UrlArray['query']);
- $Result = $r;
- } elseif (($RefHost == 'pics.aport.ru')||($RefHost == 'audio.aport.ru')||($RefHost == 'video.aport.ru')) {
- parse_str($UrlArray['query']);
- $Result = utf8_win($r);
- }}}}
- if (!empty($Result)) {
- $Result = '<a href="http://'.$_SERVER['SERVER_NAME'].$_SERVER[REQUEST_URI].'">'.$Result."</a> \r\n";
- }
- return $Result;
- }
- $SearchText = GetSearchText();
- echo $SearchText;
- if (!empty($SearchText)) {
- $fd = fopen( StatFileName, "a" );
- fputs ($fd , "$SearchText\n");
- fclose( $fd );
- }
- function utf8_win($s) {
- $s=strtr($s,array("\xD0\xB0"=>"а", "\xD0\x90"=>"А", "\xD0\xB1"=>"б", "\xD0\x91"=>"Б",
- "\xD0\xB2"=>"в", "\xD0\x92"=>"В", "\xD0\xB3"=>"г", "\xD0\x93"=>"Г", "\xD0\xB4"=>"д",
- "\xD0\x94"=>"Д", "\xD0\xB5"=>"е", "\xD0\x95"=>"Е", "\xD1\x91"=>"ё", "\xD0\x81"=>"Ё",
- "\xD0\xB6"=>"ж", "\xD0\x96"=>"Ж", "\xD0\xB7"=>"з", "\xD0\x97"=>"З", "\xD0\xB8"=>"и",
- "\xD0\x98"=>"И", "\xD0\xB9"=>"й", "\xD0\x99"=>"Й", "\xD0\xBA"=>"к", "\xD0\x9A"=>"К",
- "\xD0\xBB"=>"л", "\xD0\x9B"=>"Л", "\xD0\xBC"=>"м", "\xD0\x9C"=>"М", "\xD0\xBD"=>"н",
- "\xD0\x9D"=>"Н", "\xD0\xBE"=>"о", "\xD0\x9E"=>"О", "\xD0\xBF"=>"п", "\xD0\x9F"=>"П",
- "\xD1\x80"=>"р", "\xD0\xA0"=>"Р", "\xD1\x81"=>"с", "\xD0\xA1"=>"С", "\xD1\x82"=>"т",
- "\xD0\xA2"=>"Т", "\xD1\x83"=>"у", "\xD0\xA3"=>"У", "\xD1\x84"=>"ф", "\xD0\xA4"=>"Ф",
- "\xD1\x85"=>"х", "\xD0\xA5"=>"Х", "\xD1\x86"=>"ц", "\xD0\xA6"=>"Ц", "\xD1\x87"=>"ч",
- "\xD0\xA7"=>"Ч", "\xD1\x88"=>"ш", "\xD0\xA8"=>"Ш", "\xD1\x89"=>"щ", "\xD0\xA9"=>"Щ",
- "\xD1\x8A"=>"ъ", "\xD0\xAA"=>"Ъ", "\xD1\x8B"=>"ы", "\xD0\xAB"=>"Ы", "\xD1\x8C"=>"ь",
- "\xD0\xAC"=>"Ь", "\xD1\x8D"=>"э", "\xD0\xAD"=>"Э", "\xD1\x8E"=>"ю", "\xD0\xAE"=>"Ю",
- "\xD1\x8F"=>"я", "\xD0\xAF"=>"Я"));
- return $s;
- }
- ?>
.......Добавлено.....
Что то не пошло у меня в кодировке 1251 на wordpress((, пришлось переделать все в utf8.
Вот скрипт: сохраняет поисковые запросы в кодировке utf-8
- <?php
- $Domain = strtolower($_SERVER['SERVER_NAME']);
- if (is_int(strpos($_SERVER['SERVER_NAME'], "www.", 0))) {
- $Domain = substr($_SERVER['SERVER_NAME'], 4);
- }
- define('StatFileName', "searchwords.html");
- function win_utf8($in_text) {
- $output = "";
- $other[1025] = "Ё";
- $other[1105] = "ё";
- $other[1028] = "Є";
- $other[1108] = "є";
- $other[1030] = "I";
- $other[1110] = "i";
- $other[1031] = "Ї";
- $other[1111] = "ї";
- for ($i = 0; $i < strlen($in_text); $i++){
- if (ord($in_text{$i}) > 191) {
- $output.="&#".(ord($in_text{$i})+848).";";
- }else {
- if (array_search($in_text{$i}, $other)===false){
- $output.=$in_text{$i};
- }else {
- $output.="&#".array_search($in_text{$i}, $other).";";
- }
- }
- }
- return $output;
- }
- function GetSearchText() {
- $Result = '';
- if (isset($_SERVER['HTTP_REFERER'])) {
- $Ref= $_SERVER['HTTP_REFERER'];
- if (!(empty($Ref))) {
- $UrlArray = parse_url($Ref);
- if ( $UrlArray['scheme'] == 'http' ) {
- $RefHost = $UrlArray['host'];
- $IsGoogle = strpos($RefHost, 'www.google.');
- if (($RefHost == 'search.msn.com') ||
- ( is_int($IsGoogle) && ($IsGoogle == 0) )) {
- parse_str($UrlArray['query']);
- $Result= $q;
- } elseif (($RefHost == 'images.google.')||($RefHost == 'video.google.')||($RefHost == 'news.google.')) {
- parse_str($UrlArray['query']);
- $Result= $q;
- } elseif (($RefHost == 'www.bing.com')||($RefHost == 'bing.com')) {
- parse_str($UrlArray['query']);
- $Result= $q;
- } elseif (($RefHost == 'www.rambler.ru')||($RefHost == 'nova.rambler.ru')||($RefHost == 'news.rambler.ru')) {
- parse_str($UrlArray['query']);
- $Result= $query;
- } elseif ($RefHost == 'top100.rambler.ru') {
- parse_str($UrlArray['query']);
- $Result= win_utf8($query);
- } elseif (($RefHost == 'go.mail.ru')||($RefHost == 'mail.ru')||($RefHost == 'soft.mail.ru')) {
- parse_str($UrlArray['query']);
- $Result= win_utf8($q);
- } elseif (($RefHost == 'yandex.ru')||($RefHost == 'www.yandex.ru')||($RefHost == 'www.ya.ru')||($RefHost == 'ya.ru')||($RefHost == 'images.yandex.ru')||($RefHost == 'news.yandex.ru')||($RefHost == 'blogs.yandex.ru')||($RefHost == 'video.yandex.ru')||($RefHost == 'm.yandex.ru')) {
- parse_str($UrlArray['query']);
- $Result = $text;
- } elseif (($RefHost == 'yandex.kz')||($RefHost == 'www.yandex.kz')||($RefHost == 'www.ya.kz')||($RefHost == 'ya.kz')||($RefHost == 'images.yandex.kz')||($RefHost == 'news.yandex.kz')||($RefHost == 'blogs.yandex.kz')||($RefHost == 'video.yandex.kz')||($RefHost == 'm.yandex.kz')) {
- parse_str($UrlArray['query']);
- $Result = $text;
- } elseif (($RefHost == 'nigma.ru')||($RefHost == 'www.nigma.ru')) {
- parse_str($UrlArray['query']);
- $Result = $s;
- } elseif (($RefHost == 'qip.ru')||($RefHost == 'search.qip.ru')) {
- parse_str($UrlArray['query']);
- $Result = $query;
- } elseif (($RefHost == 'aport.ru')||($RefHost == 'sm.aport.ru')) {
- parse_str($UrlArray['query']);
- $Result = win_utf8($r);
- } elseif (($RefHost == 'pics.aport.ru')||($RefHost == 'audio.aport.ru')||($RefHost == 'video.aport.ru')) {
- parse_str($UrlArray['query']);
- $Result = $r;
- }}}}
- if (!empty($Result)) {
- $Result = '<a href="http://'.$_SERVER['SERVER_NAME'].$_SERVER[REQUEST_URI].'">'.$Result."</a> <search><a href='$Ref'>$RefHost</a></search> \r\n";
- }
- return $Result;
- }
- $SearchText = GetSearchText();
- echo $SearchText;
- if (!empty($SearchText)) {
- if (!file_exists(StatFileName)) $SearchText = "\xEF\xBB\xBF". $SearchText;
- $fd = fopen( StatFileName, "a" );
- fputs ($fd , "$SearchText\n");
- fclose( $fd );
- }
- ?>
Сразу предупреждаю скрипт только доработан мною, сам я в php не силен, иногда полный дуб)), но если посидеть покопаться то бывает что, что то хорошее и получается сделать.
Еще записи по теме
- Аппаратная переделка тв тюнера Avermedia Studio 505 в Behold TV 505
- Установка, чтение и удаление cookie с помощью javascript
- Восстановление материнской платы - NF4UL-A9
- Самодельная втулка для закрепления багажника на велосипеды серии Avalanche фирмы GT. (GT Avalanche 2.0)
- Заработок покером
- Настройка IPX в vista x32
- Скрипт статистики сайтов Alexcounter v4.0
Комментариев: 5
Добрый вечер. Спасибо за скрипт, он мегаполезен. Я сейчас его тестирую и у меня возникли вопросы. Почему скрипт не отлавливает переходы google.com.ua и yandex.ua? Яндекс.уа у меня получилось добавить, а вот укргугл, так и не отображается в статистике. Как добавить?
У меня есть к Вам просьба. Если есть возможность – модифицируйте скрипт, чисто для гугла и яндекса (ру и укр), остальные ПС не представляю ценности (ИМХО).
Заметил, что примерно половина запросов сохраняется в кодировке win1251 и в списке они выглядят знаками вопросов.
это старый вариант скрипта, я его переделал 100500раз и сделал для него админку http://www.keblog.ru/page/skript-statistiki-poiskovyh-zaprosov здесь смотрите))))
Народ а не подскажете, при работе скрипт может имитировать пользователя за компом, т.е. поочередно выдавать поисковые запросы например в гугл или яндекс, таким образом:подал запрос получил от поисковика выборку в сообветствии с запросом, затем стер старый запрос набрал новый снова получил выборку и т.д.?
Иван, что-то уж сложное ты хочешь от этого скрипта, на такое он не способен это точно причем он уже устарел и морально и в прямом смысле. Он не будет собирать поисковые запросы ни по гуглу ни по яндексу, у них изменились входные параметры, да и не только поэтому, его нужно координально переделывать.