New: Introducing PHP and Composer Support.Read the Announcement
Socket
Book a DemoInstallSign in
Socket

web-parser-mcp

Package Overview
Dependencies
Maintainers
1
Versions
21
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

web-parser-mcp

🚀 UNIFIED BROWSER SESSION v3.7.1! Revolutionary: Enhanced Playwright content loading, stealth mode, dynamic content waiting, perfect session sharing!

Source
npmnpm
Version
3.7.1
Version published
Weekly downloads
16
6.67%
Maintainers
1
Weekly downloads
 
Created
Source

🚀 Web Parser MCP Server v3.7.1 - ENHANCED PLAYWRIGHT CONTENT LOADING!

РЕВОЛЮЦИОННАЯ АРХИТЕКТУРА! 🚀 ОДИН браузерный контекст для ВСЕХ инструментов! Автоматическое разделение сессии! Идеальное управление авторизацией!

🚀 РЕВОЛЮЦИОННАЯ АРХИТЕКТУРА v3.7.0 - UNIFIED BROWSER SESSION!

РЕВОЛЮЦИОННЫЕ ИЗМЕНЕНИЯ:

  • 🔄 ПОЛНЫЙ СДВИГ АРХИТЕКТУРЫ - все HTTP-инструменты теперь используют один браузерный контекст
  • 🎯 ИДЕАЛЬНОЕ УПРАВЛЕНИЕ СЕССИЕЙ - browser_login автоматически делится сессией со ВСЕМИ инструментами
  • 🚫 УБРАНЫ КОМПЛЕКСНЫЕ МЕХАНИЗМЫ - нет больше ручного переноса кук между requests и Playwright
  • ⚡ ОДИН БРАУЗЕРНЫЙ КОНТЕКСТ - для всех операций, что обеспечивает consistency

🏗️ НОВАЯ АРХИТЕКТУРА:

// Раньше: Сложная синхронизация между requests и Playwright
browser_login() → сохраняет куки в authenticated_session
fetch_html() → вручную переносит куки в requests.Session
parse_page() → вручную переносит куки в requests.Session

// Теперь: Единый браузерный контекст для всех инструментов
browser_login() → логинится в unified browser session
fetch_html() → использует тот же browser session
parse_page() → использует тот же browser session
parallel_fetch() → использует тот же browser session

🎯 ПРЕИМУЩЕСТВА НОВОЙ АРХИТЕКТУРЫ:

  • 💯 100% НАДЕЖНОЕ УПРАВЛЕНИЕ СЕССИЕЙ - нет больше проблем с синхронизацией
  • 🔒 БЕЗОПАСНОСТЬ - один браузерный контекст = consistent authentication state
  • ⚡ ПРОИЗВОДИТЕЛЬНОСТЬ - переиспользование браузерной сессии
  • 🧪 НАДЕЖНОСТЬ - нет сложной логики переноса кук
  • 🎯 ПРОСТОТА - все инструменты автоматически используют сессию

🔧 ПЕРЕПИСАННЫЕ ИНСТРУМЕНТЫ:

  • fetch_html - теперь использует UnifiedHTTPClient (Playwright only)
  • parallel_fetch - обновлен для использования unified browser session
  • browser_login - использует unified session + нет cleanup
  • auto_paginate - использует unified browser context
  • infinite_scroll - использует unified browser context
  • debug_screenshot - использует unified browser context

🚀 ИДЕАЛЬНЫЙ WORKFLOW:

// 1. Логин один раз
{
  "tool": "browser_login",
  "arguments": {
    "url": "https://site.com/login",
    "username": "user@email.com", 
    "password": "password"
  }
}

// 2. ВСЕ инструменты автоматически используют сессию!
{
  "tool": "fetch_html",
  "arguments": {"url": "https://site.com/protected"}
}
// ✅ session_used: {"source": "unified_browser_session", "cookies_count": 15}

{
  "tool": "parallel_fetch", 
  "arguments": {"urls": ["https://site.com/page1", "https://site.com/page2"]}
}
// ✅ Оба запроса используют авторизацию автоматически!

{
  "tool": "auto_paginate",
  "arguments": {"url": "https://site.com/data", "max_pages": 5}
}
// ✅ Весь процесс пагинации использует авторизацию!

Теперь авторизация работает идеально для ВСЕХ инструментов! 🎉

🚀 УЛУЧШЕННАЯ ЗАГРУЗКА КОНТЕНТА v3.7.1 - ENHANCED PLAYWRIGHT LOADING!

НОВЫЕ ВОЗМОЖНОСТИ ЗАГРУЗКИ КОНТЕНТА:

  • 🎯 МНОГОУРОВНЕВАЯ СТРАТЕГИЯ ОЖИДАНИЯ - domcontentloaded + networkidle + JavaScript delay
  • 🎪 ПОДДЕРЖКА СЕЛЕКТОРОВ - wait_for="#content" для ожидания конкретных элементов
  • 🔒 STEALTH РЕЖИМ - антидетекция для обхода защиты от ботов
  • ⚡ УЛУЧШЕННАЯ ДИАГНОСТИКА - performance метрики, информация о стратегиях ожидания
  • 🎯 ПОЛНЫЙ КОНТЕНТ SPA - динамический контент загружается полностью

🎯 НОВАЯ АРХИТЕКТУРА ЗАГРУЗКИ:

// Раньше: Простая загрузка
{
  "tool": "fetch_html",
  "arguments": {
    "url": "https://spa-site.com"
  }
}
// ❌ Мог не загрузить динамический контент

// Теперь: Enhanced loading с полным контролем
{
  "tool": "fetch_html",
  "arguments": {
    "url": "https://spa-site.com",
    "wait_for": "#main-content",
    "stealth": true,
    "debug": true
  }
}
// ✅ Полный контент + performance метрики + диагностика

🔧 СТРАТЕГИИ ОЖИДАНИЯ:

  • domcontentloaded - базовая загрузка DOM
  • selector waiting - ожидание конкретного элемента (если указан wait_for)
  • networkidle - ожидание пока сеть успокоится
  • javascript_delay - дополнительное время для JS выполнения

🛡️ STEALTH РЕЖИМ:

{
  "tool": "fetch_html",
  "arguments": {
    "url": "https://protected-site.com",
    "stealth": true
  }
}

Включает:

  • ✅ Удаление navigator.webdriver
  • ✅ Скрытие автоматизации Chrome
  • ✅ Реалистичные browser fingerprints
  • ✅ JavaScript антидетекция
  • ✅ Геолокация и timezone spoofing

📊 УЛУЧШЕННАЯ ДИАГНОСТИКА:

{
  "method": "playwright_enhanced",
  "wait_strategies_used": ["domcontentloaded", "selector:#content", "networkidle", "javascript_delay"],
  "performance": {
    "dom_content_loaded": 245.5,
    "load_complete": 1250.8,
    "total_time": 1456.3
  },
  "page_title": "Dynamic SPA Page",
  "final_url": "https://spa-site.com/redirected"
}

Теперь fetch_html получает ПОЛНЫЙ контент современных веб-приложений! 🚀

🚨 КРИТИЧЕСКИЕ ИСПРАВЛЕНИЯ v3.6.1 - BROWSER_LOGIN FIXES!

КРИТИЧЕСКИЕ ИСПРАВЛЕНИЯ:

  • 🚨 browser_login - исправлена проблема зависания и неработоспособности
  • ⏰ Увеличено время ожидания - 3s + networkidle для полной загрузки форм
  • 🎯 Улучшена автодетекция - 20+ селекторов для username, 10+ для password
  • 🖱️ Человекоподобное заполнение - клик → пауза → медленный ввод (50ms)
  • 🔍 Расширенная диагностика - анализ доступных элементов при ошибках

АРХИТЕКТУРНЫЕ ДОСТИЖЕНИЯ:

  • 🎯 Функциональные группы - инструменты логически разделены по назначению
  • 📁 Модульная структура - каждая группа в отдельном файле
  • 🔧 Maintainability - легкое добавление новых инструментов
  • ⚡ Performance - оптимизированные импорты и кеширование
  • 🧪 Testability - каждую группу можно тестировать отдельно

🏗️ СТРУКТУРА TOOL GROUPS:

📁 src/tools/definitions/
├── 🔍 fetch_tools.py      # 4 инструмента: HTML fetching и basic extraction
├── 🔐 auth_tools.py       # 2 инструмента: Form и browser authentication
├── 📊 session_tools.py    # 5 инструментов: Session management и auth setup
├── 🧭 navigation_tools.py # 3 инструмента: Pagination и parallel processing
├── 🎬 media_tools.py      # 2 инструмента: Screenshots и media download
└── 📋 data_tools.py       # 3 инструмента: Structured data processing

🔄 ПРЕДЫДУЩЕЕ v3.3.0 - SESSION MANAGEMENT!

ГЛАВНАЯ ФУНКЦИОНАЛЬНОСТЬ:

  • 🔐 Автоматический sharing сессии - после browser_login все инструменты используют полученные куки
  • 🔗 Seamless integration - fetch_html, parse_page автоматически подхватывают авторизацию
  • 🧹 Полная очистка - новый инструмент clear_session сбрасывает всё состояние
  • ⏰ Smart session management - сессия действует 1 час, потом автоматически expires
  • 📊 Детальная диагностика - видите какие куки используются и когда

🔥 Как это работает:

// 1. Логинимся через browser_login
{
  "tool": "browser_login",
  "arguments": {
    "url": "https://site.com/login",
    "username": "user@email.com",
    "password": "password"
  }
}

// ✅ Результат: session сохраняется глобально
{
  "success": true,
  "progress_steps": [...],
  "cookies_imported": 15,
  "session_saved": "Tools can now use 15 cookies"
}

// 2. Теперь fetch_html АВТОМАТИЧЕСКИ использует куки!
{
  "tool": "fetch_html", 
  "arguments": {
    "url": "https://site.com/protected-page"
    // 🔥 НЕ НУЖНО указывать куки - они уже есть!
  }
}

// ✅ Результат: получаем защищенный контент
{
  "html": "...protected content...",
  "authenticated_session_used": true,
  "cookies_from_login": 15
}

// 3. Очищаем сессию когда нужно
{
  "tool": "clear_session",
  "arguments": {
    "clear_cache": true
  }
}

// ✅ Результат: полная очистка
{
  "status": "completed",
  "cleared_items": [
    "Authenticated session for https://site.com/login",
    "Session cookies (15 items)",
    "Memory cache (5 items)"
  ]
}

🚨 ПРЕДЫДУЩИЕ КРИТИЧЕСКИЕ ИСПРАВЛЕНИЯ v3.2.1!

БЫЛА ПРОБЛЕМА:

  • browser_login зависал при передаче username/password
  • Нужно было вручную заполнять поля в браузере
  • Инструмент не завершался и требовал manual intervention

ИСПРАВЛЕНО:

  • Автоматическое заполнение полей username/password через Playwright
  • Умная детекция полей формы (email, user, login, password)
  • Автоматическое нажатие кнопки входа
  • Progress feedback - видите каждый шаг процесса
  • Graceful timeout - корректное завершение при ошибках

🔥 Теперь работает так:

{
  "tool": "browser_login",
  "arguments": {
    "url": "https://stepik.org/login",
    "username": "your@email.com",
    "password": "yourpassword",
    "headless": true
  }
}

Результат:

{
  "success": true,
  "automatic_login": true,
  "form_filled": true,
  "button_clicked": true,
  "progress_steps": [
    {"step": "Initializing browser", "status": "completed"},
    {"step": "Page loaded", "status": "completed"},
    {"step": "Form fields detected", "status": "completed"},
    {"step": "Username filled", "status": "completed"},
    {"step": "Password filled", "status": "completed"},
    {"step": "Login button clicked", "status": "completed"},
    {"step": "Login completed successfully", "status": "completed"}
  ]
}

🚨 НОВЫЕ КРИТИЧЕСКИЕ ИСПРАВЛЕНИЯ v3.6.1 - BROWSER_LOGIN

ЧТО БЫЛО НЕ ТАК:

  • Browser_login зависал - запускался и сразу закрывался без действий
  • Не заполнял поля - username/password не вводились
  • Не нажимал кнопку - submit не происходил
  • Плохая автодетекция - не находил поля формы на сложных сайтах

ЧТО ИСПРАВЛЕНО:

1. ⏰ УЛУЧШЕННОЕ ОЖИДАНИЕ ЗАГРУЗКИ:

// БЫЛО: Быстрая загрузка
await page.wait_for_load_state('domcontentloaded')

// СТАЛО: Полное ожидание формы
await page.wait_for_load_state('domcontentloaded')
await asyncio.sleep(3)  // Ожидание JS рендеринга
await page.wait_for_load_state('networkidle', timeout=15000)

2. 🎯 РАСШИРЕННАЯ АВТОДЕТЕКЦИЯ СЕЛЕКТОРОВ:

// БЫЛО: 8 базовых селекторов
username_candidates = [
  "input[type='email']",
  "input[name*='user']",
  "input[type='text']:first-of-type"
]

// СТАЛО: 20+ продвинутых селекторов
username_candidates = [
  "input[type='email']",
  "input[name*='email' i]",
  "input[name*='user' i]",
  "input[name*='login' i]",
  "input[placeholder*='email' i]",
  "input[autocomplete='email']",
  "[data-testid*='username']",
  "[data-test*='email']",
  "input:not([type='password']):not([type='hidden'])",
  // ... и еще 10+ вариантов
]

3. 🖱️ ЧЕЛОВЕКОПОДОБНОЕ ЗАПОЛНЕНИЕ:

// БЫЛО: Быстрое заполнение
await element.fill(username)

// СТАЛО: Реалистичное взаимодействие
await page.wait_for_selector(selector, state="visible", timeout=10000)
await element.click()  // Фокус поля
await asyncio.sleep(0.5)  // Пауза перед вводом
await element.fill("")  // Очистка поля
await element.type(username, delay=50)  // Медленный ввод

🎯 ПОДДЕРЖИВАЕМЫЕ ТИПЫ ФОРМ:

  • Стандартные формы - input[type="email"] + input[type="password"]
  • React/Vue SPA - data-testid, data-test атрибуты
  • Сложные формы - placeholder, autocomplete поиск
  • Многоязычные - "Войти", "Login", "Sign in" поддержка
  • Динамические - ожидание JS загрузки

🚀 ОБНОВЛЕННЫЙ ПРИМЕР ИСПОЛЬЗОВАНИЯ:

{
  "tool": "browser_login",
  "arguments": {
    "url": "https://site.com/login",
    "username": "your@email.com",
    "password": "yourpassword",
    "headless": false,
    "verbose": true
  }
}

**Результат:**
```json
{
  "success": true,
  "automatic_login": true,
  "form_filled": true,
  "button_clicked": true,
  "progress_steps": [
    {"step": "Initializing browser", "status": "completed"},
    {"step": "Waiting for form elements to load", "status": "completed"},
    {"step": "Auto-detecting username field", "status": "completed", "details": "input[name='email']"},
    {"step": "Username filled", "status": "completed"},
    {"step": "Password filled", "status": "completed"},
    {"step": "Login button clicked", "status": "completed"},
    {"step": "Login completed successfully", "status": "completed"}
  ]
}

Теперь browser_login работает стабильно на большинстве сайтов! 🎉

🔥 Ранее в v3.2 - ПРОФЕССИОНАЛЬНАЯ ДИАГНОСТИКА:

🔍 Browser Login - Детальная диагностика

  • Логи браузера - console, page errors, failed requests
  • Автоматические скриншоты при ошибках и таймаутах
  • Детекция защиты - CAPTCHA, Cloudflare, Bot Detection, 2FA
  • Анализ ошибок - почему логин не удался + рекомендации
  • Таймаут контроль - детальная информация о времени выполнения

📊 Login Form - Умный анализ ответов

  • Redirect chain - отслеживание перенаправлений
  • Анализ статусов - 403/401 с детализацией причин
  • Детекция ошибок форм - валидация, CSRF, капча
  • Response анализ - проверка содержимого ответа
  • Score система - интеллектуальная оценка успеха логина

🍪 Import Browser Cookies - Диагностика доступа

  • Проверка браузера - установлен ли, найдена ли папка данных
  • Анализ cookies - сколько найдено, сколько для домена
  • Права доступа - диагностика файловых разрешений
  • Детализация ошибок - permission denied, database locked, файлы не найдены
  • Кросс-платформенность - Windows, macOS, Linux пути

🎯 Parse Page - Умное извлечение

  • Fallback селекторы - автоматические альтернативы для CSRF, логин полей
  • Умное извлечение атрибутов - value для input, content для meta, href для ссылок
  • Типизированные данные - text, attribute, html режимы
  • Структурный анализ - статистика элементов страницы
  • Детальная диагностика - какой селектор сработал, сколько попыток

🔧 ПОЛНЫЙ СПИСОК ИНСТРУМЕНТОВ (19 штук!) 🎯

Обновлено v3.6.1 - browser_login теперь работает правильно!

Базовые:

  • fetch_html - 🔥 Hybrid получение HTML (requests + Playwright)
  • extract_text - Извлечение чистого текста
  • find_elements - Поиск элементов по CSS селекторам
  • extract_links - Умное извлечение ссылок с фильтрацией
  • parse_page - Комплексный парсинг страницы

Аутентификация:

  • set_oauth_token - 🆕 OAuth/JWT токены для API
  • browser_login - 🆕 Интерактивный браузерный логин
  • login_form - Автоматический логин через формы
  • import_browser_cookies - Импорт cookies из браузеров
  • set_basic_auth - HTTP Basic Authentication

Навигация и производительность:

  • auto_paginate - Автоматическая пагинация с умными селекторами
  • infinite_scroll - 🆕 Бесконечный скроллинг и автозагрузка
  • parallel_fetch - Параллельная обработка URL (до 50 одновременно)
  • debug_screenshot - Скриншоты для отладки

Извлечение и обработка данных:

  • extract_structured_data - 🆕 Структурированное извлечение по схемам
  • download_media - 🆕 Автоматическое скачивание медиа файлов
  • cache_results - 🆕 Умное кэширование результатов

Управление сессией:

  • get_session_info - Информация о текущей сессии
  • clear_session - Очистка всех данных сессии

Установка

Глобальная установка через npx

npm install -g web-parser-mcp

Локальная установка

  • Клонируйте репозиторий:
git clone <repository-url>
cd web-parser-mcp
  • Установите зависимости Python (рекомендуется использовать uv):
# Если у вас установлен uv (рекомендуется)
uv sync

# Или использовать pip
pip install -r requirements.txt

Использование

Через npx (глобальная установка)

npx web-parser-mcp

Локальный запуск

# С uv
uv run main.py

# Или с обычным Python
python main.py

В качестве MCP сервера

Добавьте в конфигурацию вашего MCP клиента:

{
  "mcpServers": {
    "web-parser": {
      "command": "npx",
      "args": ["web-parser-mcp"]
    }
  }
}

Или для локального использования:

{
  "mcpServers": {
    "web-parser": {
      "command": "uv",
      "args": ["run", "/path/to/web-parser-mcp/main.py"]
    }
  }
}

Доступные инструменты

1. fetch_html (🔥 Hybrid Architecture)

Получает HTML контент с автоматическим выбором метода парсинга.

Параметры:

  • url (обязательный): URL веб-страницы
  • timeout (опционально): Таймаут запроса в секундах (по умолчанию: 10)
  • headers (опционально): Пользовательские заголовки HTTP
  • use_browser (опционально): Принудительно использовать Playwright (по умолчанию: false)
  • wait_for (опционально): CSS селектор для ожидания загрузки
  • import_cookies_from (опционально): Импорт cookies из браузера ('chrome', 'firefox', 'edge', 'safari')
  • anti_detection (опционально): Включить антидетекцию (по умолчанию: false)
  • debug (опционально): Подробные логи (по умолчанию: false)
  • stealth (опционально): Stealth режим (по умолчанию: false)

Примеры использования:

Простой сайт (автоматически использует requests):

{
  "tool": "fetch_html",
  "arguments": {
    "url": "https://example.com"
  }
}

JavaScript SPA (автоматически определяет и использует Playwright):

{
  "tool": "fetch_html",
  "arguments": {
    "url": "https://react-app.com/dashboard",
    "wait_for": "#content",
    "debug": true
  }
}

Сложный сайт с anti-detection:

{
  "tool": "fetch_html",
  "arguments": {
    "url": "https://protected-site.com",
    "use_browser": true,
    "stealth": true,
    "anti_detection": true,
    "import_cookies_from": "chrome"
  }
}

2. extract_text

Извлекает чистый текст из HTML контента.

Параметры:

  • html (обязательный): HTML контент для обработки
  • preserve_formatting (опционально): Сохранять форматирование (по умолчанию: false)

Пример использования:

{
  "tool": "extract_text",
  "arguments": {
    "html": "<div><p>Hello <strong>World</strong></p></div>",
    "preserve_formatting": true
  }
}

3. find_elements

Находит HTML элементы по CSS селекторам.

Параметры:

  • html (обязательный): HTML контент для поиска
  • selector (обязательный): CSS селектор (например: "div.class", "#id", "a[href]")
  • attribute (опционально): Конкретный атрибут для извлечения
  • limit (опционально): Максимальное количество элементов (по умолчанию: 10)

Пример использования:

{
  "tool": "find_elements",
  "arguments": {
    "html": "<div><a href='http://example.com'>Link</a></div>",
    "selector": "a[href]",
    "attribute": "href",
    "limit": 5
  }
}

Извлекает и фильтрует ссылки с расширенными возможностями. Идеален для получения списка страниц для дальнейшего обхода.

Параметры:

  • url (опционально): URL веб-страницы для извлечения ссылок
  • html (опционально): HTML контент для извлечения ссылок
  • base_url (опционально): Базовый URL для разрешения относительных ссылок
  • internal_only (опционально): Только внутренние ссылки (тот же домен)
  • external_only (опционально): Только внешние ссылки (другие домены)
  • url_pattern (опционально): Regex паттерн для фильтрации URL
  • text_pattern (опционально): Regex паттерн для фильтрации текста ссылок
  • exclude_fragments (опционально): Исключить фрагменты (#section) (по умолчанию: true)
  • unique_only (опционально): Только уникальные URL (по умолчанию: true)
  • limit (опционально): Максимальное количество ссылок (по умолчанию: 100)

Примеры использования:

Получить все внутренние ссылки с сайта:

{
  "tool": "extract_links",
  "arguments": {
    "url": "https://example.com",
    "internal_only": true,
    "limit": 50
  }
}

Найти ссылки на статьи (по паттерну URL):

{
  "tool": "extract_links",
  "arguments": {
    "url": "https://blog.example.com",
    "url_pattern": "/article/",
    "internal_only": true
  }
}

Получить пагинацию (ссылки "Далее", "Next"):

{
  "tool": "extract_links",
  "arguments": {
    "url": "https://example.com/posts",
    "text_pattern": "(Next|Далее|>)",
    "internal_only": true
  }
}

5. login_form

Выполняет авторизацию через веб-формы и сохраняет сессию для последующих запросов.

Параметры:

  • login_url (обязательный): URL страницы с формой логина
  • username (обязательный): Имя пользователя или email
  • password (обязательный): Пароль
  • username_field (опционально): Имя поля для username (автоопределение)
  • password_field (опционально): Имя поля для password (автоопределение)
  • additional_fields (опционально): Дополнительные поля формы (CSRF токены и т.д.)
  • submit_url (опционально): URL для отправки формы (автоопределение)

Пример использования:

{
  "tool": "login_form",
  "arguments": {
    "login_url": "https://example.com/login",
    "username": "myuser@example.com",
    "password": "mypassword",
    "additional_fields": {
      "_token": "csrf_token_value"
    }
  }
}

6. set_basic_auth

Устанавливает HTTP Basic Authentication для всех последующих запросов.

Параметры:

  • username (обязательный): Имя пользователя
  • password (обязательный): Пароль

Пример использования:

{
  "tool": "set_basic_auth",
  "arguments": {
    "username": "api_user",
    "password": "api_password"
  }
}

7. import_browser_cookies (🔥 Новое!)

Импортирует cookies из браузера для аутентификации без повторного логина.

Параметры:

  • browser (обязательный): Браузер для импорта ('chrome', 'firefox', 'edge', 'safari')
  • domain (опционально): Домен для импорта cookies (по умолчанию: все)

Примеры использования:

Импорт всех cookies из Chrome:

{
  "tool": "import_browser_cookies",
  "arguments": {
    "browser": "chrome"
  }
}

Импорт cookies для конкретного сайта:

{
  "tool": "import_browser_cookies",
  "arguments": {
    "browser": "chrome",
    "domain": "example.com"
  }
}

8. get_session_info

Получает информацию о текущей сессии, включая cookies и статус аутентификации.

Пример использования:

{
  "tool": "get_session_info",
  "arguments": {}
}

9. clear_session

Очищает все данные сессии, включая cookies и аутентификацию.

Пример использования:

{
  "tool": "clear_session",
  "arguments": {}
}

10. parse_page

Комплексный парсинг веб-страницы с извлечением структурированных данных.

Параметры:

  • url (обязательный): URL веб-страницы
  • extract_title (опционально): Извлечь заголовок страницы (по умолчанию: true)
  • extract_meta (опционально): Извлечь мета-теги (по умолчанию: true)
  • extract_links (опционально): Извлечь все ссылки (по умолчанию: false)
  • extract_images (опционально): Извлечь все изображения (по умолчанию: false)
  • custom_selectors (опционально): Пользовательские CSS селекторы

Пример использования:

{
  "tool": "parse_page",
  "arguments": {
    "url": "https://news.ycombinator.com",
    "extract_links": true,
    "extract_images": true,
    "custom_selectors": {
      "headlines": ".titleline > a",
      "scores": ".score"
    }
  }
}

🔐 Работа с авторизацией

Типичный workflow для сайтов с авторизацией:

  • Залогиниться через форму:
{
  "tool": "login_form",
  "arguments": {
    "login_url": "https://site.com/login",
    "username": "user@example.com",
    "password": "password123"
  }
}
  • Проверить статус сессии:
{
  "tool": "get_session_info",
  "arguments": {}
}
  • Получить защищенный контент:
{
  "tool": "fetch_html",
  "arguments": {
    "url": "https://site.com/private-area"
  }
}
  • Очистить сессию при необходимости:
{
  "tool": "clear_session",
  "arguments": {}
}

Пример с Basic Auth:

{
  "tool": "set_basic_auth",
  "arguments": {
    "username": "api_user",
    "password": "api_key"
  }
}

После этого все запросы будут использовать Basic Authentication.

🔥 Новые workflow сценарии v2.0

💫 Scenario 1: Современный SPA сайт

  • Автоматическое определение:
{
  "tool": "fetch_html",
  "arguments": {
    "url": "https://admin.modern-spa.com",
    "wait_for": "#dashboard-content",
    "debug": true
  }
}
  • Получение данных после загрузки JS:
{
  "tool": "extract_links", 
  "arguments": {
    "url": "https://admin.modern-spa.com",
    "use_browser": true,
    "internal_only": true
  }
}

🍪 Scenario 2: Импорт session из браузера

  • Импорт cookies из Chrome:
{
  "tool": "import_browser_cookies",
  "arguments": {
    "browser": "chrome",
    "domain": "secure-site.com"
  }
}
  • Доступ к защищенному контенту:
{
  "tool": "fetch_html",
  "arguments": {
    "url": "https://secure-site.com/private-data"
  }
}

🛡️ Scenario 3: Антидетекция для сложных сайтов

{
  "tool": "fetch_html",
  "arguments": {
    "url": "https://protected-site.com/data",
    "use_browser": true,
    "stealth": true,
    "anti_detection": true,
    "wait_for": ".content-loaded",
    "debug": true
  }
}

Scenario 4: Смешанный workflow (hybrid approach)

  • Быстрая проверка доступности (requests):
{
  "tool": "fetch_html",
  "arguments": {
    "url": "https://example.com",
    "use_browser": false
  }
}
  • Глубокий парсинг с JS (Playwright):
{
  "tool": "parse_page",
  "arguments": {
    "url": "https://example.com/dynamic",
    "use_browser": true,
    "extract_links": true,
    "wait_for": "#content"
  }
}

🔧 Автодетекция сайтов

Система автоматически определяет тип сайта и выбирает оптимальный метод:

Playwright автоматически используется для:

  • SPA приложений (React, Vue, Angular)
  • Gmail, Facebook, Twitter, LinkedIn
  • Сайтов с dashboard, admin, portal в URL
  • При наличии параметров wait_for или stealth

Requests используется для:

  • Статических HTML сайтов
  • API endpoints
  • Простых страниц без JavaScript
  • Когда Playwright недоступен

🆕 Новые workflow сценарии v3.0

🔐 Scenario 1: OAuth API интеграция

{
  "tool": "set_oauth_token",
  "arguments": {
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
    "token_type": "Bearer",
    "provider": "google"
  }
}

🌐 Scenario 2: Интерактивный браузерный логин

{
  "tool": "browser_login",
  "arguments": {
    "url": "https://complex-auth-site.com/login",
    "headless": false,
    "wait_for_user": true,
    "timeout": 300,
    "success_indicator": "#dashboard"
  }
}

📄 Scenario 3: Автоматическая пагинация

{
  "tool": "auto_paginate",
  "arguments": {
    "url": "https://news-site.com/articles",
    "max_pages": 10,
    "wait_between": 2,
    "extract_data": {
      "titles": "h2.article-title",
      "links": "a.read-more",
      "dates": ".article-date"
    }
  }
}

Scenario 4: Параллельная обработка списка URL

{
  "tool": "parallel_fetch",
  "arguments": {
    "urls": [
      "https://site1.com/page1",
      "https://site2.com/page2", 
      "https://site3.com/page3"
    ],
    "max_workers": 5,
    "extract_data": {
      "titles": "h1",
      "prices": ".price"
    }
  }
}

📷 Scenario 5: Debug скриншоты

{
  "tool": "debug_screenshot",
  "arguments": {
    "url": "https://complex-page.com",
    "path": "debug_complex_page.png",
    "full_page": true,
    "wait_for": "#content-loaded"
  }
}

🔥 Scenario 6: Комплексный workflow

  • Импорт cookies из браузера:
{
  "tool": "import_browser_cookies",
  "arguments": {
    "browser": "chrome",
    "domain": "secured-site.com"
  }
}
  • Параллельная обработка защищенных страниц:
{
  "tool": "parallel_fetch",
  "arguments": {
    "urls": ["https://secured-site.com/page1", "https://secured-site.com/page2"],
    "use_browser": true,
    "max_workers": 3
  }
}
  • Автопагинация с извлечением данных:
{
  "tool": "auto_paginate",
  "arguments": {
    "url": "https://secured-site.com/data",
    "max_pages": 5,
    "extract_data": {
      "records": ".data-record",
      "values": ".field-value"
    }
  }
}

🆕 Новые workflow сценарии v3.1 - ФИНАЛЬНЫЕ!

♾️ Scenario 1: Бесконечный скроллинг (социальные сети, ленты)

{
  "tool": "infinite_scroll",
  "arguments": {
    "url": "https://social-feed.com",
    "trigger_selector": ".load-more-btn",
    "max_scrolls": 20,
    "scroll_pause_time": 3,
    "extract_data": {
      "posts": ".post-content",
      "authors": ".post-author",
      "likes": ".like-count"
    },
    "stop_condition": ".end-of-feed"
  }
}

📊 Scenario 2: Структурированное извлечение (e-commerce продукты)

{
  "tool": "extract_structured_data", 
  "arguments": {
    "url": "https://shop.com/product/123",
    "schema": "product",
    "output_format": "json"
  }
}

Пользовательская схема для курсов:

{
  "tool": "extract_structured_data",
  "arguments": {
    "url": "https://learning-platform.com/course/python",
    "schema": "custom",
    "custom_schema": {
      "title": ["h1.course-title", ".main-title"],
      "instructor": [".teacher-name", ".instructor"],
      "price": [".price", ".cost"],
      "duration": [".length", ".duration"],
      "students": [".enrollment-count", ".students"]
    },
    "output_format": "table"
  }
}

💾 Scenario 3: Кэширование для производительности

// Сначала проверяем кэш
{
  "tool": "cache_results",
  "arguments": {
    "action": "get",
    "key": "product_data_123"
  }
}

// Если нет в кэше - загружаем и кэшируем
{
  "tool": "cache_results",
  "arguments": {
    "action": "set", 
    "key": "product_data_123",
    "value": "fetched_product_data",
    "duration": "1h"
  }
}

// Статистика кэша
{
  "tool": "cache_results",
  "arguments": {
    "action": "stats"
  }
}

📥 Scenario 4: Массовое скачивание медиа

{
  "tool": "download_media",
  "arguments": {
    "url": "https://gallery.com/photos",
    "types": ["images", "videos"],
    "download_path": "./media_files/",
    "max_files": 100,
    "min_size": 10,
    "max_size": 50
  }
}

Скачивание документов:

{
  "tool": "download_media",
  "arguments": {
    "url": "https://research-site.com/papers",
    "types": ["pdfs", "documents"],
    "download_path": "./research_papers/",
    "max_files": 20,
    "min_size": 100,
    "max_size": 10
  }
}

🏆 Scenario 5: Комплексный enterprise workflow

  • Импорт cookies из браузера:
{
  "tool": "import_browser_cookies",
  "arguments": {
    "browser": "chrome",
    "domain": "enterprise-platform.com"
  }
}
  • Бесконечный скролл с извлечением данных:
{
  "tool": "infinite_scroll",
  "arguments": {
    "url": "https://enterprise-platform.com/data-feed",
    "max_scrolls": 50,
    "extract_data": {
      "records": ".data-record",
      "timestamps": ".record-time",
      "values": ".metric-value"
    }
  }
}
  • Структурированное извлечение и кэширование:
{
  "tool": "extract_structured_data",
  "arguments": {
    "url": "https://enterprise-platform.com/analytics",
    "schema": "custom",
    "custom_schema": {
      "metrics": [".metric", ".kpi"],
      "trends": [".trend-data", ".chart-data"],
      "alerts": [".alert", ".warning"]
    }
  }
}
  • Параллельная обработка связанных страниц:
{
  "tool": "parallel_fetch",
  "arguments": {
    "urls": ["https://enterprise-platform.com/dept1", "https://enterprise-platform.com/dept2"],
    "max_workers": 5,
    "extract_data": {
      "department_data": ".dept-metrics",
      "staff_count": ".staff-counter"
    }
  }
}
  • Скачивание отчетов и debug скриншот:
{
  "tool": "download_media",
  "arguments": {
    "url": "https://enterprise-platform.com/reports", 
    "types": ["pdfs", "documents"],
    "download_path": "./enterprise_reports/"
  }
}

{
  "tool": "debug_screenshot",
  "arguments": {
    "url": "https://enterprise-platform.com/dashboard",
    "path": "./debug/enterprise_dashboard.png",
    "full_page": true
  }
}

🔥 Новые диагностические возможности v3.2.0

🔍 Scenario 1: Детальная диагностика логина (browser_login)

{
  "tool": "browser_login",
  "arguments": {
    "url": "https://stepik.org/login",
    "headless": false,
    "success_indicator": ".navbar-profile",
    "verbose": true,
    "auto_screenshot_on_error": true
  }
}

Получите детальный анализ:

{
  "success": false,
  "diagnostics": {
    "error_details": "CAPTCHA detected on page with selector: .g-recaptcha",
    "protection_detected": "CAPTCHA",
    "browser_logs": [
      "[console] Loading reCAPTCHA...",
      "[ERROR] Failed to verify reCAPTCHA"
    ],
    "final_screenshot": "./debug/browser_login_1703123456.png",
    "login_errors": ["Invalid credentials"],
    "response_status": 200
  },
  "recommendations": [
    "Manual CAPTCHA solving required. Use headless=false for user interaction.",
    "Consider using anti-captcha services for automation."
  ]
}

📊 Scenario 2: Умный анализ формы логина (login_form)

{
  "tool": "login_form",
  "arguments": {
    "login_url": "https://stepik.org/login",
    "username": "test@example.com",
    "password": "password123",
    "verbose": true
  }
}

Получите полный анализ:

{
  "status_code": 403,
  "likely_success": false,
  "success_score": "2/12",
  "failure_score": "4/7",
  "response_time_seconds": 1.2,
  "diagnostics": {
    "error_details": "403 Forbidden - Bot detection active",
    "protection_detected": "Bot Detection",
    "response_protection": "Bot Detection",
    "login_errors": ["Too many login attempts"],
    "redirect_chain": [
      {"url": "https://stepik.org/login", "status": 200, "final_url": "https://stepik.org/login"},
      {"url": "https://stepik.org/api/auth", "status": 403, "final_url": "https://stepik.org/blocked"}
    ],
    "form_analysis": {
      "action": "/api/auth",
      "method": "POST",
      "inputs": [
        {"name": "email", "type": "email", "required": true},
        {"name": "password", "type": "password", "required": true},
        {"name": "csrfmiddlewaretoken", "type": "hidden", "value": "***"}
      ]
    }
  },
  "recommendations": [
    "403 Forbidden suggests bot protection. Try browser_login with manual interaction.",
    "Import real browser cookies before login attempt."
  ]
}

🍪 Scenario 3: Диагностика импорта cookies (import_browser_cookies)

{
  "tool": "import_browser_cookies",
  "arguments": {
    "browser": "chrome",
    "domain": "stepik.org",
    "verbose": true
  }
}

Получите детальную диагностику:

{
  "cookies_imported": 0,
  "diagnostics": {
    "browser_found": true,
    "cookie_file_path": "C:\\Users\\user\\AppData\\Local\\Google\\Chrome\\User Data",
    "total_cookies_in_file": 150,
    "domain_matches": 0,
    "access_error": "Permission denied - browser data directory not accessible",
    "cookie_breakdown": {
      "total_found": 150,
      "domain_filtered": 0,
      "successfully_imported": 0,
      "import_failures": 0
    },
    "system_info": {
      "platform": "Windows",
      "architecture": "64bit"
    }
  },
  "recommendations": [
    "No cookies found for domain 'stepik.org' in chrome.",
    "Visit stepik.org in chrome browser first to create cookies.",
    "Check domain spelling or try without domain filter."
  ]
}

🎯 Scenario 4: Умное извлечение с fallback (parse_page)

{
  "tool": "parse_page",
  "arguments": {
    "url": "https://stepik.org/login",
    "custom_selectors": {
      "csrf_token": {
        "selector": "input[name='csrfmiddlewaretoken']",
        "extract": "attribute",
        "attribute": "value",
        "fallbacks": [
          "meta[name='csrf-token']",
          "input[name*='csrf']"
        ]
      },
      "login_field": {
        "selector": "input[name='email']",
        "extract": "attribute",
        "attribute": "name"
      }
    },
    "smart_extraction": true,
    "verbose": true
  }
}

Получите точное извлечение:

{
  "custom": {
    "csrf_token": {
      "values": ["xyz123token456"],
      "count": 1,
      "selector_used": "input[name='csrfmiddlewaretoken']",
      "selectors_tried": 3,
      "success": true,
      "diagnostics": {
        "primary_selectors": ["input[name='csrfmiddlewaretoken']"],
        "fallback_selectors": ["meta[name='csrf-token']", "input[name*='csrf']"],
        "extract_type": "attribute",
        "attribute_name": "value"
      }
    },
    "login_field": {
      "values": ["email"],
      "count": 1,
      "selector_used": "input[name='email']",
      "success": true
    }
  },
  "extraction_stats": {
    "successful_extractions": 2,
    "failed_extractions": 0,
    "total_values_extracted": 2
  }
}

🏆 Scenario 5: Комплексная диагностика workflow

  • Диагностика страницы:
{"tool": "parse_page", "arguments": {"url": "https://site.com/login", "verbose": true}}
  • Импорт cookies с диагностикой:
{"tool": "import_browser_cookies", "arguments": {"browser": "chrome", "verbose": true}}
  • Логин с полной диагностикой:
{"tool": "browser_login", "arguments": {"url": "https://site.com/login", "verbose": true, "auto_screenshot_on_error": true}}
  • Альтернативный логин через форму:
{"tool": "login_form", "arguments": {"login_url": "https://site.com/login", "username": "user", "password": "pass", "verbose": true}}

📦 Зависимости

Основные:

  • Python 3.12+
  • mcp - MCP протокол
  • beautifulsoup4 - HTML парсинг
  • requests - HTTP запросы
  • lxml - XML/HTML парсер

Новые в v2.0:

  • playwright - 🔥 Браузерная автоматизация для JS сайтов
  • browser-cookie3 - 🍪 Импорт cookies из браузеров

Автоматическая установка:

При первом запуске автоматически установятся:

  • Chromium браузер для Playwright
  • Все Python зависимости через uv/pip

Разработка

  • Клонируйте репозиторий
  • Установите зависимости: uv sync
  • Запустите сервер: uv run main.py

Лицензия

MIT License

Keywords

mcp

FAQs

Package last updated on 25 Aug 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts