Senior Crawler Engineer (Node.js/TypeScript)
Ищем опытного инженера для разработки и поддержки промышленного краулер-движка на Node.js/TypeScript. Нужно будет создавать ядро и модули, переносить существующие краулеры с JVM, внедрять ИИ-слой для извлечения данных и регулярно чинить сломанные селекторы. Требуется минимум 1.5 года опыта с краулерами в продакшене, уверенное владение Node.js/TypeScript, Playwright/Puppeteer и опыт борьбы с антибот-защитой.
Зарплата не указана — оценили по рынку
На основе 113 похожих вакансий за 90 дней.
Что предстоит делать
Мы ищем сильного инженера, который поможет нам построить и поддерживать масштабируемый движок для сбора данных — надёжный, предсказуемый и устойчивый к защитным механизмам сайтов. Это не про разовые скрипты: речь о промышленной системе, которая должна работать стабильно месяцами и годами, а при изменениях на целевых порталах — быстро и прозрачно восстанавливаться. Вам предстоит не только разрабатывать ядро и модули краулера, но и переносить существующие реализации с JVM, внедрять слой на базе ИИ для извлечения данных, а также обеспечивать качество данных и прозрачность работы системы. Ключевая особенность роли — значительная доля рутинного, но критически важного сопровождения: вы будете регулярно чинить сломавшиеся селекторы, разбираться в изменившихся потоках навигации и фиксировать нюансы работы отдельных порталов.
- Разработать ядро краулер-движка на Node.js/TypeScript. Реализовать оркестрацию запусков, загрузку модулей, логику повторных попыток и задержек (retries и backoff), контроль параллелизма и частоты запросов, обработку ошибок, работу с артефактами запусков и логированием.
- Создать набор подключаемых модулей (управление браузером, маршрутизация для обхода антибот-защиты, извлечение данных, пагинация, вывод результатов) и спроектировать декларативный формат описания источников — схему конфигурации и контракт выходной схемы, отделённые от параметров времени выполнения.
- Использовать проверенные готовые решения для типовых слоёв (автоматизация браузера, цикл обхода, механизмы скрытности), чтобы сосредоточить внутренние усилия на том, что действительно специфично для наших данных.
- Выстроить рабочий процесс для разработчиков: добавление источника, локальное тестирование, регистрация, планирование, мониторинг выполнения.
- Перенести поведение существующих краулеров с JVM без потери покрытия и точности на уровне полей, включая неописанные «костыли» и особенности отдельных порталов.
- Валидировать каждую миграцию по эталонному выводу, приоритизируя источники по частоте поломок, а не по алфавиту. Документировать особенности каждого портала в процессе переноса.
- Поддерживать работу действующих краулеров в ходе миграции: классифицировать и устранять сбои, чинить сломанные селекторы, адаптироваться к изменениям навигации, перемещённым порталам и новой логике пагинации. Участвовать в дежурствах по источникам, за которые вы отвечаете.
- Корректно различать типы сбоев: временные ошибки, изменения DOM, новая антибот-защита, стены авторизации, полное исчезновение портала — и вовремя эскалировать проблемы, которые нельзя решить инженерными методами.
- Работать с антибот-защитой в рамках закона и правил сервисов: проводить реверс-инжиниринг порталов через анализ сетевого трафика и недокументированных JSON-эндпоинтов, подбирать подходящий инструмент под каждый источник (обычный HTTP, headless-браузер, управляемый stealth-браузер, стратегия прокси, сервис CAPTCHA).
- Построить ИИ-слой для извлечения данных: реализовать извлечение на базе LLM с приоритетом схемы, с детерминированным фоллбэком на селекторы и циклом самовосстановления (обнаружение, диагностика, исправление, проверка) в жёстких рамках по количеству итераций и бюджету затрат, с контролем через верификацию схемы и сравнение с последним эталонным выводом.
- Регистрировать источники в платформе планирования и мониторинга, участвовать в нормализации данных перед записью в хранилище (сопоставление имён, дедупликация, идемпотентная запись, восстановление частичных запусков), расширять бэкенд-сервисы на Node.js и внутренний UI для отображения статуса краулеров
- Требования к кандидату:
- От 3 лет опыта в коммерческой разработке ПО.
- Не менее 1,5 лет разработки и поддержки краулеров/скраперов в продакшене на Node.js — это жёсткое требование: нужны примеры реально запущенных, расписанных по расписанию и поддерживаемых краулеров для сайтов, которые вы не контролируете.
- Опыт длительной поддержки краулеров в продакшене (не разовые скрипты и не проекты для одного сайта).
- Уверенное владение Node.js и TypeScript: асинхронные паттерны, контроль параллелизма и частоты запросов, обработка ошибок, повторные попытки и задержки.
- Практический опыт работы с Playwright и/или Puppeteer в продакшене: понимание компромиссов между headless и headful, работа с контекстами браузера, состоянием хранения, перехватом сетевого трафика.
- Знание инструментов для краулинга и парсинга в экосистеме Node (Crawlee, Cheerio или аналоги), а также умение выполнять низкоуровневый HTTP-скрапинг, когда браузер не нужен.
- Опыт работы с бэкенд-сервисами на Node и REST API, знание SQL-баз данных (PostgreSQL или аналог).
- Умение писать переиспользуемый код в стиле библиотеки: чёткие границы модулей, паттерны плагинов/стратегий, типизированные интерфейсы, версионированная конфигурация. Важно уметь показать пример, где несколько разовых решений были обобщены в единый движок.
- Практический опыт борьбы с антибот-системами: Cloudflare Bot Management, Imperva, reCAPTCHA v2/v3, Turnstile, лимитирование частоты запросов; понимание браузерного и TLS-фингерпринтинга, стратегий использования прокси, сохранения сессий, платформ управляемых stealth-браузеров. Умение вовремя понять, что решение с CAPTCHA не поможет, потому что проблема в другом.
- Практическое применение LLM для извлечения данных: структурированный вывод на основе схемы, проектирование промптов, валидация результатов, учёт стоимости токенов, понимание, когда LLM лучше селекторов, а когда — нет, и как защититься от «уверенных, но неверных» ответов.
- Инженерия качества данных: валидация схемы, тестирование по эталонам/снимкам и сравнение данных с предыдущими запусками, нормализация, нечёткое сопоставление имён, дедупликация, идемпотентная запись.
- Владение Git, навыки проведения код-ревью, понимание важности покрытия тестами, опыт работы с CI/CD, Docker, деплоем в облаке (предпочтительно AWS). Способность читать код на JVM для точного переноса логики.
- Рабочий уровень английского языка для ежедневной технической коммуникации с командой заказчика.
- Будет плюсом:
- Опыт миграции скрапинг-системы с одного языка/рантайма на другой без простоя.
- Опыт настройки краулеров на основе конфигурации или декларативного подхода, где источники — это данные, а не код.
- Знакомство с фреймворками для агентов или агентскими рабочими процессами (вызов инструментов, многошаговые циклы, участие человека в цикле) — LangGraph, Claude Agent SDK или аналоги; агентская автоматизация браузера (Browser Use, Stagehand); MCP-серверы.
- Знание управляемых платформ для скрапинга/извлечения данных (Firecrawl, Kadoa, ScrapeGraphAI, Apify) и коммерческих поставщиков данных как альтернативы скрапингу.
- Опыт извлечения данных из PDF и документов (OCR, извлечение таблиц, структурированный парсинг); опыт скрапинга порталов государственных органов США или публичных реестров.
- Понимание юридических аспектов скрапинга и границ правил использования сервисов: robots.txt, лимитирование частоты запросов, стены аутентификации, условия распространения данных.
- Опыт фронтенд-разработки (React) для внутреннего UI операций — приветствуется, но не является заменой требований к краулеру.
Стек и инструменты
Подходит ли вам эта вакансия?
Зарегистрируйтесь и загрузите резюме — посчитаем % совпадения с этой вакансией, подсветим сильные стороны и что стоит подтянуть
Похожие вакансии
6 вакансийСтарший Fullstack и AI/ML инженер
~2 006 588 ₸ оценка
Создавать AI-решения для автоматизации бизнес-процессов: от интерфейсов на React до бэкенда на Node.js/Python и ML-моделей. Нужен опыт с LLM, RAG, интеграцией с ERP/CRM и продакшн-поддержкой. Предлагают проектную или частичную занятость, удалённо.
Full Stack разработчик (NestJS, Angular)
Ищем опытного Full Stack разработчика (NestJS + Angular) для проекта в сфере IBM ELM. Нужно проектировать и развивать enterprise-приложения, работать с MongoDB и Redis, участвовать в архитектурных решениях. Требуется 4+ года коммерческого опыта с обеими технологиями, знание Docker и Git. Предлагают работу в компании с сильной технической экспертизой и хорошими условиями.
Senior Backend Engineer
~2 006 588 ₸ оценка
Компанія Computools шукає Senior Backend Engineer для роботи над різноманітними проєктами для клієнтів по всьому світу. Потрібен досвід з Node.js, TypeScript, Python/Java/C#, а також знання SQL/NoSQL, Kubernetes та мікросервісної архітектури. Компанія пропонує віддалену роботу, гнучкий графік, курси англійської та можливості кар'єрного зростання.
Frontend-разработчик
~2 006 588 ₸ оценка
Ищем опытного фронтенд-разработчика для развития админ-интерфейса продукта StarVault — системы управления секретами и доступом. Нужно уверенное знание JavaScript и SPA, желательно опыт с Ember.js, а также умение работать с REST API и писать тесты. Предлагают работу в российской ИТ-компании, создающей продукты для программно-определяемых ЦОД.
Frontend-разработчик
~2 006 588 ₸ оценка
Frontend-разработчик для создания 2D-игры по шахматам и веб-интерфейсов. Нужен опыт от 4 лет, JavaScript/TypeScript, React, SCSS, WebSocket и оптимизация производительности. Работа удаленная, в стартап-среде с высокой динамикой.
Старший Full-Stack разработчик ПО
~2 006 588 ₸ оценка
Старший full-stack разработчик для AI-продуктов: создание интерфейсов и бэкенда для корпоративных клиентов. Нужен опыт 8+ лет, React, TypeScript, Node.js, Python и облачные технологии. Предлагают удаленную работу, гибкий график, медстраховку и обучение.