scanner/README.md
2026-07-29 21:03:59 +03:00

3.0 KiB
Raw Permalink Blame History

PoE 2 Scanner

Локальный сканер торговли Path of Exile 2. Поддерживает разовый поиск, консольный Live и Web UI с SSE-уведомлениями.

Настройка

  1. Скопируйте config.example.json в config.json.
  2. Укажите лигу, предмет и максимальную цену.
  3. Добавьте свежие POESESSID и POETOKEN в локальный config.json либо передайте их через переменные окружения.

config.json содержит секреты и исключён из Git. Не отправляйте его другим людям и не кладите в публичные архивы.

Пример безопасной структуры:

{
  "league": "Runes of Aldur",
  "itemName": "The Desperate Alliance",
  "itemType": "Vase Relic",
  "maxPrice": 5,
  "priceCurrency": "divine",
  "maxResults": 500,
  "poeSessionId": "",
  "poeToken": ""
}

Переменные окружения POESESSID и POETOKEN имеют приоритет над значениями из файла.

Запуск

node scanner.mjs
node scanner.mjs --live
node scanner.mjs --serve

Web UI будет доступен только на этом компьютере:

http://127.0.0.1:3999

Также доступны:

  • full-scan.bat — разовый поиск.
  • live.bat — консольный Live.
  • launch.vbs — скрытый запуск Web UI.
  • run.bat — меню режимов.

Проверка

npm test
npm run check

Как устроен Live

  1. Сканер создаёт поисковый запрос и запоминает уже существующие объявления.
  2. Подключается к PoE Live WebSocket.
  3. Новые ID последовательно загружаются через PoE API.
  4. При разрыве WebSocket включается polling раз в 30 секунд.
  5. При устаревшем search ID сканер получает новый и переподключается.

Все HTTP-запросы к PoE идут через одну очередь с минимальным интервалом 1,2 секунды. При HTTP 429 сканер читает указанное PoE время ожидания.

Локальный API

Сервер слушает только 127.0.0.1. Изменяющие состояние POST-запросы защищены случайным токеном, который получает Web UI.

  • GET /api/config
  • POST /api/search
  • POST /api/live/start
  • POST /api/live/stop
  • POST /api/secure
  • GET /api/live/stream

Файлы состояния

  • config.json — локальные настройки и авторизация.
  • seen.json — кеш просмотренных объявлений.
  • sound.mp3 — звук уведомления.

startup.json больше не создаётся.