187 lines
6.7 KiB
Markdown
187 lines
6.7 KiB
Markdown
# 🌍 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. Поддерживаемые домены
|
||
```javascript
|
||
[
|
||
'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:
|
||
```javascript
|
||
const encodedUrl = Buffer.from(originalUrl).toString('base64');
|
||
// https://static1.e621.net/image.jpg → aHR0cHM6Ly9zdGF0aWMxLmU2MjEubmV0L2ltYWdlLmpwZw==
|
||
```
|
||
|
||
### Пример прокси-URL
|
||
```
|
||
/api/search/proxy/aHR0cHM6Ly9zdGF0aWMxLmU2MjEubmV0L2RhdGEvc2FtcGxlLzEyLzM0LzEyMzQ1Njc4OTBhYmNkZWYuanBn
|
||
```
|
||
|
||
### HTTP заголовки
|
||
```javascript
|
||
{
|
||
'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/`
|
||
|
||
### Автоматические тесты
|
||
```bash
|
||
# Тест проксирования (будет добавлено в будущем)
|
||
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](PROXY_INFO.md)
|
||
|