Приведи друга: тебе 15% с каждого заказа, ему скидка 10%
ГлавнаяГлоссарийКанонизация адресов
Глоссарий

Канонизация адресов

Сведение множества адресов, ведущих на одну страницу, к единой форме, чтобы датасет считал страницы, а не ссылки.

Одна и та же страница доступна по удивительному числу адресов. Метка кампании, косая черта в конце, заглавная буква в пути, идентификатор сессии, порядок сортировки, ничего видимо не меняющий: каждое даёт отдельную строку, и обходчик, у которого ключом является строка, собирает одну страницу многократно.

Ответ сайты публикуют сами. Элемент canonical в шапке называет адрес, который владелец считает основным, и это самый дешёвый сигнал для дедупликации из доступных. Прочитать его ничего не стоит, и прав он заметно чаще любого правила, которое вы напишете сами.

Там, где его нет, работа сводится к решению, какие параметры значимы. Пагинация и фильтры обычно да, метки кампаний, реферреры и идентификаторы сессий обычно нет. Это решение принимается один раз в конвейере, а не в каждом потребителе данных после.

Отказ здесь тихий и дорогой. Ничто не падает, обход завершается, и датасет просто сообщает больше объявлений, товаров или вакансий, чем существует. Любое число, посчитанное по нему, завышено на величину, которую задним числом никто не оценит.

Откуда берутся дубликаты

Самый крупный источник это параметры. Метки кампаний, партнёрские идентификаторы, внутренняя аналитика и порядок сортировки меняют строку, не меняя страницу.

Дальше идут вариации пути: косая черта в конце, разный регистр, явно указанный индексный файл, одна и та же статья под префиксом категории и она же в корне.

Замыкают набор вариации протокола и хоста: http и https, с www и без, плюс страновые поддомены, отдающие одному посетителю одинаковое содержимое.

Прочитать ответ прямо со страницы

Сначала смотрите канонический адрес и только при его отсутствии пишите правила:

Что страница говорит о себе

# адрес, который сайт считает основным
curl -s -x login_c_US:password@proxy.sotaproxy.com:10000 https://target.example/product?utm_source=x \
  | grep -o '<link[^>]*rel="canonical"[^>]*>'

# сверьте его с тем, что запрашивали, до того как что-то сохранять
  • Ключом храните канонический адрес, а запрошенный отдельным полем. Нужны оба: один для дедупликации, другой чтобы повторить загрузку.
  • Канонический адрес, указывающий не туда, куда ожидалось, это информация, а не ошибка. Часть сайтов намеренно сводит варианты на родительскую страницу.
  • Дедуплицируйте при приёме. В отчётности это означает, что каждый потребитель таблицы повторяет ту же работу и приходит к другим числам.

Где это ломается

Канонический адрес это подсказка, а не правило

Он выражает намерение владельца. Часть сайтов проставляет его неверно, и проверка на выборке стоит потраченной минуты.

Не всякий параметр это шум

Номера страниц и фильтры меняют содержимое. Их вырезание склеивает страницы, которые действительно разные.

Дедупликация это не шаг отчётности

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

Редиректы это не канонизация

Редирект вас перемещает, канонический адрес сообщает, где содержимое числится. Одно бывает без другого.

Готов использовать канонизация адресов?

SotaProxy даёт доступ к ротирующим резидентским, мобильным, дата-центр и ISP прокси. Без минимальных платежей.

Начать