Steam License Pro

Анализ вашей библиотеки лицензий и подписок Steam

Как выгрузить лицензии из Steam

  1. Откройте Лицензии и активации ключей в браузере.
  2. Нажмите F12 (или ПКМ -> Исследовать элемент) и откройте вкладку Console.
  3. Вставьте код ниже и нажмите Enter. Он автоматически соберет все лицензии на странице.
  4. Перетащите скачанный файл steam_licenses.json в окно ниже.
(async () => { console.log("⏳ Запуск скрипта. Начинаем фоновый сбор лицензий..."); // Функция паузы для защиты от блокировки за спам запросами const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms)); // Функция парсинга с вашей проверенной структурой const extractDataFromDoc = (doc) => { // Находим все строки таблицы с атрибутом data-panel const rows = doc.querySelectorAll('tr[data-panel]'); const licenses = []; rows.forEach(row => { const dateEl = row.querySelector('.license_date_col'); const methodEl = row.querySelector('.license_acquisition_col'); const tds = row.querySelectorAll('td'); // Проверяем, что нужные элементы существуют и колонок не меньше трех if (dateEl && methodEl && tds.length >= 3) { const date = dateEl.innerText.trim(); // Название всегда во второй колонке. // replace(/\s+/g, ' ') убирает гигантские пробелы, которые Steam иногда ставит в коде const name = tds[1].innerText.trim().replace(/\s+/g, ' '); const method = methodEl.innerText.trim(); licenses.push({ date: date, name: name, method: method }); } }); return licenses; }; let allLicenses = []; let pageCount = 1; // 1. Собираем данные с первой (текущей) страницы console.log(`📄 Парсинг страницы ${pageCount}...`); allLicenses.push(...extractDataFromDoc(document)); // 2. Ищем ссылку на следующую страницу let nextButton = document.querySelector('.license_paginator_next'); // 3. Цикл фоновой загрузки следующих страниц while (nextButton && nextButton.href) { pageCount++; console.log(`➡️ Фоновая загрузка страницы ${pageCount}...`); try { // Скачиваем следующую страницу в фоне const response = await fetch(nextButton.href); if (!response.ok) { console.error(`❌ Ошибка сети при загрузке страницы ${pageCount}:`, response.statusText); break; } // Превращаем текст ответа в DOM-объект const html = await response.text(); const parser = new DOMParser(); const doc = parser.parseFromString(html, "text/html"); // Собираем данные и добавляем в общий массив const newData = extractDataFromDoc(doc); allLicenses.push(...newData); // Ищем кнопку на новой странице nextButton = doc.querySelector('.license_paginator_next'); // Ждем 1 секунду, чтобы Steam не выдал ошибку 429 await sleep(1000); } catch (error) { console.error("❌ Произошла ошибка при загрузке или парсинге:", error); break; } } // Если ничего не найдено if (allLicenses.length === 0) { console.warn("⚠️ Лицензии не найдены! Убедитесь, что вы находитесь на странице https://store.steampowered.com/account/licenses/"); return; } console.log(`✅ Все страницы загружены. Формируем файл...`); // 4. Формирование и скачивание файла с отступами "2", как в вашем старом коде const jsonString = JSON.stringify(allLicenses, null, 2); const blob = new Blob([jsonString], { type: "application/json" }); const url = URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = "steam_licenses.json"; document.body.appendChild(a); a.click(); document.body.removeChild(a); URL.revokeObjectURL(url); console.log(`🎉 Сбор завершен! Найдено лицензий: ${allLicenses.length}. Скачивание файла началось...`); return allLicenses; })();
📂

Перетащите JSON файл лицензий сюда

или кликните для выбора файла