Небольшая «шпаргалка» самому себе по маскировке сети WordPress‑сайтов так, чтобы в HTML‑коде невозможно было обнаружить общий «футпринт». Разбил информацию на блоки, обозначил основные места, по которым можно вычислить сетку сайтов и показываю примеры кода.

В данный момент я разбираюсь с созданием PBN, а маскировка своей сети сайтов — это важный момент.

Я рекомендую использовать готовые плагины, которые я тоже указал в статье. Код оставим программистам, но для себя будем знать, что примерно делают плагины.


1. Самое главное: хостинг, DNS, CDN

Что видно снаружиКак замаскироваться
IP‑адрес хостинга, PTR‑записиРазносите сайты на разные хостинги, арендованные у разных провайдеров (или прикройте через Cloudflare, но используйте разные аккаунты).
NS‑серверыЕсли все сайты сделали на одном хостинге, то у всех сайтов будут одинаковые DNS сервера. Вместе с одинаковым внешним видом, это вызовет сильные подозрения
Whois Обязательно включить приватный режим у домена, чтобы не было видно кто владелец

⟶ Это не HTML‑футпринты, но именно они чаще всего «сдают» сетку, когда анализируют PBN.


2. HTTP‑заголовки

  • Server / X‑Powered‑By — переопределите в конфиге Nginx/Apache или через Cloudflare.
  • Link: https://api.w.org/; rel=»https://api.w.org/» — убираем вместе с REST API (см. код ниже).
  • X‑Pingback — отключается вместе с XML‑RPC.

3. HTML‑футпринты, создаваемые WordPress по умолчанию

3.1 Минимальный «must have» набор функций (файл functions.php)

<!-- wp:code -->
<pre class="wp-block-code"><code>/* 1) Убираем метатег Generator и версию WP */
remove_action('wp_head', 'wp_generator');                       // 
add_filter('the_generator', '__return_false');                  // fallback

/* 2) Удаляем REST API и oEmbed ссылки */
remove_action('wp_head', 'rest_output_link_wp_head', 10);       // 
remove_action('wp_head', 'wp_oembed_add_discovery_links', 10);

/* 3) Отключаем XML‑RPC, pingback и X‑Pingback */
add_filter('xmlrpc_enabled', '__return_false');                 // 
add_filter('wp_headers', function ($headers) {
    unset($headers&#91;'X-Pingback']);
    return $headers;
});
remove_action('wp_head', 'rsd_link');                           // RSD
remove_action('wp_head', 'wlwmanifest_link');                   // 

/* 4) RSS/Atom, короткая ссылка и др. */
remove_action('wp_head', 'feed_links', 2);
remove_action('wp_head', 'feed_links_extra', 3);
remove_action('wp_head', 'wp_shortlink_wp_head', 10);
</code></pre>
<!-- /wp:code -->

Код добавляем в файл functions.php

3.2 Удаляем версии из CSS/JS‑URL

function no_ver_query_string( $src ){
    return remove_query_arg( 'ver', $src );
}
add_filter( 'style_loader_src', 'no_ver_query_string', 15, 1 );
add_filter( 'script_loader_src', 'no_ver_query_string', 15, 1 );

Тем самым исчезают хвосты вида ?ver=6.5.2, которые связывают площадки по времени обновлений.

3.3 Дополнительная чистка wp_head

remove_action('wp_head', 'adjacent_posts_rel_link_wp_head', 10); // rel prev/next
remove_action('wp_head', 'print_emoji_detection_script', 7);     // emoji
remove_action('wp_print_styles', 'print_emoji_styles');

Полный список того, что WordPress пихает в <head>, удобно смотреть в консоли браузера


4. Плагины — готовые решения

ПлагинЧто делаетКогда использовать
PerfmattersВ GUI убирает Generator, WLW, RSD, REST‑API, версии и т. д.Если не хочется лезть в код; включайте разный набор опций на каждом сайте.
Meta Generator & Version Info RemoverЧистит <meta name="generator"> и ?ver= из ресурсов.Лёгкая альтернатива собственным хукам.
Asset CleanUp / Clearfy / WP HideФильтрация статики, смена путей к wp‑admin и wp‑login.php.Полное «отбеливание» структуры URL.

⚠️ Устанавливайте разные наборы плагинов/настроек, иначе сами создадите новый «футпринт».


5. Маскировка темы и плагинов

  1. Смените slug темы: переименуйте директорию и обновите заголовок в style.css. Тогда класс class="wp-block-button" не выдаст одну и ту же тему на всех сайтах.
  2. Удалите HTML‑комментарии вида <!-- This theme is built on... -->.
  3. Перемешайте порядок подключаемых скриптов (например, отключите встроенный jQuery и подключите Slim либо спрятанный в /assets/js/app.min.js).
  4. Используйте «одноразовые» фавиконки и разный manifest.json для PWA, если они генерируются темой.

6. Контент‑уровень (то, что видят боты)

  • Файловая структура — не загружайте одни и те же изображения в нескольких проектах.
  • Structured Data — не используйте одинаковые Organization/Logo в JSON‑LD.
  • Аналитика — Отсутствие аналитики на сайтах всей сети — это футпринт. Большинство ПБН-щиков не ставят аналитику, но по хорошему надо ставить аналитику из разных аккаунтов Гугл.

7. Чеклист проверки кода

  1. curl -I https://site.com — проверьте Server, X‑Pingback, Link.
  2. Правой кнопкой view‑source: — поиск по: generator, wlwmanifest, api.w.org, wp-json, rss, ver=.
  3. BuiltWith / WhatCMS / Wappalyzer — видят ли WordPress?
  4. Screaming Frog (Bulk Export → All Outlinks) — одинаковые внешние id
  5. Сравните хэши favicon и sitemap.xml.

Итог

Если вы:

  1. Убрали служебные ссылки,
  2. Скрыли REST‑API, XML‑RPC, RSS, WLW, RSD, Generator, версии,
  3. разнесли сайты по разным IP и DNS, использовали разные темы, фавиконки, статические ресурсы,

…то будет сложно догадаться, что сайты принадлежает одному владельцу, сравнивая HTML-код. А именно по одинаковым блокам HTML-кода разные сервисы находят сайты принадлежащие одному вебмастеру.

Поделитесь Вашим мнением
Ваш комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Еще записи из этой же рубрики