Go to file
2026-07-29 21:03:59 +03:00
.gitignore Initial PoE2 scanner 2026-07-29 21:03:59 +03:00
AccessibilityClickHelper.cs Initial PoE2 scanner 2026-07-29 21:03:59 +03:00
AccessibilityClickHelper.exe Initial PoE2 scanner 2026-07-29 21:03:59 +03:00
AGENTS.md Initial PoE2 scanner 2026-07-29 21:03:59 +03:00
build-accessibility-helper.bat Initial PoE2 scanner 2026-07-29 21:03:59 +03:00
config.example.json Initial PoE2 scanner 2026-07-29 21:03:59 +03:00
full-scan.bat Initial PoE2 scanner 2026-07-29 21:03:59 +03:00
launch.vbs Initial PoE2 scanner 2026-07-29 21:03:59 +03:00
live.bat Initial PoE2 scanner 2026-07-29 21:03:59 +03:00
package-lock.json Initial PoE2 scanner 2026-07-29 21:03:59 +03:00
package.json Initial PoE2 scanner 2026-07-29 21:03:59 +03:00
README.md Initial PoE2 scanner 2026-07-29 21:03:59 +03:00
run-web.bat Initial PoE2 scanner 2026-07-29 21:03:59 +03:00
run.bat Initial PoE2 scanner 2026-07-29 21:03:59 +03:00
scanner.mjs Initial PoE2 scanner 2026-07-29 21:03:59 +03:00
scanner.test.mjs Initial PoE2 scanner 2026-07-29 21:03:59 +03:00
sound.mp3 Initial PoE2 scanner 2026-07-29 21:03:59 +03:00

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 больше не создаётся.