Подсчитываете количество просмотров страницы, игнорирующей поисковые системы?

StackOverflow https://stackoverflow.com/questions/45824

  •  09-06-2019
  •  | 
  •  

Вопрос

Я заметил, что StackOverflow имеет количество просмотров для каждого вопроса, и что эти числа просмотров довольно низкие и точные.

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

Я думаю, что один из способов не учитывать робота — это подсчитывать просмотры с помощью вызова AJAX после загрузки страницы, но я уверен, что есть и другие, более эффективные способы игнорировать поисковые системы в ваших счетчиках посещений, в то же время позволяя им просканировать ваш сайт.Знаешь ли ты какой-нибудь?

Это было полезно?

Решение

Вызов AJAX сделает это, но обычно поисковые системы не загружают изображения, файлы JavaScript или CSS, поэтому может быть проще включить один из этих файлов на страницу и передать URL-адрес страницы, к которой вы хотите зарегистрировать запрос. в качестве параметра в запросе файла.

Например, на странице...

http://www.example.com/example.html

Вы можете включить в раздел head

<link href="empty.css?log=example.html" rel="stylesheet" type="text/css" />

И пусть ваша серверная часть зарегистрирует запрос, а затем вернет пустой файл CSS.Тот же подход применим к JavaScript или файлу изображения, хотя во всех случаях вам следует внимательно посмотреть, какое кэширование может иметь место.

Другим вариантом было бы устранить поисковые системы на основе их пользовательский агент.На сайте есть большой список возможных пользовательских агентов. http://user-agents.org/ чтобы вы начали.Конечно, вы можете пойти другим путем и считать запросы только от тех вещей, которые, как вы знаете, являются веб-браузерами (с учетом IE, Firefox, Safari, Opera и этого новомодного Chrome вы достигнете 99% успеха).

Еще проще было бы использовать инструмент анализа журналов, например австатс или такая услуга, как Гугл Аналитика, оба из которых уже решили эту проблему.

Другие советы

Чтобы решить эту проблему, я реализовал простой фильтр, который просматривал заголовок User-Agent в HTTP-запросе и сравнивал его со списком известных роботов.

Я получил список роботов от www.robotstxt.org.Его можно загрузить в простом текстовом формате, который можно легко проанализировать для автоматического создания «черного списка».

На самом деле вам не обязательно использовать AJAX, просто используйте JavaScript, чтобы добавить закадровый iFrame.БУДЬ ПРОЩЕ

<script type="javascript">
document.write('<iframe src="myLogScript.php" style="visibility:hidden" width="1" height="1" frameborder="0">');
</script>

Расширение ответа Мэтта Шеппарда может быть примерно следующим:

  <script type="text/javascript">
  var thePg=window.location.pathname;
  var theSite=window.location.hostname;
  var theImage=new Image;
  theImage.src="/test/hitcounter.php?pg=" + thePg + "?site=" + theSite;
  </script>

который можно подключить к шаблону верхнего или нижнего колонтитула страницы без необходимости замены имени страницы на стороне сервера.Обратите внимание: если вы включите строку запроса (window.location.search), ее надежная версия должна закодировать эту строку, чтобы злоумышленники не могли создавать запросы страниц, использующие уязвимости на основе странных вещей в URL-адресах.Самое приятное в этом по сравнению с.обычный <img> тег или <iframe> заключается в том, что пользователь не увидит красный крестик, если возникнет проблема со сценарием счетчика посещений.В некоторых случаях также важно знать URL-адрес, который был просмотрен браузером перед перезаписью и т. д.это происходит на стороне сервера, и это дает вам это.Если вы хотите и то, и другое, добавьте еще один параметр на стороне сервера, который также вставит эту версию имени страницы в строку запроса.

Пример файлов журналов теста этой страницы:

10.1.1.17 - - [13/Sep/2008:22:21:00 -0400] "GET /test/testpage.html HTTP/1.1" 200 306 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16"
10.1.1.17 - - [13/Sep/2008:22:21:00 -0400] "GET /test/hitcounter.php?pg=/test/testpage.html?site=www.home.***.com HTTP/1.1" 301 - "http://www.home.***.com/test/testpage.html" "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16"

Причина, по которой Stack Overflow имеет точное количество просмотров, заключается в том, что каждое просмотр/пользователь учитывается только один раз.

Стороннее приложение счетчика посещений (и веб-статистики) часто отфильтровывает поисковые системы и отображает их в отдельном окне/вкладке/разделе.

Вам либо придется сделать то, что вы сказали в своем вопросе, с помощью AJAX.Или исключите строки User-Agent, принадлежащие известным поисковым системам.Единственный надежный способ остановить ботов — это AJAX.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top