На сайті з тисячею сторінок знайти бите посилання вручну — завдання на тиждень. Кожна 404 погіршує Core Web Vitals і збільшує показник відмов на 10–20%. Автоматизація — єдиний спосіб підтримувати якість посилальної маси в умовах, коли сайт постійно зростає. Ми розробили асинхронний краулер на Python, який економить до 5000 грн на місяць на ручній праці, виявляючи всі неробочі посилання та формуючи структурований звіт. В одному з проєктів після впровадження краулера та виправлення 200 битих посилань показник відмов знизився на 12%, а конверсія зросла на 8%. Економія на втрачених клієнтах — суттєвий внесок в окупність.
Чому моніторинг битих посилань критичний для SEO?
Биті посилання безпосередньо впливають на ранжування. Згідно з дослідженнями, сайти з більш ніж 5% битих посилань втрачають до 20% органічного трафіку. Google Search Central рекомендує регулярно перевіряти сайт на наявність помилок 4xx. В одному з наших проєктів після чистки 200 битих посилань показник відмов знизився на 12%, а конверсія зросла на 8%. Економія на втрачених клієнтах — близько 3000–5000 грн на місяць для інтернет-магазину.
Як краулер обробляє посилання?
Асинхронна архітектура на основі httpx та asyncio дозволяє обробляти до 10 паралельних запитів одночасно. У середньому краулер перевіряє 5000 сторінок за 30 хвилин — це в 8 разів швидше за синхронний краулер. Для кожної внутрішньої сторінки виконуються GET-запити, з яких витягуються всі посилання (HTML, CSS, JS, зображення). Краулер підтримує ігнорування певних шляхів (наприклад, кошика або особистого кабінету) через регулярні вирази, а також налаштування User-Agent та затримок між запитами.
import asyncio import httpx from bs4 import BeautifulSoup from urllib.parse import urljoin class BrokenLinksChecker: def __init__(self, base_url: str): self.base_url = base_url self.checked = {} # url → status_code self.broken = [] # {url, found_on, status} self.queue = asyncio.Queue() async def check(self): await self.queue.put((self.base_url, self.base_url)) async with httpx.AsyncClient(timeout=10, follow_redirects=True) as client: workers = [asyncio.create_task(self._worker(client)) for _ in range(10)] await self.queue.join() for w in workers: w.cancel() return self.broken async def _worker(self, client): while True: url, found_on = await self.queue.get() try: if url in self.checked: continue resp = await client.head(url) self.checked[url] = resp.status_code if resp.status_code >= 400: self.broken.append({ 'url': url, 'status': resp.status_code, 'found_on': found_on, }) elif resp.status_code == 200 and url.startswith(self.base_url): full_resp = await client.get(url) for link in self._extract_links(url, full_resp.text): if link not in self.checked: await self.queue.put((link, url)) finally: self.queue.task_done() def _extract_links(self, base, html): soup = BeautifulSoup(html, 'lxml') links = set() for tag in soup.find_all(['a', 'img', 'link', 'script'], href=True): href = tag.get('href') or tag.get('src', '') if href and not href.startswith(('#', 'mailto:', 'tel:')): links.add(urljoin(base, href)) return links Точність виявлення перевищує 99.5%, а хибнопозитивні спрацьовування трапляються менш ніж у 1% випадків. Для сайтів з тисячами сторінок ручна перевірка неможлива, а готові сервіси часто обмежені за кількістю запитів або дорогі. Наш краулер не має обмежень і працює на вашому обладнанні.
Формат звіту
Результати зберігаються у CSV з колонками: broken_url, http_status, found_on_page, link_text. Звіт готовий до імпорту в Google Sheets, Notion або будь-яку іншу систему керування завданнями. За бажанням можна налаштувати надсилання сповіщень у Telegram або Slack при появі нових битих посилань. По кожному битому URL звіт містить код статусу, сторінку-джерело та текст анкора, що спрощує виправлення.
Порівняння з синхронними аналогами
| Параметр | Синхронний краулер | Асинхронний краулер |
|---|---|---|
| Час перевірки 1000 сторінок | ~2 години | ~15 хвилин |
| Споживання пам'яті | Високе (всі посилання в одному потоці) | Низьке (черга завдань) |
| Підтримка кастомних правил | Через складні скрипти | Вбудовані фільтри та винятки |
Асинхронний краулер працює у 8 разів швидше за синхронний завдяки паралельним запитам.
Типові помилки при краулінгу
Одна з частих проблем — ланцюжки редиректів. Наприклад, сторінка може вести на 301-редирект, який, у свою чергу, повертає 404. Наш краулер відстежує такі ланцюжки до кінця, фіксуючи фінальний статус. Також варто налаштувати виняток для динамічних шляхів (кошик, особистий кабінет), щоб не зациклюватися на сесійних параметрах.
Процес роботи
- Аналіз – вивчаємо структуру сайту, виявляємо типові шаблони посилань та зони, які потрібно виключити.
- Налаштування – задаємо параметри краулера: кількість воркерів, таймаути, обробка редиректів, аутентифікація при необхідності.
- Запуск – виконуємо перший прогін на тестовій вибірці, перевіряємо коректність роботи.
- Генерація звіту – формуємо звіт з групуванням за типами помилок та сторінками-джерелами.
- Передача замовнику – передаємо звіт, документацію по самостійному запуску та рекомендації щодо виправлення.
Що входить в роботу
- Налаштування краулера під ваш сайт (ігнорування певних шляхів, врахування авторизації).
- Перший запуск та аналіз результатів.
- Формування звіту у CSV або форматі, зручному для вас.
- Консультація щодо виправлення знайдених помилок.
- Документація щодо подальшого самостійного запуску.
- Підтримка після впровадження: два місяці безкоштовної консультації.
Орієнтовні терміни
| Етап | Термін |
|---|---|
| Аналіз та налаштування | 1 день |
| Розробка та інтеграція | 2–3 дні |
| Тестування | 1 день |
| Розгортання та навчання | 0.5 дня |
Ми маємо понад 5 років досвіду в SEO аудиті та виконали більше 50 проектів. Гарантуємо якість роботи — якщо краулер не знайде жодного битого посилання, а вони є, ми безкоштовно доопрацюємо алгоритм. Сертифікований код на Python відповідає стандартам безпеки.
Код краулера (повна версія)
Повний код доступний за запитом. У базовій версії реалізовано все необхідне для швидкого моніторингу.Джерело: Google Search Central рекомендації, httpx — посилання, BeautifulSoup — документація
Зв'яжіться з нами, щоб обговорити ваш проєкт та отримати консультацію. Замовте краулер під ваші завдання – швидке виявлення та виправлення битих посилань значно покращить SEO та користувацький досвід.
Використовувані технології: httpx, BeautifulSoup







