Парсер Profi.ru для мониторинга новых заказов
Кейс разработки парсера Profi.ru: сервис отслеживает новые заказы, фильтрует заявки, отправляет их в Telegram и позволяет пересоздать авторизованную сессию по SMS прямо через бота.
Автор: Александр Ардашев
Материал опубликован: · Обновлён:
Парсер Profi.ru с уведомлениями в Telegram
Сервис проверяет ленту с авторизацией, отбирает подходящие карточки и доставляет их владельцу аккаунта.
Что делает система
Открывает авторизованную ленту Profi.ru, находит новые карточки, применяет фильтры и отправляет подходящие заказы в Telegram со ссылкой на источник.
Какие данные обрабатывает
ID заказа, заголовок, описание, место, сроки, явно указанный бюджет и URL исходной карточки — только те поля, которые доступны в текущем сценарии.
Основное ограничение
Работа зависит от авторизации, вёрстки и правил Profi.ru. CAPTCHA не обходится автоматически: сервис останавливает обращения и сохраняет диагностику.
Пересоздание сессии Profi.ru через Telegram
Когда авторизация заканчивается, не нужно подключаться к серверу и вручную переносить cookies. Весь контролируемый сценарий повторного входа проходит в Telegram-боте.
1. Запуск восстановления
Пользователь отправляет /renew. Бот проверяет, можно ли начать новую попытку, и запускает отдельный браузер восстановления.
2. Запрос SMS
Chromium открывает форму входа Profi.ru, вводит настроенный номер и ждёт появления поля подтверждения.
3. Код в Telegram
Бот просит прислать ровно четыре цифры в течение пяти минут. Последний полученный код вставляется в актуальное поле формы.
4. Возврат к мониторингу
После проверки сессия сохраняется, браузер восстановления закрывается, а парсер автоматически продолжает поиск заказов.
Контекст проекта
Факты, которые можно подтвердить по проекту и открытому репозиторию.
Тип проекта
Серверный парсер Profi.ru на Python с Telegram-ботом для поиска и доставки подходящих заказов.
Источник данных
Авторизованная динамическая страница Profi.ru. Chromium работает в headless-режиме через Playwright.
Новая версия
Первичную и повторную сессию можно создать по SMS-коду прямо в Telegram, без ручного входа на сервере.
Роль разработчика
Архитектура, авторизация, парсинг, фильтры, хранение состояния, Telegram-управление, диагностика и серверный запуск.
Проблема, ограничения и роль в проекте
Почему понадобилось отдельное решение и какие рамки учитывались при разработке.
Ручной поиск заказов
Без автоматизации нужно регулярно открывать ленту, читать нерелевантные карточки и самостоятельно отслеживать новые публикации.
Истечение авторизации
Сохранённая сессия Profi.ru со временем перестаёт работать. Раньше для повторного входа требовалось отдельно запускать браузер и обновлять cookies.
Динамическая страница
Нужные карточки появляются после выполнения JavaScript, поэтому простой HTTP-запрос не даёт готового содержимого страницы.
Ограничения площадки
Работа зависит от текущей вёрстки, авторизации и правил Profi.ru. Сервис не решает CAPTCHA автоматически и соблюдает паузы при ограничениях.
Как устроено решение
Основные компоненты и путь данных без привязки к закрытым доступам и секретам окружения.
Сессия Profi.ru
Cookies и состояние браузера сохраняются между запусками. При завершении сессии бот запускает контролируемое восстановление.
Playwright и Chromium
Headless-браузер открывает авторизованную ленту, ждёт динамические элементы и передаёт готовый DOM парсеру.
Извлечение заказов
Парсер получает ID, заголовок, описание, место, сроки и ссылку на исходную карточку.
Фильтры
Заголовок и описание проверяются по целевым и исключающим условиям до отправки пользователю.
Хранилище
ID просмотренных карточек сохраняются, поэтому один заказ не приходит повторно после перезапуска.
Telegram-контур
Бот доставляет новые заказы, сообщает о сбоях и принимает команды диагностики и восстановления.
Технологии проекта
- Python
- Playwright
- Chromium
- Парсинг данных
- Фильтрация
- Telegram Bot API
- systemd
Ключевые функции
Функции перечислены по фактической реализации, а не как возможные будущие доработки.
Мониторинг ленты
Парсер регулярно проверяет новые заказы Profi.ru без постоянного ручного обновления страницы.
Фильтрация заявок
Правила учитывают тематику, намерение заказчика, исключения и явно указанный бюджет.
Защита от дублей
Обработанные ID сохраняются и не отправляются повторно после перезапуска сервиса.
Telegram-уведомления
В сообщении приходят описание, место, удобные даты, ссылка на заказ и его ID.
Восстановление по SMS
Команда /renew запускает вход, а четырёхзначный код передаётся боту обычным сообщением.
Автоматическое продолжение
После успешного подтверждения новая сессия сохраняется, и парсер сам возвращается к мониторингу.
Диагностика
Команды показывают состояние парсера, сессии, Chromium, Telegram, heartbeat и доступность сайта.
Управление ошибками
Уведомления о сбоях можно проверить, временно отключить и снова включить командами бота.
Безопасные паузы
При CAPTCHA или ограничении площадки обращения останавливаются вместо агрессивных повторных попыток.
Демонстрация и исходный код
Скриншоты показывают уведомление о найденном заказе, фактический сценарий повторной авторизации и меню управления. Исходный код парсинга, восстановления сессии, диагностики и Telegram-команд опубликован в репозитории.



Результат и измерения
Отделяю подтверждённый функциональный результат от показателей, которые не передавались после запуска.
До автоматизации
Пользователь вручную обновлял ленту, просматривал карточки и отдельно восстанавливал авторизацию при завершении сессии.
После запуска
Система находит новые ID, применяет фильтры и отправляет в Telegram только подходящие заказы со ссылкой на Profi.ru.
После обновления
Сессию можно пересоздать из того же Telegram-чата: получить SMS, отправить четыре цифры и дождаться автоматического возобновления.
Проверяемый результат
Функции подтверждаются открытым кодом и скриншотами. Публичная статистика времени реакции и числа полученных заказов не заявляется.
Что изменилось бы в следующей версии
Выводы по архитектуре, эксплуатации и дальнейшему развитию проекта.
Несколько профилей фильтрации
Добавить отдельные наборы правил для разных специализаций и возможность переключать их командами Telegram-бота.
История в базе данных
Хранить найденные заказы, результаты фильтрации и события сессии в базе для поиска и аналитики.
Панель наблюдения
Показывать успешные проверки, ошибки, время последнего цикла и состояние авторизации в отдельном веб-интерфейсе.
Команды парсера Profi.ru в Telegram
Команды собраны в меню бота, поэтому состояние сервиса и основные операции доступны без SSH-подключения к серверу.
Состояние и диагностика
/status показывает состояние парсера и сессии, /health запускает полную диагностику, /version сообщает версию проекта.
Сообщения об ошибках
/errors показывает состояние уведомлений, /errors_off отключает их, а /errors_on включает снова.
Управление сессией
/renew запускает получение новой сессии по SMS, /cancel отменяет восстановление, /resume продолжает работу после безопасной паузы.
Справка
/help выводит актуальный список команд и кратко объясняет назначение каждой из них.
Частые вопросы
Короткие ответы на вопросы, которые обычно появляются перед началом разработки.
Что делает парсер Profi.ru?
Он открывает авторизованную ленту заказов, находит новые карточки, отбирает подходящие заявки по заданным условиям и отправляет их в Telegram со ссылкой на оригинал.
Как парсер Profi.ru отбирает нужные заказы?
Фильтр проверяет заголовок и описание: ищет целевые услуги и намерение заказать работу, учитывает исключающие тематики и явно указанный бюджет. Правила можно адаптировать под другую специализацию.
Что происходит, когда сессия Profi.ru заканчивается?
Бот сообщает о проблеме. Команда /renew запускает повторный вход, после чего пользователь отправляет четырёхзначный SMS-код в Telegram. Успешная сессия сохраняется, и мониторинг продолжается автоматически.
Сохраняется ли SMS-код авторизации?
Нет. Код используется только для текущей попытки восстановления, не записывается в рабочие файлы и принимается ограниченное время после запроса бота.
Парсер обходит CAPTCHA и ограничения Profi.ru?
Нет. При CAPTCHA или явном ограничении сервис останавливает обращения, сохраняет диагностику и ждёт безопасного продолжения. Использование должно учитывать правила площадки и разрешённый сценарий работы с аккаунтом.
Можно ли изменить фильтры и формат уведомлений?
Да. Можно настроить целевые и исключающие условия, минимальный бюджет, интервал проверок и состав сообщения, а результаты при необходимости передавать не только в Telegram, но и в CRM или базу данных.
Что может понадобиться вместе с этой задачей
Дополнительные направления, которые часто используются вместе с этой услугой.
Мониторинг цен конкурентов
Другая задача регулярного сбора: цены, наличие и история товаров после проверки источников.
Доработка Telegram-бота
Диагностика, новые команды и восстановление серверного запуска существующего проекта.
Разработка парсеров сайтов
Если нужен парсер Profi.ru, каталога, площадки или другого согласованного источника данных.
Разработка Telegram-ботов
Если результаты парсинга нужно отправлять в Telegram-бота или уведомлять менеджеров.
CRM и API-интеграции
Если найденные данные нужно передавать в CRM, таблицы, базу данных или внутренний сервис.
Создать заказ
Свяжитесь удобным способом и коротко опишите задачу. Даже если пока нет точного ТЗ, можно начать с идеи и желаемого результата.
Нужен похожий парсер?
Опишите источник, критерии подходящих заявок и формат уведомлений. Я проверю техническую реализуемость, ограничения площадки и предложу безопасную архитектуру парсинга.