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

Оптимизированная (но менее читаемая) реализация:

function base64toBlob(base64Data, contentType) {
    contentType = contentType || '';
    var sliceSize = 1024;
    var byteCharacters = atob(base64Data);
    var bytesLength = byteCharacters.length;
    var slicesCount = Math.ceil(bytesLength / sliceSize);
    var byteArrays = new Array(slicesCount);

    for (var sliceIndex = 0; sliceIndex < slicesCount; ++sliceIndex) {
        var begin = sliceIndex * sliceSize;
        var end = Math.min(begin + sliceSize, bytesLength);

        var bytes = new Array(end - begin);
        for (var offset = begin, i = 0; offset < end; ++i, ++offset) {
            bytes[i] = byteCharacters[offset].charCodeAt(0);
        }
        byteArrays[sliceIndex] = new Uint8Array(bytes);
    }
    return new Blob(byteArrays, { type: contentType });
}
8
задан gprathour 9 June 2017 в 09:52
поделиться

6 ответов

Вызов 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 или сервис как аналитика Google, обе из которой уже решила эту проблему.

4
ответ дан 5 December 2019 в 20:20
поделиться

Вы не должны действительно использовать Ajax, просто использовать JavaScript для добавления iFrame от экрана. СОХРАНИТЕ ЭТО ПРОСТЫМ

<script type="javascript">
document.write('<iframe src="myLogScript.php" style="visibility:hidden" width="1" height="1" frameborder="0">');
</script>
1
ответ дан 5 December 2019 в 20:20
поделиться

Для решения этой проблемы, я реализовал простой фильтр, который посмотрит на заголовок Агента пользователя в Запросе HTTP и сравнит ее со списком известных роботов.

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

2
ответ дан 5 December 2019 в 20:20
поделиться

Расширение ответа Matt Sheppard могло бы быть чем-то как следующее:

  <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> это, пользователь не будет видеть красный x, если будет проблема со сценарием счетчика посещений. В некоторых случаях также важно знать 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"
1
ответ дан 5 December 2019 в 20:20
поделиться

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

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

0
ответ дан 5 December 2019 в 20:20
поделиться

Вы или оказываетесь перед необходимостью делать то, что Вы сказали в своем вопросе с Ajax. Или исключите Строки агента пользователя, которые являются известными поисковыми системами. Единственный верный способ остановить ботов с Ajax.

0
ответ дан 5 December 2019 в 20:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: