6.7 KiB
🌍 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
📚 Обновленная документация
Обновленные файлы:
- ✅
README.md- добавлена информация о проксировании в раздел "Поиск" - ✅
DEPLOYMENT.md- новый раздел "Доступность для пользователей из РФ" - ✅
PROJECT_STRUCTURE.md- обновлен список API эндпоинтов и функциональности - ✅
SETUP.md- добавлен эндпоинт проксирования - ✅
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']
}
✅ Преимущества
- Доступность из РФ - пользователи могут использовать приложение без VPN
- Безопасность - whitelist доменов защищает от злоупотреблений
- Производительность - кэширование снижает нагрузку на источники
- Прозрачность - работает автоматически, без изменений на клиенте
- Совместимость - сохраняет все существующие функции
🎯 Требования к деплою
Минимальные требования
- Сервер с доступом к e621.net и gelbooru.com
- Достаточная пропускная способность для трафика изображений
- Рекомендация: сервер вне РФ (Railway, Heroku, DigitalOcean)
Оценка трафика
- Preview: ~100-500 KB на изображение
- Полное изображение: 1-10 MB
- 1000 запросов поиска: ~500 MB - 5 GB
🧪 Тестирование
Ручное тестирование
- Запустите сервер
- Откройте раздел "Поиск"
- Выполните поиск
- Проверьте DevTools → Network
- 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