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

В этой статье:
Расскажем, как работает метод перелива веса с Wikipedia через редирект.
Разберем готовый Python-скрипт для автоматического поиска таких доменов.
Дадим рекомендации по дальнейшей работе с найденными доменами.
А в своем Телеграм канале пишу еще больше про всякое из реального маркетинга.
Что такое перелив веса с Wikipedia
Wikipedia — один из самых авторитетных сайтов в интернете. Если она ссылается на сторонний ресурс, часть ее SEO-авторитета передается по этой ссылке (несмотря на nofollow
— часть сигнала все равно улавливается). Но что, если этот ресурс больше не существует, а домен свободен для регистрации?
Вот что можно сделать:
Найти такие несуществующие домены, на которые ссылается Wikipedia.
Зарегистрировать их.
Сделать 301-редирект на ваш сайт или нужную статью.
Получить ссылочный вес (и, возможно, трафик) с Wikipedia без необходимости покупать ссылки или просить добавления новых.
Python-скрипт: автоматический сбор брошенных доменов из Wikipedia
Скрипт, представленный ниже, выполняет весь цикл:
Ищет статьи Wikipedia по ключевым словам
Извлекает внешние ссылки со страниц
Извлекает домены из ссылок
Проверяет, свободен ли домен для регистрации
Сохраняет результаты в 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-клиент для Wikipediarequests
— для загрузки HTML-страницurlparse
— извлечение домена из URLBeautifulSoup
— парсинг 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
Что делает:
Из
https://example.com/page.html
получитexample.com
Используется, чтобы проверить именно домен, а не полный URL
Проверка доступности домена
def check_domain_availability(domain):
...
Двухступенчатая проверка:
WHOIS — проверяет, зарегистрирован ли домен
Если WHOIS показывает, что домен не зарегистрирован, переходит ко второму шагу
DNS — проверка наличия A-записи
Если DNS возвращает NXDOMAIN или NoAnswer → домен точно свободен
В остальных случаях — занят или не удалось проверить
Результат: True
, если домен можно зарегистрировать
Сохранение результатов в CSV
def save_results_to_csv(results, filename='available_domains.csv'):
...
Сохраняет итоговые результаты (только свободные домены) в CSV-файл:
Ключевое слово
Название статьи
Ссылка
Домен
Главный цикл запуска скрипта
if __name__ == "__main__":
...
Что происходит:
Задает ключевые слова (
keywords = ["ERP"]
)Находит статьи Wikipedia по этим ключевым словам
Для каждой статьи:
Парсит внешние ссылки
Извлекает домены
Проверяет их доступность
Если находит свободный домен:
Добавляет в
available_results
В конце сохраняет всё в
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-процесс.