Как совершить покупку лота на торговой площадке без API
Если на сайте нет API-ключа и отсутствует документация, это не значит, что автоматизировать покупку невозможно. Многие торговые площадки позволяют взаимодействовать с ними через HTTP-запросы, имитируя действия реального пользователя. В этой статье разберём, как написать скрипт для покупки лота, используя ручной анализ трафика и эмуляцию браузера.
Анализ сетевых запросов браузера
Первый шаг - понять, какие данные отправляет сайт при оформлении заказа. Для этого откройте Инструменты разработчика (F12) и перейдите на вкладку Network (Сеть). Выполните покупку вручную до момента подтверждения, но не завершайте её. В списке запросов найдите POST-запросы, которые содержат ID лота, количество и данные пользователя. Запишите:
- URL эндпоинта (например,
/api/order/createили/buy) - Тело запроса (формат JSON или Form Data)
- Заголовки (особенно Cookie и User-Agent)
Эти данные понадобятся для составления корректного запроса в скрипте.
Эмуляция браузера через скрипт
Без официального API можно использовать библиотеки, которые симулируют работу браузера. Например, Playwright или Puppeteer для Node.js, либо Selenium для Python. Они позволяют открыть страницу лота, авторизоваться (если требуется), нажать кнопку «Купить» и подтвердить заказ. Такой подход обходит защиту от CSRF и проверки куки, которые часто блокируют прямые HTTP-запросы.
Пример на Python с Playwright:
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(headless=False)
page = browser.new_page()
page.goto('https://example.com/lot/123')
page.click('button#buy')
page.fill('input#quantity', '1')
page.click('button#confirm')
browser.close()Замените селекторы на актуальные для вашей площадки. Если сайт использует капчу, потребуется интеграция с сервисом распознавания (например, 2Captcha).
Прямой HTTP-запрос с имитацией куки
Если эмуляция браузера кажется избыточной, можно отправить прямой POST-запрос, предварительно скопировав Cookie и CSRF-токен из активной сессии. В Python это делается через библиотеку requests:
import requests
url = 'https://example.com/buy'
cookies = {'sessionid': 'ваш_токен'}
data = {'lot_id': '123', 'quantity': 1}
headers = {'User-Agent': 'Mozilla/5.0...', 'X-CSRFToken': 'токен'}
response = requests.post(url, cookies=cookies, data=data, headers=headers)
print(response.status_code)Важно: сессионные куки и токены обычно живут ограниченное время. Для автоматизации придётся либо продлевать сессию, либо использовать эмуляцию браузера.
Парсинг страницы и поиск скрытых полей
Иногда сайт передаёт важные параметры (например, _token или authenticity_token) в скрытых input-полях формы. Без них запрос будет отклонён. Чтобы получить эти данные, сначала загрузите HTML-страницу лота, распарсьте её (например, через BeautifulSoup в Python) и извлеките значения атрибутов value у нужных полей. Затем включите их в тело POST-запроса.
Заключение
Совершить покупку лота без API реально - используйте инструменты разработчика для изучения запросов, эмулируйте браузер через Playwright или Selenium, либо отправляйте прямые запросы с правильными куками и токенами. Выберите метод в зависимости от сложности защиты сайта. Если площадка использует капчу или динамические токены, предпочтительнее эмуляция браузера.