# 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. Не отправляйте его другим людям и не кладите в публичные архивы. Пример безопасной структуры: ```json { "league": "Runes of Aldur", "itemName": "The Desperate Alliance", "itemType": "Vase Relic", "maxPrice": 5, "priceCurrency": "divine", "maxResults": 500, "poeSessionId": "", "poeToken": "" } ``` Переменные окружения `POESESSID` и `POETOKEN` имеют приоритет над значениями из файла. ## Запуск ```powershell node scanner.mjs node scanner.mjs --live node scanner.mjs --serve ``` Web UI будет доступен только на этом компьютере: ```text http://127.0.0.1:3999 ``` Также доступны: - `full-scan.bat` — разовый поиск. - `live.bat` — консольный Live. - `launch.vbs` — скрытый запуск Web UI. - `run.bat` — меню режимов. ## Проверка ```powershell 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` больше не создаётся.