Wiki-хак для SEO: находим брошенные домены и передаём их силу вашему сайту

от автора

В мире SEO побеждает тот, кто умеет находить нестандартные источники ссылочного веса. Один из таких способов — найти брошенные домены, на которые ссылается Wikipedia, и с помощью редиректа (301) перелить авторитет (link juice) на свой ресурс. Это работает — и не противоречит рекомендациям поисковых систем, если всё сделано грамотно.

В этой статье:

  • Расскажем, как работает метод перелива веса с Wikipedia через редирект.

  • Разберем готовый Python-скрипт для автоматического поиска таких доменов.

  • Дадим рекомендации по дальнейшей работе с найденными доменами.

А в своем Телеграм канале пишу еще больше про всякое из реального маркетинга.

Что такое перелив веса с Wikipedia

Wikipedia — один из самых авторитетных сайтов в интернете. Если она ссылается на сторонний ресурс, часть ее SEO-авторитета передается по этой ссылке (несмотря на nofollow — часть сигнала все равно улавливается). Но что, если этот ресурс больше не существует, а домен свободен для регистрации?

Вот что можно сделать:

  1. Найти такие несуществующие домены, на которые ссылается Wikipedia.

  2. Зарегистрировать их.

  3. Сделать 301-редирект на ваш сайт или нужную статью.

  4. Получить ссылочный вес (и, возможно, трафик) с Wikipedia без необходимости покупать ссылки или просить добавления новых.

Python-скрипт: автоматический сбор брошенных доменов из Wikipedia

Скрипт, представленный ниже, выполняет весь цикл:

  1. Ищет статьи Wikipedia по ключевым словам

  2. Извлекает внешние ссылки со страниц

  3. Извлекает домены из ссылок

  4. Проверяет, свободен ли домен для регистрации

  5. Сохраняет результаты в CSV-файл

import wikipediaapi import requests from urllib.parse import urlparse from bs4 import BeautifulSoup import time import whois import socket import dns.resolver import csv import logging import random  # Настройка логирования logging.basicConfig(     filename='domain_checker.log',     level=logging.INFO,     format='%(asctime)s - %(levelname)s - %(message)s' )  def search_wikipedia(keywords):     """     Ищет страницы Википедии по заданным ключевым словам.      :param keywords: Список ключевых слов для поиска.     :return: Список кортежей (ключевое слово, название страницы, URL страницы).     """     user_agent = "MyWikiParser/1.0 (your_email@example.com)"     wiki_wiki = wikipediaapi.Wikipedia(         language='ru',         extract_format=wikipediaapi.ExtractFormat.WIKI,         user_agent=user_agent     )      results = []      for keyword in keywords:         page = wiki_wiki.page(keyword)         if page.exists():             # Проверка наличия любого из ключевых слов в тексте страницы (без учета регистра)             if any(word.lower() in page.text.lower() for word in keywords):                 results.append((keyword, page.title, page.fullurl))      return results  def fetch_external_links(page_url):     """     Извлекает все внешние ссылки из HTML-кода страницы.      :param page_url: URL страницы Википедии.     :return: Множество внешних URL.     """     try:         headers = {             "User-Agent": "MyWikiParser/1.0 (your_email@example.com)"         }         response = requests.get(page_url, headers=headers, timeout=10)         if response.status_code != 200:             print(f"Не удалось загрузить страницу {page_url}: статус {response.status_code}")             return set()          soup = BeautifulSoup(response.text, 'html.parser')         external_links = set()          # Находим все теги <a> с href, начинающимися с http или https         for a_tag in soup.find_all('a', href=True):             href = a_tag['href']             if href.startswith('http://') or href.startswith('https://'):                 external_links.add(href)          return external_links     except requests.exceptions.RequestException as e:         print(f"Ошибка при загрузке страницы {page_url}: {e}")         return set()  def check_domain_availability(domain):     """     Проверяет доступность домена для регистрации.      :param domain: Доменное имя.     :return: True, если домен доступен для регистрации, иначе False.     """     try:         # WHOIS проверка         w = whois.whois(domain)         if isinstance(w.domain_name, list):             domain_registered = any(domain.lower() == dn.lower() for dn in w.domain_name)         elif isinstance(w.domain_name, str):             domain_registered = domain.lower() in w.domain_name.lower()         else:             domain_registered = False     except whois.parser.PywhoisError:         domain_registered = False     except socket.gaierror:         domain_registered = False     except Exception as e:         logging.error(f"Ошибка WHOIS-запроса для {domain}: {e}")         domain_registered = False      if not domain_registered:         try:             answers = dns.resolver.resolve(domain, 'A')             is_available = False  # Домен занят         except dns.resolver.NXDOMAIN:             is_available = True  # Домен свободен         except dns.resolver.NoAnswer:             is_available = True  # Домен свободен         except dns.exception.Timeout:             is_available = False  # Не удалось проверить, считаем занят         except Exception as e:             logging.error(f"Ошибка DNS-запроса для {domain}: {e}")             is_available = False          if is_available:             logging.info(f"Домен {domain} доступен для регистрации.")             return True         else:             logging.info(f"Домен {domain} занят.")             return False     else:         logging.info(f"Домен {domain} занят.")         return False  def get_domain(url):     """     Извлекает доменное имя из URL.      :param url: Полный URL.     :return: Доменное имя.     """     parsed_url = urlparse(url)     return parsed_url.netloc  def save_results_to_csv(results, filename='available_domains.csv'):     """     Сохраняет результаты в CSV-файл.      :param results: Список кортежей с результатами.     :param filename: Имя файла для сохранения.     """     try:         with open(filename, mode='w', newline='', encoding='utf-8') as file:             writer = csv.writer(file)             writer.writerow(["Ключевое слово", "Статья Wikipedia", "Ссылка", "Домен из ссылки"])             for result in results:                 writer.writerow(result)     except IOError as e:         logging.error(f"Ошибка записи в файл {filename}: {e}")  if __name__ == "__main__":     keywords = ["ERP"]      pages = search_wikipedia(keywords)      print("Проверка страниц и ссылок на свободные домены:")      available_results = []      for keyword, title, url in pages:         print(f"\nСтраница: {title} ({url})")         external_links = fetch_external_links(url)          if not external_links:             print("Нет внешних ссылок на этой странице.")             continue          for link in external_links:             domain = get_domain(link)             is_available = check_domain_availability(domain)              if is_available:                 print(f"  - Ключевое слово: {keyword}, Ссылка: {link} (Домен: {domain})")                 available_results.append((keyword, title, link, domain))              time.sleep(random.uniform(0.5, 1.5))      if available_results:         save_results_to_csv(available_results)         print("\nРезультаты сохранены в available_domains.csv")     else:         print("\nНет доступных доменов для регистрации среди внешних ссылок.")

Пример работы

Допустим, вы вводите ключевое слово ERP. Скрипт:

  • Находит статью «ERP» на ru.wikipedia.org

  • Парсит HTML страницы и извлекает все внешние ссылки

  • Из каждой ссылки получает домен (например, old-softwaresolutions.com)

  • Проверяет по WHOIS и DNS, занят ли домен

  • Если домен свободен — добавляет его в список

Разберем подробно каждую часть скрипта для сбора брошенных доменов с Wikipedia — с пояснениями, что и зачем делает каждая функция:

Импорты и настройки

import wikipediaapi import requests from urllib.parse import urlparse from bs4 import BeautifulSoup import time import whois import socket import dns.resolver import csv import logging import random

Что подключается:

  • wikipediaapi — API-клиент для Wikipedia

  • requests — для загрузки HTML-страниц

  • urlparse — извлечение домена из URL

  • BeautifulSoup — парсинг HTML, вытаскиваем внешние ссылки

  • whois — проверка занятости домена

  • dns.resolver — проверка DNS-записей домена

  • csv — сохранение результатов

  • logging — логирование в файл

  • random, time — случайная пауза между запросами, чтобы не попасть под блок

Настройка логгера

logging.basicConfig(     filename='domain_checker.log',     level=logging.INFO,     format='%(asctime)s - %(levelname)s - %(message)s' )

Создает лог-файл domain_checker.log, куда пишутся сообщения — успехи, ошибки, проблемы соединения и т.д.

Поиск статей Wikipedia по ключевым словам

def search_wikipedia(keywords):     ...

Что делает:

  • Инициализирует wikipediaapi для русской Википедии

  • Для каждого ключевого слова:

    • Получает страницу

    • Проверяет, существует ли она

    • Проверяет, есть ли в тексте ключевое слово

    • Возвращает список из кортежей: (ключевое слово, название статьи, ссылка)

Извлечение внешних ссылок с Wikipedia

def fetch_external_links(page_url):     ...

Что делает:

  • Загружает HTML-страницу Wikipedia

  • Использует BeautifulSoup для поиска всех ссылок <a href="...">

  • Фильтрует только внешние ссылки (начинаются с http:// или https://)

  • Возвращает set() ссылок

Извлечение домена из URL

def get_domain(url):     parsed_url = urlparse(url)     return parsed_url.netloc

Что делает:

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

def check_domain_availability(domain):     ...

Двухступенчатая проверка:

  1. WHOIS — проверяет, зарегистрирован ли домен

    • Если WHOIS показывает, что домен не зарегистрирован, переходит ко второму шагу

  2. DNS — проверка наличия A-записи

    • Если DNS возвращает NXDOMAIN или NoAnswer → домен точно свободен

    • В остальных случаях — занят или не удалось проверить

Результат: True, если домен можно зарегистрировать

Сохранение результатов в CSV

def save_results_to_csv(results, filename='available_domains.csv'):     ...

Сохраняет итоговые результаты (только свободные домены) в CSV-файл:

  • Ключевое слово

  • Название статьи

  • Ссылка

  • Домен

Главный цикл запуска скрипта

if __name__ == "__main__":     ...

Что происходит:

  1. Задает ключевые слова (keywords = ["ERP"])

  2. Находит статьи Wikipedia по этим ключевым словам

  3. Для каждой статьи:

    • Парсит внешние ссылки

    • Извлекает домены

    • Проверяет их доступность

  4. Если находит свободный домен:

    • Добавляет в available_results

  5. В конце сохраняет всё в available_domains.csv

Между проверками стоит пауза random.uniform(0.5, 1.5) — чтобы не попасть под антибот-защиту.

SEO-применение: как перелить вес правильно

1. Зарегистрируйте домен

После того как скрипт найдет доступный домен, зарегистрируйте его у любого регистратора. Цена обычного .com, .org, .ru — от 100 до 500 ₽/год.

2. Настройте 301 редирект

На хостинге или через .htaccess настройте перенаправление:

Redirect 301 / https://your-site.ru/

Или через Nginx:

server {     server_name old-domain.com;     return 301 https://your-site.ru$request_uri; }

3. Оптимизируйте целевую страницу

Перенаправляйте не просто на главную, а на страницу, релевантную теме исходной статьи на Wikipedia — чтобы редирект выглядел естественно.

Важные рекомендации

Совет

Обоснование

Не регистрируйте сотни доменов сразу

Google может расценить это как сетку PBN

Не редиректите всё на одну страницу

Используйте тематические посадочные — для естественности

Проверяйте историю домена (через Wayback Machine)

Возможно, ранее он использовался под спам

Следите за индексацией

Новые редиректы могут не сразу попасть в индекс

Дополнительные фишки

  • Можно расширить скрипт, чтобы он парсил Wikipedia на других языках (en, de, fr) — в англоязычных статьях ссылок и возможностей в разы больше.

  • Добавьте проверку на наличие домена в Archive.org или через ahrefs.com — чтобы видеть, был ли он проиндексирован ранее.

Заключение

Этот способ — не «серый» и не «чёрный» SEO, а умный перехват утраченного ссылочного веса. Вы не вмешиваетесь в Wikipedia, не просите проставить ссылку и не занимаетесь спамом. Вы просто регистрируете домен, на который кто-то раньше сослался, и аккуратно направляете трафик и вес туда, где он вам действительно нужен.

Используйте с умом. А если нужна помощь — напишите, помогу внедрить под конкретные задачи или проконсультировать и интегрировать в ваш SEO-процесс.


ссылка на оригинал статьи https://habr.com/ru/articles/924722/