Skip to content

Home RU

Алексей . edited this page Jul 26, 2026 · 2 revisions

LogsParser logo

LogsParser

English Русский

LogsParser — библиотека на .NET для интеграции с arizonarp.logsparser.info, просмотрщиком логов игровых серверов Arizona RP. Она авторизуется, запрашивает страницы и превращает их HTML в типизированные модели.

Эта вики — справочник по API. Краткий обзор находится в README репозитория.

Пакет LogsParser на NuGet
Версия 1.2.7
Целевые платформы net7.0, net8.0, net9.0, net10.0
Зависимости Microsoft.Extensions.DependencyInjection, Microsoft.Extensions.Logging.Abstractions
Лицензия CC BY-NC 4.0 — только некоммерческое использование

Что она умеет

  • разбирает логи, активность администрации и top-операции в неизменяемые записи
  • авторизуется по логину, паролю и TOTP-подтверждению — реактивно, по мере необходимости
  • решает React anti-DDoS challenge и повторяет исходный запрос
  • читает текущий аккаунт и каталог фильтров с параметрами dynamic[n] прямо из layout страницы
  • отслеживает заголовки rate limit и пережидает ответы 429 вместо падения
  • полностью оставляет хранение cookies на стороне вызывающего кода
  • работает как самостоятельно, так и через Microsoft.Extensions.DependencyInjection

Установка

dotnet add package LogsParser

Пример на тридцать секунд

using LogsParser;
using LogsParser.Abstractions;
using LogsParser.Models;
using LogsParser.Net;

using var dataSource = new LogsParserHttpDataSource(
    credentials: new LogsParserCredentials("my_login", "my_password", "BASE32SECRET"),
    cookieStorage: new MemoryCookieStorage());

var client = new LogsParserClient(dataSource);

var page = await client.GetLogsAsync(new LogsQuery(
    ServerId: 201,
    Filters: ["warn", "mute"],
    PeriodFrom: DateTime.UtcNow.AddDays(-1),
    PeriodTo: DateTime.UtcNow));

foreach (var entry in page.Entries)
{
    Console.WriteLine($"{entry.Timestamp:u} {entry.Text}");
}

Отдельного LoginAsync вызывать не нужно: транспорт реагирует на редиректы сервиса, поэтому первый же запрос данных сам выполняет вход и подтверждение второго фактора.

Содержание

Страница О чём она
Начало работы Установка, пространства имён, первый запрос вручную и через DI
LogsParserClient High-level фасад: все публичные методы, параметры и возвращаемые типы
Запросы и построитель URI Модели запросов, LogsRequestUriBuilder, правила валидации и нормализации
Модели Полный справочник по всем публичным record-типам
Парсеры LogsHtmlParser и LogsFilterCatalogParser без HTTP
Транспорт и авторизация ILogsParserDataSource, автомат авторизации, retry, rate limit, anti-DDoS challenge
Хранение cookies Контракт ICookieStorage и сохранение сессии
Внедрение зависимостей AddLogsParser, опции регистрации, времена жизни сервисов
Логирование LogsParserLogging, категории и уровни
Исключения Иерархия исключений и их обработка

Про названия

Репозиторий, решение и папка проекта называются LogTools. Сборка, NuGet-пакет и все пространства имён называются LogsParser. Имена папок внутри репозитория тоже намеренно не совпадают с пространствами имён — пространство имён всегда берётся из объявления namespace, а не из пути к файлу.

Clone this wiki locally