Skip to content

REST API сервис для парсинга маркетплейсов с автоматизацией браузера. Проект задумывался как многопользовательский публичный сервис.

Notifications You must be signed in to change notification settings

nlkli/ScraperApiService

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ScraperApiService

Моя первая реализация REST API сервиса для парсинга маркетплейсов с автоматизацией браузера на Rust. Проект задумывался как многопользовательский публичный сервис для парсинга.

Дата публикации: 1/16/25

Документация API


О проекте

RustScraper API - это мощный инструмент для парсинга данных о товарах с популярных маркетплейсов. API разработано на языке Rust, что обеспечивает высокую производительность и надежность работы.


Основные возможности

  • Поддержка крупнейших маркетплейсов:
  • Гибкая система обхода блокировок через прокси-серверы
  • Поддержка пользовательских cookies для сохранения настроек сессии
  • WebSocket подключение для отслеживания статуса парсинга в реальном времени
  • Простой и понятный REST API интерфейс
  • Детальная валидация входящих данных
  • Система очередей для распределения нагрузки

Начало работы

1. Получение тестового токена

Для начала работы с API необходимо получить тестовый токен через метод /test-token. Тестовый токен предоставляется автоматически для уникальных IP-адресов и имеет ограниченный срок действия.

2. Структура заказа

Заказ на парсинг состоит из трех основных компонентов:

  • Список товаров (products)
  • Пул прокси-серверов (proxyPool)
  • Пользовательские cookies (cookies)

Форматы ссылок на товары

Поддерживается два формата указания товаров:

  1. Короткий формат: маркет/id
  2. Полный URL товара с маркетплейса

3. Отправка заказа и получение результатов

Процесс парсинга состоит из следующих шагов:

  1. Валидация заказа через метод /valid-order
  2. Отправка заказа методом /order
  3. Получение order_hash для отслеживания статуса
  4. Мониторинг выполнения через REST API или WebSocket

Особенности работы

Система защиты от блокировок

API предоставляет два механизма защиты от блокировок:

  1. Прокси-пул (ProxyPool):

    • Позволяет распределять запросы через разные IP-адреса
    • Поддерживает формат: USERNAME:PASSWORD@HOST:PORT
    • Возможность указания нескольких прокси-серверов
  2. Пользовательские Cookies:

    • Сохранение настроек авторизации
    • Поддержка геолокационных настроек
    • Сохранение пунктов выдачи заказов
    • Персонализированные настройки отображения цен

Ограничения и лимиты

Каждый токен имеет следующие ограничения:

  • Лимит на количество товаров в заказе
  • Лимит на количество одновременных обработок
  • Ограничение времени жизни токена (TTL)
  • Лимит на количество WebSocket подключений

Мониторинг выполнения

REST API мониторинг

Получение статуса выполнения через периодические запросы к методу /task/{order_hash}

WebSocket мониторинг (рекомендуется)

Установка постоянного соединения через /task-ws/{order_hash} для получения обновлений в реальном времени


Обработка ошибок

API использует унифицированную систему кодов ошибок. Каждая ошибка содержит:

  • Текстовое описание (error)
  • Числовой код (code)
  • Информативное сообщение (message)

Подробное описание всех возможных ошибок представлено в таблице ApiError.


ApiError

Название Описание Код HTTP код
UnknownError Неизвестная ошибка сервера 0 500
MissingAuthorizationHeader Отсутствует заголовок авторизации 102 400
MalformedAuthorizationHeader Неверный формат заголовка авторизации. Ожидается формат 'Bearer ' 103 401
InvalidAccessToken Предоставлен недействительный токен доступа 104 401
AccessTokenExpired Срок действия токена доступа истек 105 401
MissingUrlQueryParameter Отсутствует обязательный URL-параметр запроса 200 400
InvalidUrlQueryParameter Недопустимое значение URL-параметра запроса 201 400
InvalidOrderParameter Недопустимое значение параметра заказа 202 400
InvalidOrderFormat Не удалось десериализовать тело запроса в объект заказа 203 400
EmptyRequestBody Тело запроса пусто. Ожидается определенная структура 204 400
EmptyOrder Отправленный заказ пуст 205 400
QueueOverflow Очередь обработчика заполнена. Достигнуто максимальное количество задач 300 409
ProductLimitExceeded Заказ превышает максимальный лимит продуктов 301 409
ConcurrencyLimitExceeded Токен превысил лимит одновременной обработки 302 409
DuplicateTask Задача с указанным order_hash уже существует 303 409
WebSocketLimitExceeded Невозможно установить новое WebSocket-соединение,
так как сервер достиг максимального лимита одновременных подключений
304 409
AccessRestricted Доступ к методу ограничен 305 409
TokenDoesNotExist Токен не существует 400 404
TaskNotFound Задача с указанным order_hash не существует 401 404
PathNotFound Запрошенный путь не найден 404 404
TaskSendFailure Не удалось отправить задачу обработчику 500 500
ReqwestSessionError Ошибка сессии запроса 501 500
DatabaseError Сбой транзакции базы данных 502 500
SerializationError Не удалось сериализовать объект 503 500

Документация к методам /swagger-ui

https://github.com/nlkli/ScraperApiService/blob/main/src/api/doc.rs

About

REST API сервис для парсинга маркетплейсов с автоматизацией браузера. Проект задумывался как многопользовательский публичный сервис.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published