MainWP в логах — не безымянный «прочий сервис», а конкретная, хорошо задокументированная система управления WordPress-сайтами с открытым кодом. Важнее другое: по устройству самого MainWP этот трафик почти всегда означает не постороннего бота, а вашу же собственную (или вашего агентства) панель управления — если, конечно, на сайте вообще установлен плагин MainWP Child. Это меняет весь практический подход к этому UA.
1. Что такое MainWP на самом деле
MainWP — бесплатная система для управления множеством WordPress-сайтов с единой панели: массовые обновления плагинов, тем и ядра, резервное копирование, проверки безопасности, управление контентом. Работает по модели «hub-and-spoke»: на одном «чистом» WordPress-сайте устанавливается плагин MainWP Dashboard (панель управления), а на каждом управляемом сайте — плагин MainWP Child, который и принимает команды от панели.
Официальный User-Agent, который использует MainWP при обращении к дочерним сайтам:
Mozilla/5.0 (compatible; MainWP/4.2.4; +https://mainwp.com)
Номер версии в середине строки меняется с каждым релизом плагина.
Ключевой факт, которого не хватало в общем описании. Плагин MainWP Child по конструкции работает только с одной привязанной панелью Dashboard: при первом подключении генерируется пара публичный/приватный ключ (2048 бит), публичный сохраняется на дочернем сайте, приватный — на панели, и всё дальнейшее общение идёт по OpenSSL-шифрованному каналу с этой аутентификацией. Это значит, что если на сайте установлен MainWP Child, реальный входящий трафик от MainWP почти гарантированно приходит именно от той панели, к которой сайт сознательно подключили — то есть от вас самих или вашего агентства, а не от произвольного третьего лица.
| Параметр | Значение |
| Название | MainWP |
| Природа | Открытая, бесплатная система управления множеством WordPress-сайтов (Dashboard + Child plugin) |
| User-Agent / паттерн | Mozilla/5.0 (compatible; MainWP/X.X.X; +https://mainwp.com) |
| Оператор | Не третья сторона — в подавляющем большинстве случаев это сам владелец сайта или его агентство, управляющее сайтом через собственную панель MainWP Dashboard |
| Условие появления трафика | Требует установленного и подключённого плагина MainWP Child именно на этом сайте — без него легитимного MainWP-трафика в принципе быть не должно |
| Аутентификация | Пара ключей 2048 бит между конкретной панелью Dashboard и конкретным Child-сайтом, канал — OpenSSL |
| Официальная документация | mainwp.com/kb, репозиторий на GitHub, страница плагина на WordPress.org |
| Пометка TrafficVeil | Легитимный / Прочие краулеры и сервисы — но точнее звучало бы «собственная инфраструктура сайта», см. раздел 8 |
2. Зачем MainWP приходит на сайт
Если на сайте установлен MainWP Child, обращения — это штатные команды от подключённой панели:
- проверка статуса обновлений плагинов, тем и ядра WordPress;
- запуск резервного копирования или проверки безопасности по расписанию;
- массовые операции с постами, страницами, пользователями и комментариями, инициированные администратором панели;
- периодический мониторинг аптайма и доступности сайта.
Если же плагина MainWP Child на сайте нет — легитимного объяснения для такого трафика значительно меньше. Обращения к MainWP-специфичным путям на сайте без установленного Child-плагина стоит рассматривать не как «доставку функции клиенту», а скорее как automated-сканирование известных WordPress-эндпоинтов — попытку нащупать, не запущен ли на сайте этот или похожий плагин с уязвимостью.
3. Нагрузка и риски
Для сайтов с установленным и подключённым MainWP Child риск минимален — это ваша собственная управляющая инфраструктура, а не сторонняя автоматизация. Единственное, на что стоит смотреть — не подключён ли по ошибке сайт к чужой или скомпрометированной панели (например, после смены подрядчика старая панель осталась подключённой).
Для сайтов без MainWP Child риск нужно оценивать иначе: раз легитимного механизма для такого трафика нет, регулярные запросы с этим UA — сигнал автоматизированного зондирования, а не «фонового шума легитимного сервиса», как это формулируется для большинства других записей в этой категории.
4. Как найти MainWP в логах
# Базовый поиск
grep -i "mainwp" /var/log/nginx/access.log
# Топ URL, которые запрашивает клиент
grep -i "mainwp" /var/log/nginx/access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head
# Топ IP за этим UA — сверяйте с IP вашей собственной панели Dashboard
grep -i "mainwp" /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head
# Суточная активность — штатные проверки обычно идут по расписанию
grep -i "mainwp" /var/log/nginx/access.log | awk '{print $4}' | cut -d: -f1 | sort | uniq -c
# Первый шаг диагностики — проверьте, установлен ли на сайте плагин-получатель
wp plugin list --status=active | grep -i mainwp
Верификация. Строку UA подделать может любой скрипт. Но здесь есть более надёжный первый шаг, чем ASN-проверка: посмотрите, установлен ли на сайте активный плагин MainWP Child и к какой панели он подключён (раздел настроек плагина показывает связанный Dashboard). Если плагина нет вовсе, весь трафик с этим UA по определению не может быть легитимным management-запросом:
IP="1.2.3.4"
whois -h whois.cymru.com " -v $IP"
dig +short -x "$IP"
5. robots.txt для MainWP
# Жёсткий запрет — уместно, если MainWP Child на сайте не используется
User-agent: MainWP
Disallow: /
# Разрешить всё — если сайт реально управляется через MainWP
User-agent: MainWP
Allow: /
# Компромисс не имеет особого смысла для этого UA:
# либо сайт управляется через MainWP целиком, либо нет
6. Блокировка вручную и через TrafficVeil
Nginx:
if ($http_user_agent ~* "mainwp") {
return 403;
}
Apache (.htaccess):
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} mainwp [NC]
RewriteRule ^ - [F,L]
TrafficVeil:
- прежде чем блокировать — проверьте, не сломает ли это управление сайтом через собственную панель;
- если MainWP Child установлен и активно используется — allow, дополнительно ограничивать не нужно, канал уже аутентифицирован ключами на уровне самого плагина;
- если плагина на сайте нет — Disallow и блокировка в TrafficVeil обоснованы сразу, без промежуточного rate-limit;
- после изменения сверьте логи и, если применимо, работоспособность самой панели MainWP — легитимные запросы не должны были прекратиться, если вы их не блокировали намеренно.
7. Что делать: короткий алгоритм
- Первый шаг всегда один: проверить, установлен ли на сайте плагин MainWP Child;
- Установлен и используется — allow, это ваша собственная инфраструктура управления;
- Установлен, но вы не уверены, к чьей панели он подключён — проверьте настройки подключения, прежде чем решать что-либо ещё;
- Не установлен вовсе — Disallow + запрет в TrafficVeil, легитимного объяснения для трафика нет;
- Не блокируйте по маске
User-agent: *, чтобы не задеть Googlebot/YandexBot заодно.
8. Открытый вопрос по категоризации
Стоит обратить внимание: формулировка «оператор не указан публично / определяется по UA и поведению» для MainWP не совсем точна — оператор известен по определению (это тот, кто подключил конкретный Child-сайт к своей панели), просто узнать его можно не по открытым источникам, а по настройкам самого плагина на сайте. Возможно, для таких сайт-менеджмент-инструментов (MainWP, аналогичные ManageWP, InfiniteWP) стоит завести отдельную под-категорию с другой логикой проверки — не «смотрите ASN оператора», а «проверьте, установлен ли парный плагин на самом сайте».
| Бот / сосед | Кластер | UA | Комментарий |
| ManageWP | Прочие краулеры и сервисы | managewp | Прямой конкурент MainWP с той же логикой парной аутентификации Dashboard–Child |
| InfiniteWP | Прочие краулеры и сервисы | infinitewp | Та же категория WP-менеджмент-инструментов |
| AccessStatus | Прочие краулеры и сервисы | accessstatus | В отличие от MainWP — универсальный сторонний мониторинг без привязки к конкретному сайту-владельцу |
| 2ip Bot | Прочие краулеры и сервисы | 2ip bot | легитимный, но сторонний сервис — принципиально другая модель, чем у MainWP |
9. Стратегия allow/deny для MainWP
| Ситуация | Действие |
| MainWP Child установлен и используется штатно | Allow — это собственная управляющая инфраструктура |
| MainWP Child установлен, но подключение к панели не проверялось | Сначала проверить настройки подключения плагина, затем решать |
| MainWP Child не установлен вовсе | Disallow + запрет в TrafficVeil — легитимного трафика быть не может |
| Сайт недавно сменил подрядчика/агентство | Проверить и при необходимости переподключить или отозвать старое подключение к панели |
| Подозрение на подделку UA под MainWP | Проверка тривиальна для этого конкретного случая — если плагина-получателя на сайте нет, запрос не может быть легитимным независимо от UA |