Считаете количество просмотров страницы, игнорируя поисковые системы?

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

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
9
0
1 424
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

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

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

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

Ответ принят как подходящий

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

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

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

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

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

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

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

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

Мы изменили наш метод увеличения на сообщение ajax - хотя пользователи без javascript не будут влиять на количество просмотров вопроса, мы также не хотели иметь черный список ботов!

Jarrod Dixon 14.09.2008 12:20

Поисковые системы имеют доступ к файлам css: free-seo-news.com/newsletter246.htm ... также, когда вы проверяете некоторые сайты в кеше Google, они имеют стиль, это подтверждает, что они сканируют и сохраняют файлы css.

davidhq 13.04.2013 16:49

Я почти уверен, что поисковые системы сейчас запускают Javascript

Nate 13.12.2014 22:26

Вам действительно не нужно использовать AJAX, просто используйте JavaScript, чтобы добавить iFrame за пределы экрана. ДЕРЖАТЬ ПРОСТОЙ

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

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

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

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

  <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> заключается в том, что пользователь не увидит красный крестик, если есть проблема со сценарием hitcounter. В некоторых случаях также важно знать 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"

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