Сборщик статистики поисковых запросов

Рубрика: Новости -> Скрипты -> php
Среда, 18 ноября 2009 г.
Просмотров: 10032
Подписаться на комментарии по RSS

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

, который в дальнейшем можно импортировать в сапу для покупки ссылок.

В скрипте реализован сбор поисковых запросов с 8 всем нам известных поисковиков

вот их списочек: google

                 Yandex

                 mail

                 rambler

                 aport

                 bing бывший msn

                 qip

                 nigma

Список легко расширяем)), но думаю этого вполне достаточно.

У меня скрипт работает без ошибок! и да файл с поисковыми запросами сохраняется в кодировке windows-1251, так как я ее предпочитаю больше чем utf-8, и в формате

<a href="ссылка на которую пришли кнам">поисковый запрос</a>

каждый новый запрос сохраняется с новой строчки.

Собсна сам скрипт: - сохраняет в кодировке win1251


  1. <?php
  2. $Domain = strtolower($_SERVER['SERVER_NAME']);
  3. if (is_int(strpos($_SERVER['SERVER_NAME'], "www.", 0))) {
  4. $Domain =  substr($_SERVER['SERVER_NAME'], 4);
  5. }
  6. define('StatFileName', "searchwords.html");
  7. function GetSearchText() {
  8. $Result = '';
  9. if (isset($_SERVER['HTTP_REFERER'])) {
  10. $Ref= $_SERVER['HTTP_REFERER'];
  11. if (!(empty($Ref))) {
  12. $UrlArray = parse_url($Ref);
  13. if ( $UrlArray['scheme'] == 'http' ) {
  14. $RefHost = $UrlArray['host'];
  15. $IsGoogle = strpos($RefHost, 'www.google.');
  16. if (($RefHost == 'search.msn.com')  ||
  17. ( is_int($IsGoogle) && ($IsGoogle == 0) )) {
  18. parse_str($UrlArray['query']);
  19. $Result=utf8_win($q);
  20. } elseif (($RefHost == 'images.google.')||($RefHost == 'video.google.')||($RefHost == 'news.google.')) {
  21. parse_str($UrlArray['query']);
  22. $Result= utf8_win($q);
  23. } elseif (($RefHost == 'www.bing.com')||($RefHost == 'bing.com')) {
  24. parse_str($UrlArray['query']);
  25. $Result= utf8_win($q);
  26. } elseif (($RefHost == 'www.rambler.ru')||($RefHost == 'nova.rambler.ru')||($RefHost == 'news.rambler.ru')) {
  27. parse_str($UrlArray['query']);
  28. $Result= utf8_win($query);
  29. } elseif ($RefHost == 'top100.rambler.ru') {
  30. parse_str($UrlArray['query']);
  31. $Result= $query;
  32. } elseif (($RefHost == 'go.mail.ru')||($RefHost == 'mail.ru')||($RefHost == 'soft.mail.ru')) {
  33. parse_str($UrlArray['query']);
  34. $Result= $q;
  35. } 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')) {
  36. parse_str($UrlArray['query']);
  37. $Result = utf8_win($text);
  38. } elseif (($RefHost == 'nigma.ru')||($RefHost == 'www.nigma.ru')) {
  39. parse_str($UrlArray['query']);
  40. $Result = utf8_win($s);
  41. } elseif (($RefHost == 'qip.ru')||($RefHost == 'search.qip.ru')) {
  42. parse_str($UrlArray['query']);
  43. $Result = utf8_win($query);
  44. } elseif (($RefHost == 'aport.ru')||($RefHost == 'sm.aport.ru')) {
  45. parse_str($UrlArray['query']);
  46. $Result = $r;
  47. } elseif (($RefHost == 'pics.aport.ru')||($RefHost == 'audio.aport.ru')||($RefHost == 'video.aport.ru')) {
  48. parse_str($UrlArray['query']);
  49. $Result = utf8_win($r);
  50. }}}}
  51. if (!empty($Result))  {
  52. $Result = '<a href="http://'.$_SERVER['SERVER_NAME'].$_SERVER[REQUEST_URI].'">'.$Result."</a> \r\n";
  53. }
  54. return $Result;
  55. }
  56. $SearchText = GetSearchText();
  57. echo $SearchText;
  58. if (!empty($SearchText)) {
  59. $fd = fopen( StatFileName, "a" );
  60. fputs ($fd , "$SearchText\n");
  61. fclose( $fd );
  62. }
  63. function utf8_win($s) {
  64. $s=strtr($s,array("\xD0\xB0"=>"а", "\xD0\x90"=>"А", "\xD0\xB1"=>"б", "\xD0\x91"=>"Б",
  65.  "\xD0\xB2"=>"в", "\xD0\x92"=>"В", "\xD0\xB3"=>"г", "\xD0\x93"=>"Г", "\xD0\xB4"=>"д",
  66.  "\xD0\x94"=>"Д", "\xD0\xB5"=>"е", "\xD0\x95"=>"Е", "\xD1\x91"=>"ё", "\xD0\x81"=>"Ё",
  67.  "\xD0\xB6"=>"ж", "\xD0\x96"=>"Ж", "\xD0\xB7"=>"з", "\xD0\x97"=>"З", "\xD0\xB8"=>"и",
  68.  "\xD0\x98"=>"И", "\xD0\xB9"=>"й", "\xD0\x99"=>"Й", "\xD0\xBA"=>"к", "\xD0\x9A"=>"К",
  69.  "\xD0\xBB"=>"л", "\xD0\x9B"=>"Л", "\xD0\xBC"=>"м", "\xD0\x9C"=>"М", "\xD0\xBD"=>"н",
  70.  "\xD0\x9D"=>"Н", "\xD0\xBE"=>"о", "\xD0\x9E"=>"О", "\xD0\xBF"=>"п", "\xD0\x9F"=>"П",
  71.  "\xD1\x80"=>"р", "\xD0\xA0"=>"Р", "\xD1\x81"=>"с", "\xD0\xA1"=>"С", "\xD1\x82"=>"т",
  72.  "\xD0\xA2"=>"Т", "\xD1\x83"=>"у", "\xD0\xA3"=>"У", "\xD1\x84"=>"ф", "\xD0\xA4"=>"Ф",
  73.  "\xD1\x85"=>"х", "\xD0\xA5"=>"Х", "\xD1\x86"=>"ц", "\xD0\xA6"=>"Ц", "\xD1\x87"=>"ч",
  74.  "\xD0\xA7"=>"Ч", "\xD1\x88"=>"ш", "\xD0\xA8"=>"Ш", "\xD1\x89"=>"щ", "\xD0\xA9"=>"Щ",
  75.  "\xD1\x8A"=>"ъ", "\xD0\xAA"=>"Ъ", "\xD1\x8B"=>"ы", "\xD0\xAB"=>"Ы", "\xD1\x8C"=>"ь",
  76.  "\xD0\xAC"=>"Ь", "\xD1\x8D"=>"э", "\xD0\xAD"=>"Э", "\xD1\x8E"=>"ю", "\xD0\xAE"=>"Ю",
  77.  "\xD1\x8F"=>"я", "\xD0\xAF"=>"Я"));
  78. return $s;
  79. }
  80. ?>

.......Добавлено.....

Что то не пошло у меня в кодировке 1251 на wordpress((, пришлось переделать все в utf8.

Вот скрипт: сохраняет поисковые запросы в кодировке utf-8


  1. <?php
  2. $Domain = strtolower($_SERVER['SERVER_NAME']);
  3. if (is_int(strpos($_SERVER['SERVER_NAME'], "www.", 0))) {
  4. $Domain =  substr($_SERVER['SERVER_NAME'], 4);
  5. }
  6. define('StatFileName', "searchwords.html");
  7. function win_utf8($in_text) {
  8.    $output = "";
  9.    $other[1025] = "Ё";
  10.    $other[1105] = "ё";
  11.    $other[1028] = "Є";
  12.    $other[1108] = "є";
  13.    $other[1030] = "I";
  14.    $other[1110] = "i";
  15.    $other[1031] = "Ї";
  16.    $other[1111] = "ї";
  17.    for ($i = 0; $i < strlen($in_text); $i++){
  18.       if (ord($in_text{$i}) > 191) {
  19.          $output.="&#".(ord($in_text{$i})+848).";";
  20.       }else {
  21.          if (array_search($in_text{$i}, $other)===false){
  22.             $output.=$in_text{$i};
  23.          }else {
  24.             $output.="&#".array_search($in_text{$i}, $other).";";
  25.          }
  26.       }
  27.    }
  28.    return $output;
  29. }
  30. function GetSearchText() {
  31. $Result = '';
  32. if (isset($_SERVER['HTTP_REFERER'])) {
  33. $Ref= $_SERVER['HTTP_REFERER'];
  34. if (!(empty($Ref))) {
  35. $UrlArray = parse_url($Ref);
  36. if ( $UrlArray['scheme'] == 'http' ) {
  37. $RefHost = $UrlArray['host'];
  38. $IsGoogle = strpos($RefHost, 'www.google.');
  39. if (($RefHost == 'search.msn.com')  ||
  40. ( is_int($IsGoogle) && ($IsGoogle == 0) )) {
  41. parse_str($UrlArray['query']);
  42. $Result= $q;
  43. } elseif (($RefHost == 'images.google.')||($RefHost == 'video.google.')||($RefHost == 'news.google.')) {
  44. parse_str($UrlArray['query']);
  45. $Result= $q;
  46. } elseif (($RefHost == 'www.bing.com')||($RefHost == 'bing.com')) {
  47. parse_str($UrlArray['query']);
  48. $Result= $q;
  49. } elseif (($RefHost == 'www.rambler.ru')||($RefHost == 'nova.rambler.ru')||($RefHost == 'news.rambler.ru')) {
  50. parse_str($UrlArray['query']);
  51. $Result= $query;
  52. } elseif ($RefHost == 'top100.rambler.ru') {
  53. parse_str($UrlArray['query']);
  54. $Result= win_utf8($query);
  55. } elseif (($RefHost == 'go.mail.ru')||($RefHost == 'mail.ru')||($RefHost == 'soft.mail.ru')) {
  56. parse_str($UrlArray['query']);
  57. $Result= win_utf8($q);
  58. } 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')) {
  59. parse_str($UrlArray['query']);
  60. $Result = $text;
  61. } 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')) {
  62. parse_str($UrlArray['query']);
  63. $Result = $text;
  64. } elseif (($RefHost == 'nigma.ru')||($RefHost == 'www.nigma.ru')) {
  65. parse_str($UrlArray['query']);
  66. $Result = $s;
  67. } elseif (($RefHost == 'qip.ru')||($RefHost == 'search.qip.ru')) {
  68. parse_str($UrlArray['query']);
  69. $Result = $query;
  70. } elseif (($RefHost == 'aport.ru')||($RefHost == 'sm.aport.ru')) {
  71. parse_str($UrlArray['query']);
  72. $Result = win_utf8($r);
  73. } elseif (($RefHost == 'pics.aport.ru')||($RefHost == 'audio.aport.ru')||($RefHost == 'video.aport.ru')) {
  74. parse_str($UrlArray['query']);
  75. $Result = $r;
  76. }}}}
  77. if (!empty($Result))  {
  78. $Result = '<a href="http://'.$_SERVER['SERVER_NAME'].$_SERVER[REQUEST_URI].'">'.$Result."</a> <search><a href='$Ref'>$RefHost</a></search> \r\n";
  79. }
  80. return $Result;
  81. }
  82. $SearchText = GetSearchText();
  83. echo $SearchText;
  84. if (!empty($SearchText)) {
  85. if (!file_exists(StatFileName)) $SearchText = "\xEF\xBB\xBF". $SearchText;
  86. $fd = fopen( StatFileName, "a" );
  87. fputs ($fd , "$SearchText\n");
  88. fclose( $fd );
  89. }
  90. ?>

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

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru rutvit.ru myspace.com technorati.com digg.com friendfeed.com pikabu.ru blogger.com liveinternet.ru livejournal.ru memori.ru google.com bobrdobr.ru mister-wong.ru yahoo.com yandex.ru del.icio.us

Комментариев: 5

  1. 2011-11-02 в 02:27:22 | Константин

    Добрый вечер. Спасибо за скрипт, он мегаполезен. Я сейчас его тестирую и у меня возникли вопросы. Почему скрипт не отлавливает переходы google.com.ua и yandex.ua? Яндекс.уа у меня получилось добавить, а вот укргугл, так и не отображается в статистике. Как добавить?

    У меня есть к Вам просьба. Если есть возможность – модифицируйте скрипт, чисто для гугла и яндекса (ру и укр), остальные ПС не представляю ценности (ИМХО).

  2. 2011-11-02 в 11:24:57 | Аноним

    Заметил, что примерно половина запросов сохраняется в кодировке win1251 и в списке они выглядят знаками вопросов.

  3. это старый вариант скрипта, я его переделал 100500раз и сделал для него админку http://www.keblog.ru/page/skript-statistiki-poiskovyh-zaprosov здесь смотрите))))

  4. Народ а не подскажете, при работе скрипт может имитировать пользователя за компом, т.е. поочередно выдавать поисковые запросы например в гугл или яндекс, таким образом:подал запрос получил от поисковика выборку в сообветствии с запросом, затем стер старый запрос набрал новый снова получил выборку и т.д.?

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

Оставьте комментарий!

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

(войти без комментирования)

Имя и сайт используются только при регистрации

Если указать email (зарегистрироваться), то будет уведомление о новых комментариях.

Выберите человечка с поднятой рукой!