web-parser-mcp
v3.7.9
Published
🚀 MCP SERVER FIXED v3.7.9! Resolved import errors, middleware conflicts, type hints - NOW WORKING PERFECTLY!
Maintainers
Keywords
Readme
🔧 Web Parser MCP Server v3.7.8 - CRITICAL BUGS FIXED! 🚀
РЕВОЛЮЦИОННАЯ АРХИТЕКТУРА! 🚀 ОДИН браузерный контекст для ВСЕХ инструментов! Автоматическое разделение сессии! Идеальное управление авторизацией!
🔥 КРИТИЧЕСКИЙ ФИКС v3.7.8 - BUGS ELIMINATION!
❌ ИСПРАВЛЕНЫ КРИТИЧЕСКИЕ ПРОБЛЕМЫ:
1. 🔴 Undefined Variables Bug (login_form_tool)
- 🐛 Проблема: Использование неопределенных переменных
login_response,response.url - ✅ Решение: Заменены на корректные
login_result.get() - 📁 Файл:
src/tools/auth.py
2. 🔴 Missing Await Bug (api_test.py)
- 🐛 Проблема:
get_http_client()вызывался безawait - ✅ Решение: Добавлен
awaitдля асинхронного вызова - 📁 Файл:
src/tools/api_test.py
3. 🔴 Architectural Inconsistency (navigation.py)
- 🐛 Проблема: Manual browser creation вместо unified session
- ✅ Решение: Переписано для использования
UnifiedHTTPClient - 📁 Файл:
src/tools/navigation.py
4. 🔴 Bare Except Clauses (audit.py)
- 🐛 Проблема:
except:без спецификации исключений скрывает ошибки - ✅ Решение: Заменены на специфичные исключения
- 📁 Файл:
src/utils/audit.py
5. 🔴 Infinite Loop Risk (http_client.py)
- 🐛 Проблема:
ParallelBrowserManagerмог зависнуть навсегда - ✅ Решение: Добавлен timeout 30 секунд
- 📁 Файл:
src/utils/http_client.py
🧪 РЕЗУЛЬТАТ ТЕСТИРОВАНИЯ:
✅ auth.py imports OK
✅ api_client OK
✅ http_client OK
🎯 All critical fixes verified!🆕 НОВЫЕ ПРОДАКШЕН ВОЗМОЖНОСТИ (ЭТАП 4 ЗАВЕРШЕН!)
🐳 DOCKER & CONTAINIZATION
- ✅ Multi-stage Dockerfile - оптимизированный для разработки и продакшена
- ✅ Docker Compose - полная инфраструктура (Redis, PostgreSQL, Nginx, Prometheus, Grafana)
- ✅ Production ready - с SSL, rate limiting, health checks
- ✅ Development setup - hot reload, debugging, testing
🔄 CI/CD PIPELINE
- ✅ GitHub Actions - полный pipeline с тестами, security scan, docker build
- ✅ Automated releases - semantic versioning, PyPI publishing
- ✅ Security scanning - Bandit, Trivy, dependency checks
- ✅ Performance testing - nightly builds, load testing
📊 MONITORING & OBSERVABILITY
- ✅ Prometheus metrics - comprehensive monitoring
- ✅ Grafana dashboards - visualization and alerting
- ✅ Health checks - multi-component system monitoring
- ✅ Structured logging - JSON logs with context tracking
📚 PROFESSIONAL DOCUMENTATION
- ✅ MkDocs site - comprehensive documentation
- ✅ API reference - auto-generated from docstrings
- ✅ Deployment guides - Docker, Kubernetes, AWS, GCP
- ✅ Developer guides - setup, testing, contributing
🎯 ГОТОВ К ПРОДАКШЕНУ! Полная DevOps инфраструктура, мониторинг, CI/CD и документация!
🚀 РЕВОЛЮЦИОННАЯ АРХИТЕКТУРА 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": "[email protected]",
"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- базовая загрузка DOMselector 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 получает ПОЛНЫЙ контент современных веб-приложений! 🚀
🔄 ПОЛНАЯ МИГРАЦИЯ НА PLAYWRIGHT v3.7.2 - NO MORE REQUESTS API!
✅ КОМПЛЕТНАЯ ЗАМЕНА REQUESTS API:
- 🚫 УБРАНЫ ВСЕ requests СИСТЕМНЫЕ ВЫЗОВЫ - только UnifiedHTTPClient
- 🔄 ПЕРЕПИСАНЫ ВСЕ HTTP-ИНСТРУМЕНТЫ - единая архитектура
- 🎯 ПОЛНАЯ СОВМЕСТИМОСТЬ СЕССИЙ - все инструменты делят браузерный контекст
🔧 ПЕРЕПИСАННЫЕ ИНСТРУМЕНТЫ:
- ✅
extract_links_tool- теперь использует UnifiedHTTPClient (был requests) - ✅
parse_page_tool- теперь использует UnifiedHTTPClient (был requests) - ✅
download_media_tool- гибридный подход: UnifiedHTTPClient для HTML + aiohttp для файлов - ✅
login_form_tool- теперь использует UnifiedHTTPClient (был requests)
🎯 НОВАЯ АРХИТЕКТУРА:
// Раньше: Разные API для разных инструментов
extract_links() → session.get() // requests API
parse_page() → session.get() // requests API
download_media() → session.get() // requests API
login_form() → session.post() // requests API
// Теперь: Единый UnifiedHTTPClient для всех
extract_links() → http_client.get() // Playwright browser
parse_page() → http_client.get() // Playwright browser
download_media() → http_client.get() // Playwright browser
login_form() → http_client.post() // Playwright browser🏗️ ПРЕИМУЩЕСТВА ПОЛНОЙ МИГРАЦИИ:
- 💯 100% ЕДИНАЯ АРХИТЕКТУРА - нет больше смешанных API
- 🔐 СОВЕРШЕННОЕ УПРАВЛЕНИЕ СЕССИЕЙ - все запросы через один браузер
- 🎯 ПОЛНАЯ СОВМЕСТИМОСТЬ - куки автоматически разделяются между всеми инструментами
- ⚡ ЛУЧШАЯ НАДЕЖНОСТЬ - нет проблем синхронизации между requests и Playwright
- 🔄 ПРОСТОТА ПОДДЕРЖКИ - один HTTP клиент для всех операций
📊 СТАТИСТИКА МИГРАЦИИ:
- ✅ Убрано: 8+ вызовов requests API
- ✅ Добавлено: UnifiedHTTPClient для всех HTTP операций
- ✅ Улучшено: Управление сессиями и куками
- ✅ Сохранено: Все существующие возможности
Теперь ВСЕ HTTP-инструменты используют Playwright через UnifiedHTTPClient! 🎉
🎯 100% ОБЪЕДИНЕННАЯ АРХИТЕКТУРА v3.7.3 - NO REQUESTS API REMAINING!
✅ ФИНАЛЬНАЯ МИГРАЦИЯ:
- 🚫 ПОЛНОСТЬЮ УБРАН requests API - последний инструмент исправлен
- 🔄 extract_structured_data_tool - теперь использует UnifiedHTTPClient
- 🎯 100% ЕДИНАЯ АРХИТЕКТУРА - все инструменты на Playwright
- 💯 ПОЛНАЯ СОВМЕСТИМОСТЬ СЕССИЙ - идеальное управление авторизацией
🔧 ФИНАЛЬНЫЙ СПИСОК ИНСТРУМЕНТОВ:
- ✅
fetch_html- UnifiedHTTPClient (Playwright enhanced) - ✅
extract_links_tool- UnifiedHTTPClient (Playwright) - ✅
parse_page_tool- UnifiedHTTPClient (Playwright) - ✅
download_media_tool- UnifiedHTTPClient (HTML) + aiohttp (files) - ✅
login_form_tool- UnifiedHTTPClient (Playwright) - ✅
extract_structured_data_tool- UnifiedHTTPClient (Playwright)
📊 ОКОНЧАТЕЛЬНАЯ СТАТИСТИКА:
- ✅ Убрано: 10+ вызовов requests API
- ✅ Добавлено: UnifiedHTTPClient для всех HTTP операций
- ✅ Улучшено: 100% совместимость сессий
- ✅ Сохранено: Все существующие возможности
🏗️ ИТОГОВАЯ АРХИТЕКТУРА:
// Раньше: Смешанные API
fetch_html() → requests.Session + Playwright (hybrid)
extract_links() → requests.Session
parse_page() → requests.Session
login_form() → requests.Session
download_media() → requests.Session
extract_structured_data() → requests.Session
// Теперь: 100% Unified Playwright
fetch_html() → http_client.get() // Playwright enhanced
extract_links() → http_client.get() // Playwright
parse_page() → http_client.get() // Playwright
login_form() → http_client.post() // Playwright
download_media() → http_client.get() // Playwright + aiohttp
extract_structured_data() → http_client.get() // Playwright🎉 ВСЕ ИНСТРУМЕНТЫ ТЕПЕРЬ ИСПОЛЬЗУЮТ PLAYWRIGHT ЧЕРЕЗ UNIFIEDHTTPCLIENT!
Больше НЕТ requests API в инструментах! 🚀
🚶 ПОЛНАЯ ИМИТАЦИЯ ЧЕЛОВЕКА v3.7.4 - HUMAN-LIKE NAVIGATION!
✅ ПОЛНАЯ ИМИТАЦИЯ ПОВЕДЕНИЯ ЧЕЛОВЕКА:
- 🎯 НАБОР URL В АДРЕСНОЙ СТРОКЕ - посимвольный ввод с задержками
- ⌨️ НАЖАТИЕ ENTER - вместо page.goto()
- 👀 ПРОКРУТКА СТРАНИЦЫ - имитация чтения человеком
- 🖱️ ДВИЖЕНИЯ МЫШИ - реалистичные перемещения курсора
- ⏱️ СЛУЧАЙНЫЕ ПАУЗЫ - между действиями
🎯 НОВАЯ АРХИТЕКТУРА НАВИГАЦИИ:
// Раньше: Прямые HTTP запросы
page.goto(url) // API вызов
page.content() // Чтение HTML
// Теперь: Имитация человека
await keyboard.type(url, {delay: 50}) // Набор текста
await keyboard.press('Enter') // Нажатие Enter
await page.mouse.wheel(0, 300) // Прокрутка
await page.mouse.move(x, y, {steps: 20}) // Движение мыши🚀 ПАРАЛЛЕЛЬНЫЕ БРАУЗЕРЫ:
// parallel_fetch теперь использует:
Browser Pool (до 5 браузеров)
├── Browser 1 → URL 1 (human navigation)
├── Browser 2 → URL 2 (human navigation)
├── Browser 3 → URL 3 (human navigation)
└── Browser 4 → URL 4 (human navigation)🎯 ПРЕИМУЩЕСТВА НОВОЙ АРХИТЕКТУРЫ:
- 🕵️ ОБХОД ЗАЩИТЫ - детекторы ботов не распознают автоматизацию
- 🎭 РЕАЛИСТИЧНОЕ ПОВЕДЕНИЕ - движения мыши, прокрутка, паузы
- ⚡ ИСТИННЫЙ ПАРАЛЛЕЛИЗМ - каждый URL в отдельном браузере
- 🔒 ЛУЧШАЯ СОВМЕСТИМОСТЬ - с динамическими и защищенными сайтами
📊 СТАТИСТИКА ИМИТАЦИИ:
- ✅ 10+ шагов имитации поведения человека
- ✅ 50ms задержка между символами при наборе URL
- ✅ 20 шагов движения мыши к элементам
- ✅ 3 прокрутки страницы для имитации чтения
- ✅ 5 браузеров максимум для параллельной работы
Теперь инструменты ведут себя как настоящий пользователь! 🎭
🚀 ЭФФЕКТИВНЫЙ API + БРАУЗЕРНАЯ СЕССИЯ v3.7.5 - BEST OF BOTH WORLDS!
✅ ГИБРИДНАЯ АРХИТЕКТУРА - ЛУЧШЕЕ ОТ ДВУХ МИРОВ:
- 🚀 БЫСТРЫЕ API ЗАПРОСЫ - requests для высокой производительности
- 🔐 СОВЕРШЕННОЕ УПРАВЛЕНИЕ СЕССИЕЙ - куки из браузерной сессии
- 🎯 АВТОМАТИЧЕСКОЕ ПРОКИДЫВАНИЕ КУК - после browser_login все работает
- ⚡ ЭФФЕКТИВНОСТЬ + БЕЗОПАСНОСТЬ - скорость requests + надежность браузера
🏗️ НОВАЯ АРХИТЕКТУРА:
// Раньше: Чистый Playwright (медленный для больших объемов)
page.goto(url) → ожидание загрузки → чтение HTML
// Теперь: Гибридный подход
1. browser_login() → создает браузерную сессию с куками
2. fetch_html() → использует SessionAPIClient с браузерными куками
3. Все инструменты → автоматически используют session cookies🎯 ПРЕИМУЩЕСТВА НОВОГО ПОДХОДА:
- 🚀 ВЫСОКАЯ ПРОИЗВОДИТЕЛЬНОСТЬ - requests API для быстрой работы
- 🔐 НАДЕЖНАЯ АУТЕНТИФИКАЦИЯ - куки из реальной браузерной сессии
- ⚡ ЭФФЕКТИВНОСТЬ - нет overhead от браузерной автоматизации
- 🎯 ПРОСТОТА ИСПОЛЬЗОВАНИЯ - один browser_login, все остальное работает
- 🔄 АВТОМАТИЧЕСКОЕ ОБНОВЛЕНИЕ - куки обновляются из браузерной сессии
📊 КАК ПРОКИДЫВАЮТСЯ КУКИ:
// 1. Логин в браузере
browser_login(url, username, password)
// ✅ Создает браузерную сессию с куками
// 2. Автоматическое обновление API клиента
api_client.update_from_browser_session()
// ✅ Копирует куки из браузера в requests.Session
// 3. Все последующие запросы используют куки
api_client.get("https://protected-site.com/api/data")
// ✅ Автоматически отправляет session cookies🛠️ КАК ЭТО РАБОТАЕТ:
# SessionAPIClient - эффективный requests клиент с браузерными куками
class SessionAPIClient:
def update_from_browser_session(self):
"""Копирует куки из браузерной сессии в requests.Session"""
def get(self, url, headers=None, params=None):
"""GET запрос с session куками"""
def post(self, url, data=None, json_data=None):
"""POST запрос с session куками"""🎯 IDEAL WORKFLOW:
// 1. Один раз логинимся в браузере
{
"tool": "browser_login",
"arguments": {
"url": "https://site.com/login",
"username": "user",
"password": "pass"
}
}
// 2. Все инструменты автоматически используют session cookies
{
"tool": "fetch_html",
"arguments": {"url": "https://site.com/protected"}
}
// ✅ Использует browser session cookies
{
"tool": "extract_links_tool",
"arguments": {"url": "https://site.com/data"}
}
// ✅ Автоматически аутентифицирован
{
"tool": "parallel_fetch",
"arguments": {"urls": ["url1", "url2", "url3"]}
}
// ✅ Все запросы с session cookies🎉 Теперь у вас БЫСТРЫЕ API запросы + НАДЕЖНАЯ браузерная аутентификация!
🔧 АРХИТЕКТУРНЫЕ ИСПРАВЛЕНИЯ v3.7.6 - CRITICAL FIXES!
✅ ИСПРАВЛЕНЫ КРИТИЧЕСКИЕ ПРОБЛЕМЫ:
1. 🔄 УНИФИЦИРОВАННАЯ АРХИТЕКТУРА
- debug_screenshot_tool теперь использует UnifiedHTTPClient вместо старой архитектуры
- Все инструменты работают через единую систему
- Убрана неконсистентность между инструментами
2. 📦 ИСПРАВЛЕНЫ ВЕРСИИ
pyproject.toml: v3.7.6 ✅main.py: обновлен до актуальной архитектуры ✅- Консистентность версий во всех файлах ✅
3. 🗑️ УБРАН ДУБЛИРУЮЩИЙСЯ КОД
- Создан
ensure_session_updated()в SessionAPIClient - Убраны повторяющиеся вызовы
update_from_browser_session() - Централизованное управление сессиями
4. 🧹 УБРАНЫ НЕИСПОЛЬЗУЕМЫЕ ИМПОРТЫ
- Удален неиспользуемый
sessionиз media.py - Очищены импорты от устаревших переменных
- Оптимизирована загрузка модулей
5. 🔒 УЛУЧШЕННАЯ БЕЗОПАСНОСТЬ
- Ротация User-Agent при каждом запуске SessionAPIClient
- Добавлены security headers (Sec-Fetch-*, Cache-Control)
- Методы
rotate_user_agent()иget_security_info() - Анти-детекционные заголовки
🎯 НОВЫЕ ВОЗМОЖНОСТИ БЕЗОПАСНОСТИ:
api_client = get_api_client()
# Ротация User-Agent
api_client.rotate_user_agent()
# Информация о безопасности
security_info = api_client.get_security_info()
# {
# "user_agent": "Mozilla/5.0...",
# "cookies_count": 15,
# "session_updated": true,
# "headers_count": 12,
# "has_browser_session": true
# }🏗️ ФИНАЛЬНАЯ АРХИТЕКТУРА:
🔧 SessionAPIClient (v3.7.6)
├── ✅ Rotating User-Agent
├── ✅ Auto session updates
├── ✅ Security headers
├── ✅ Browser cookie sync
└── ✅ Unified tool interface
📊 Все инструменты:
├── fetch_html → SessionAPIClient ✅
├── extract_links_tool → SessionAPIClient ✅
├── parse_page_tool → SessionAPIClient ✅
├── download_media_tool → SessionAPIClient ✅
├── extract_structured_data → SessionAPIClient ✅
└── debug_screenshot_tool → UnifiedHTTPClient ✅🔧 КРИТИЧЕСКИЕ ПРОБЛЕМЫ ИСПРАВЛЕНЫ! АРХИТЕКТУРА УНИФИЦИРОВАНА!
🚨 КРИТИЧЕСКИЕ ИСПРАВЛЕНИЯ 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": "[email protected]",
"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": "[email protected]",
"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": "[email protected]",
"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(опционально): Пользовательские заголовки HTTPuse_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
}
}4. extract_links
Извлекает и фильтрует ссылки с расширенными возможностями. Идеален для получения списка страниц для дальнейшего обхода.
Параметры:
url(опционально): URL веб-страницы для извлечения ссылокhtml(опционально): HTML контент для извлечения ссылокbase_url(опционально): Базовый URL для разрешения относительных ссылокinternal_only(опционально): Только внутренние ссылки (тот же домен)external_only(опционально): Только внешние ссылки (другие домены)url_pattern(опционально): Regex паттерн для фильтрации URLtext_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(обязательный): Имя пользователя или emailpassword(обязательный): Парольusername_field(опционально): Имя поля для username (автоопределение)password_field(опционально): Имя поля для password (автоопределение)additional_fields(опционально): Дополнительные поля формы (CSRF токены и т.д.)submit_url(опционально): URL для отправки формы (автоопределение)
Пример использования:
{
"tool": "login_form",
"arguments": {
"login_url": "https://example.com/login",
"username": "[email protected]",
"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": "[email protected]",
"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": "[email protected]",
"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
