Добавление кода отслеживания веб-аналитики с помощью правил исходящего трафика

Руслан Якушев

Этот раздел документации относится к модулю переопределения URL-адресов версии 2.0 для IIS 7.

В этом пошаговом руководстве описано, как создать правило перезаписи исходящего трафика IIS, которое вставляет скрипт отслеживания веб-аналитики в веб-страницы.

Предварительные требования

Чтобы выполнить это пошаговое руководство, вам потребуется следующее:

  1. Модуль переопределения URL-адресов 2.0 RCrelease установлен.

Введение

Целью службы веб-аналитики является предоставление издателям веб-сайтов статистической информации о посетителях их сайтов. Эта информация помогает издателям сайтов оптимизировать контент, рекламу и предложения услуг, чтобы повысить удовлетворенность клиентов и рентабельность инвестиций. Как правило, службы веб-аналитики, такие как Google Analytics или Omniture, работают путем сбора данных о посетителях веб-сайтов. Когда владельцы сайтов запрашивают отчеты, поставщик веб-аналитики обрабатывает эти данные и представляет их владельцам сайтов в удобном и понятном формате. Чтобы включить сбор данных, необходимых для аналитики, владельцы веб-сайтов должны инструментировать все страницы веб-сайта с помощью скрипта отслеживания, выданного поставщиком услуг веб-аналитики.

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

Создание правила перезаписи исходящего трафика

Для начала вы создадите правило перезаписи для исходящего трафика, которое добавляет фрагмент кода JavaScript в HTML-ответ. Фрагмент кода вставляется непосредственно перед закрывающим <тегом /body> , как показано на следующем рисунке.

... 
    <script type='text/javascript'>
        //Your web analytics tracking code goes here...
    </script>
</body>

Пример кода отслеживания веб-аналитики H T ML и кода X M L с функцией HtmlEncode.ПРЕДУПРЕЖДЕНИЕ: В этом конкретном примере предполагается, что код JavaScript из доверенного источника и должен быть вставлен на HTML-страницу как есть. Во многих других случаях, когда заголовки ответа или содержимое ответа изменяются правилом исходящего перезаписи, следует соблюдать дополнительные меры предосторожности, чтобы убедиться, что текст, вставленный в ответ, не содержит исполняемого кода на стороне клиента, что может привести к уязвимостям межсайтовых сценариев. Это особенно важно, если правило перезаписи использует ненадежные данные, такие как заголовки HTTP или строка запроса, для создания строки, которая будет вставлена в HTTP-ответ. В таких случаях строка замены должна быть закодирована с помощью функции HtmlEncode , например:

<action type="Rewrite" value="{HtmlEncode:{HTTP_REFERER}}" />

Чтобы создать правило для исходящего трафика, выполните следующие действия.

  1. Открытие диспетчера IIS
  2. Выберите "Веб-сайт по умолчанию"
  3. В представлении функций выберите "Модуль переопределения URL-адресов".
    Снимок экрана: представление функций окна диспетчера I I S С выбранным параметром
  4. В области Действия справа щелкните "Добавить правила...". В диалоговом окне "Добавление правил" выберите "Пустое правило" в категории "Правила для исходящего трафика" и нажмите кнопку ОК.
    Снимок экрана: диалоговое окно Добавления правил с выбранным пустым правилом в разделе Правила для исходящего трафика.

Теперь необходимо определить фактическое правило для исходящего трафика. В модуле переопределения URL-адресов 2.0 правило перезаписи исходящего трафика определяется путем указания следующих сведений:

  • Имя правила.
  • Необязательное условие, определяющее, следует ли применять это правило к ответу.
  • Шаблон, используемый для сопоставления строки в ответе.
  • Необязательный набор условий.
  • Действие, выполняемое при совпадении шаблона и успешном выполнении всех проверок условий.

Именование правила

В текстовом поле "Имя" введите имя, которое будет однозначно идентифицировать правило, например"Добавить скрипт отслеживания".

Определение условия

Предварительное условие используется для оценки того, следует ли выполнять оценку правил для исходящего трафика в ответе. Например, если правило изменяет html-содержимое, следует оценивать только HTTP-ответы с заголовком типа контента, для которого задано значение "text/html". Оценка исходящих правил и перезапись содержимого — это ресурсоемкая операция, которая может негативно повлиять на производительность веб-приложения. Поэтому используйте предварительные условия, чтобы сузить случаи применения правил исходящего трафика.

Так как создаваемое правило должно применяться только к HTML-ответам, вы определите условие, которое проверяет, эквивалентен ли тип содержимого заголовка HTTP-ответа "text/html".

Чтобы определить условие, выполните следующие действия.

  1. В списке Предварительные условия выберите "<Создать новое предварительное условие...>".

  2. Откроется диалоговое окно редактора предварительных условий, где необходимо определить условие. Укажите параметры предварительных условий следующим образом:

    • Имя: "IsHTML"

    • Использование регулярных выражений

    • Нажмите кнопку "Добавить", чтобы открыть диалоговое окно "Добавить условие". В этом диалоговом окне укажите:

      • Входные данные условия: "{RESPONSE_CONTENT_TYPE}"

      • Проверьте, соответствует ли входная строка : "Соответствует шаблону"

      • Шаблон: "^text/html"

        Снимок экрана: диалоговое окно добавления редактора предварительных условий с параметрами.

  3. Нажмите кнопку ОК, чтобы сохранить предварительное условие и вернуться на страницу "Изменение правила".

Определение соответствующего область

Правило перезаписи для исходящего трафика может работать с содержимым заголовка HTTP или с содержимым текста ответа. Это правило должно изменить содержимое ответа, поэтому в раскрывающемся списке "Область сопоставления" выберите "Ответ".

Определение шаблона

В раскрывающемся списке Using:выберите параметр "Точное соответствие".

В текстовом поле "Шаблон" введите следующую строку:

</body>

Определение действия

Выберите тип действия "Перезаписать", указанный в поле группы "Действие". В текстовом поле "Значение" введите следующую строку:

<script type='text/javascript'>//Your web analytics tracking code goes here...</script></body>

Эта строка задает новое значение, которое будет использоваться в качестве замены сопоставленной строки в ответе. В этом конкретном случае строка "</body>" будет заменена фрагментом кода JavaScript, за которым следует закрывающий тег текста HTML.

Оставьте значения по умолчанию для всех остальных параметров. Страница свойств "Изменить правило" должна выглядеть следующим образом:

Снимок экрана: страница свойств

Сохраните правило, щелкнув действие "Применить" справа.

Просмотр правила перезаписи в файле конфигурации

Правила перезаписи хранятся либо в aplicationHost.config файле, либо в web.config файлах. Чтобы проверка конфигурацию только что созданного правила, откройте файл web.config, расположенный в %SystemDrive%\inetput\wwwroot\. В этом файле вы увидите <rewrite> раздел, содержащий все определения правил:

<rewrite>
 <outboundRules>
  <rule name="Add tracking script" patternSyntax="ExactMatch" preCondition="">
   <match filterByTags="None" pattern="&lt;/body>" />
   <action type="Rewrite" value="&lt;script type='text/javascript'>//Your web analytics tracking code goes here...&lt;/script>&lt;/body>" />
  </rule>
 <preConditions>
  <preCondition name="IsHTML">
    <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
  </preCondition>
 </preConditions>
</outboundRules>
</rewrite>

Тестирование правила

Чтобы проверить, правильно ли правило добавляет код JavaScript на веб-страницу, запросите этот URL-адрес http://localhost/iisstart.htm.

Получив ответ от сервера, откройте фактический исходный код HTML (если используется Интернет-Обозреватель 8, а затем перейдите в раздел Страница —> Просмотр источника). HTML-код ответа будет содержать код JavaScript перед закрывающим тегом текста HTML:

Снимок экрана: окно I I S 7 с блокнотом с кодом JavaScript.

Итоги

В этом пошаговом руководстве вы узнали, как использовать правила исходящего трафика в модуле переопределения URL-адресов версии 2 для изменения содержимого HTTP-ответа на лету. Эта возможность очень полезна, если необходимо внести незначительные изменения в HTTP-ответы, созданные веб-приложениями, но у вас нет контроля над приложением или нецелесообразно вносить крупномасштабные изменения в приложение.