← Назад к портфолио

PROJECT 03

Autoparser —
Стелс-парсер

Асинхронный Python-парсер с тремя стратегиями обхода антибот-защиты. Cloudflare, TLS-fingerprinting, JS-рендеринг — всё в одном инструменте с модульным pipeline обработки данных.

Python 3.11+ asyncio Playwright curl-cffi aiohttp Cloudflare bypass TLS fingerprint Anti-bot Stealth
метода обхода
4+
типа вывода данных
100%
async архитектура
// интерактивная демонстрация
autoparser — python main.py
$ python examples/usage_examples.py
// архитектура pipeline
URLinput
StealthParserauto / curl / playwright
DataProcessorpipeline
FileProcessorJSON output
+
APIProcessorwebhook
+
DBProcessorsqlite/pg
// исходный код
core/stealth_parser.py — auto method
async def parse(self, url: str, method: str = 'auto') -> Dict:
    # Auto: curl-cffi (быстро) → fallback на Playwright
    if method == 'auto':
        result = await self._parse_curl_cffi(url)
        if 'error' in result:
            result = await self._parse_playwright(url)

    # Оповещаем все зарегистрированные процессоры
    if self.output_callback and 'error' not in result:
        await self.output_callback(result, url)
    return result
services/data_processor.py — ProcessorFactory
# Добавляй любое количество получателей данных
processor = DataProcessor()
processor.add_processor(ProcessorFactory.create_file_processor("output"))
processor.add_processor(ProcessorFactory.create_api_processor(
    "https://api.example.com/data",
    api_key="your_key"
))

# Или свой callback:
def my_handler(data, url):
    print(f"Ссылок: {len(data['links'])}, изображений: {len(data['images'])}")

processor.add_processor(ProcessorFactory.create_callback_processor(my_handler))
// возможности

ОБХОД ЗАЩИТЫ

  • curl-cffi — имитирует TLS-отпечаток Chrome/Firefox
  • Playwright Stealth — реальный браузер для JS-рендеринга
  • Auto-mode — сначала быстрый метод, fallback на надёжный
  • Ротация User-Agent из txt-базы
  • Персистентные сессии (cookie.json)

ИЗВЛЕЧЕНИЕ ДАННЫХ

  • Заголовок, полный текст, HTML
  • Все ссылки и изображения
  • Формы и их поля
  • Метаданные страницы
  • Временна́я метка парсинга