Правила очистки площадок

Главная

Правила чистки площадок РСЯ

Общий пайплайн обработки

Процесс чистки площадок проходит через следующие этапы:

  1. CheckType - проверка типа кампании
  2. StatLoad - загрузка статистики из API
  3. StatDiff - анализ различий в статистике
  4. ListWhite - проверка белого списка доменов
  5. ListGray - проверка серого списка доменов
  6. ListWhiteApps - проверка белого списка приложений
  7. Stat1Bounces - анализ отказов
  8. Stat2CtrMin - анализ низкого CTR
  9. Stat3CtrMax - анализ подозрительно высокого CTR
  10. Stat4ViewsBlackList - анализ подозрительных площадок
  11. NetworkResult - формирование результата
  12. NetworkSetYandex - применение изменений в API
  13. FinishCampaign - завершение обработки кампании

Правила фильтрации

🤗 WhiteList (Белый список)

🤗 GrayList (Серый список)

🤗 APPS-WhiteList (Белый список приложений)

Статистические правила

[Stat1Bounces] - Много отказов

[Stat2CtrMin] - Низкий CTR

[Stat3CtrMax] - Подозрительно высокий CTR

[Stat4ViewsBlackList] - Подозрительные площадки

Логика принятия решений

Приоритет правил:

  1. Белые списки - имеют высший приоритет, исключают из фильтрации
  2. Статистические правила - применяются к площадкам не в белых списках
  3. Черные списки - применяются к площадкам с большим количеством показов

Границы попадания в правила:

Исключения:

⚠️ ВАЖНО: Лимит в 1000 площадок

Ограничение API Яндекс.Директ

Текущая логика обработки

1. Проверка в NetworkSetYandex.php

if (count($excluded) > 1000) {
    $this->io->error("{$login}\t{$campain['Id']}\t{$campain['Name']}\tExcludedSites > 1000");
}

2. Проверка в FinishCampaign.php

if ($this->count++ > 1000) {
    $this->io->writeln("{$login}\t{$campain['Id']}\t{$campain['Name']}");
    die("Count == {$this->count}\n");
}

Рекомендации по улучшению

  1. Приоритизация площадок:

    • Сначала исключать площадки с худшими показателями
    • Использовать статистику для ранжирования
  2. Логика обрезки:

    • Если площадок > 1000, оставлять только самые проблемные
    • Логировать отброшенные площадки
  3. Разделение кампаний:

    • Разбивать большие кампании на несколько
    • Применять лимиты к каждой отдельно

TODO из README.md

🔄 Проверка минусованных доменов

Когда проводить проверку

При достижении лимита в 1000 исключенных площадок рекомендуется провести аудит уже минусованных доменов.

Цель проверки

Методика проверки

1. Получение списка минусованных доменов

# Получить список исключенных площадок из API
./symfony app:net --limit=1 --campaign=ID_КАМПАНИИ

2. Проверка доступности доменов

# Проверка DNS-резолвинга
dig domain.com @1.1.1.1 +short

# Проверка HTTP-доступности
curl -I http://domain.com --connect-timeout 5

# Проверка HTTPS-доступности
curl -I https://domain.com --connect-timeout 5

3. Анализ статистики

4. Критерии для удаления из исключений

Команды для проверки

# Запуск проверки конкретного домена
./symfony app:domains --domain=example.com

# Проверка IP-адреса домена
redis-cli -n 3 get "\$ya:domains:example.com:ip"

# Проверка статуса домена в Yandex Search
redis-cli -n 3 get "\$ya:domains:example.com:ya-status"

Автоматизация процесса

Скрипт проверки минусованных доменов

#!/bin/bash
# check-excluded-domains.sh

# Получить список исключенных доменов
excluded_domains=$(redis-cli -n 3 keys "\$domains-stat:*" | sed 's/\$domains-stat://')

for domain in $excluded_domains; do
    echo "Проверяем домен: $domain"

    # Проверка DNS
    if ! dig $domain @1.1.1.1 +short | grep -q .; then
        echo "❌ $domain - DNS не резолвится"
        continue
    fi

    # Проверка HTTP
    if ! curl -I http://$domain --connect-timeout 5 --silent | grep -q "HTTP"; then
        echo "❌ $domain - HTTP недоступен"
        continue
    fi

    echo "✅ $domain - доступен"
done

Рекомендации

  1. Периодичность: Проводить проверку раз в месяц
  2. Приоритет: Сначала проверять домены с 0 трафика
  3. Документирование: Вести лог проверок и решений
  4. Тестирование: Перед массовым удалением тестировать на одной кампании

Интеграция с существующим процессом