nakama/CHANGELOG_PROXY.md

6.7 KiB
Raw Blame History

🌍 Changelog: Проксирование для доступа из РФ

Дата: 3 ноября 2025
Версия: 1.1.0
Автор: NakamaSpace Development Team


📝 Что добавлено

Основные изменения

1. Проксирование изображений

Добавлен новый эндпоинт /api/search/proxy/:encodedUrl для проксирования изображений с e621 и gelbooru через ваш сервер.

Файл: backend/routes/search.js

Изменения:

  • Функция createProxyUrl(originalUrl) - конвертация URL в прокси-URL
  • Эндпоинт GET /api/search/proxy/:encodedUrl - стриминг изображений
  • Whitelist разрешенных доменов с проверкой безопасности
  • HTTP кэширование на 24 часа
  • Timeout 30 секунд для загрузки
  • Автоматическая замена URL в ответах API

2. Поддерживаемые домены

[
  'e621.net',
  'static1.e621.net',
  'gelbooru.com',
  'img3.gelbooru.com',
  'img2.gelbooru.com',
  'img1.gelbooru.com',
  'simg3.gelbooru.com',
  'simg4.gelbooru.com'
]

3. Обновленные эндпоинты

  • /api/search/furry - теперь возвращает проксированные URL
  • /api/search/anime - теперь возвращает проксированные URL

📚 Обновленная документация

Обновленные файлы:

  1. README.md - добавлена информация о проксировании в раздел "Поиск"
  2. DEPLOYMENT.md - новый раздел "Доступность для пользователей из РФ"
  3. PROJECT_STRUCTURE.md - обновлен список API эндпоинтов и функциональности
  4. SETUP.md - добавлен эндпоинт проксирования
  5. PROXY_INFO.md (новый) - подробная документация о проксировании

🔧 Технические детали

Кодирование URL

URL изображений кодируются в base64:

const encodedUrl = Buffer.from(originalUrl).toString('base64');
// https://static1.e621.net/image.jpg → aHR0cHM6Ly9zdGF0aWMxLmU2MjEubmV0L2ltYWdlLmpwZw==

Пример прокси-URL

/api/search/proxy/aHR0cHM6Ly9zdGF0aWMxLmU2MjEubmV0L2RhdGEvc2FtcGxlLzEyLzM0LzEyMzQ1Njc4OTBhYmNkZWYuanBn

HTTP заголовки

{
  'User-Agent': 'NakamaSpace/1.0',
  'Referer': urlObj.origin,
  'Content-Type': response.headers['content-type'],
  'Cache-Control': 'public, max-age=86400',
  'Content-Length': response.headers['content-length']
}

Преимущества

  1. Доступность из РФ - пользователи могут использовать приложение без VPN
  2. Безопасность - whitelist доменов защищает от злоупотреблений
  3. Производительность - кэширование снижает нагрузку на источники
  4. Прозрачность - работает автоматически, без изменений на клиенте
  5. Совместимость - сохраняет все существующие функции

🎯 Требования к деплою

Минимальные требования

  • Сервер с доступом к e621.net и gelbooru.com
  • Достаточная пропускная способность для трафика изображений
  • Рекомендация: сервер вне РФ (Railway, Heroku, DigitalOcean)

Оценка трафика

  • Preview: ~100-500 KB на изображение
  • Полное изображение: 1-10 MB
  • 1000 запросов поиска: ~500 MB - 5 GB

🧪 Тестирование

Ручное тестирование

  1. Запустите сервер
  2. Откройте раздел "Поиск"
  3. Выполните поиск
  4. Проверьте DevTools → Network
  5. URL изображений должны начинаться с /api/search/proxy/

Автоматические тесты

# Тест проксирования (будет добавлено в будущем)
npm run test:proxy

📊 Мониторинг

Логи ошибок

Все ошибки проксирования логируются в консоль:

Ошибка проксирования изображения: [error message]

Метрики для отслеживания

  • Количество проксированных запросов
  • Средняя скорость загрузки
  • Процент ошибок (403, 500, timeout)
  • Объем трафика

🔄 Обратная совместимость

Полная обратная совместимость
Не требуется изменений на клиенте
Не требуется миграция данных
Существующие API эндпоинты работают как прежде


🚀 Следующие шаги

Рекомендации по улучшению

  • Добавить Redis кэш для проксированных изображений
  • Метрики и мониторинг трафика
  • CDN перед прокси для оптимизации
  • Автоматические тесты для проксирования
  • Сжатие изображений на лету

🙋 FAQ

Q: Работает ли это без изменений на клиенте?
A: Да, всё работает автоматически.

Q: Можно ли отключить проксирование?
A: Да, удалите вызовы createProxyUrl() в обработчиках API.

Q: Влияет ли это на скорость?
A: Минимально. Первая загрузка может быть медленнее, но кэширование компенсирует это.

Q: Безопасно ли это?
A: Да, используется whitelist доменов и проверка источников.


👏 Благодарности

Спасибо сообществу NakamaSpace за фидбек и запросы на эту функцию!


Готово к использованию! 🎉

Для подробной информации см. PROXY_INFO.md