This commit is contained in:
salvacybersec
2025-11-13 05:43:02 +03:00
parent f9517549f1
commit 9e3b792e0c
3 changed files with 120 additions and 17 deletions

View File

@@ -9,6 +9,9 @@ YouTube video transkriptlerini otomatik olarak çıkarıp, tam metin içeren RSS
-**API Key Authentication** - Tüm endpoint'ler API key gerektirir
-**Güvenlik Önlemleri** - SQL injection, XSS, rate limiting koruması
-**Transcript Cache** - 3 günlük cache ile YouTube IP blocking önleme
-**FlareSolverr Desteği** - Bot korumasını aşmak için FlareSolverr entegrasyonu
-**Gerçek Tarayıcı Header'ları** - User-Agent rotasyonu ve tam tarayıcı header seti
-**Detaylı Loglama** - Timestamp'li, kategorize edilmiş log sistemi
- ✅ RSS-Bridge entegrasyonu (100+ video desteği)
- ✅ Async rate limiting (AIOLimiter)
- ✅ SpaCy ile Sentence Boundary Detection
@@ -60,7 +63,7 @@ curl -H "X-API-Key: demo_key_12345" \
# Channel Handle ile (API key query parametresi)
curl "http://localhost:5000/?channel=@tavakfi&format=Atom&api_key=demo_key_12345"
# Channel URL ile (max_items: her istekte işlenecek transcript sayısı, default: 10, max: 100, 20'şer batch'ler)
# Channel URL ile (max_items: her istekte işlenecek transcript sayısı, default: 10, max: 100, 5'şer batch'ler)
curl -H "X-API-Key: demo_key_12345" \
"http://localhost:5000/?channel_url=https://www.youtube.com/@tavakfi&format=Atom&max_items=50"
```
@@ -109,6 +112,10 @@ rss_bridge:
base_url: "https://rss-bridge.org/bridge01"
format: "Atom"
max_items: 100 # RSS-Bridge'den çekilecek video sayısı (web server'da max_items parametresi farklı)
# FlareSolverr ayarları (YouTube IP blocking önleme için)
flaresolverr:
url: "http://192.168.1.27:8191/v1" # FlareSolverr API URL'i (devre dışı için null)
```
### Güvenlik Yapılandırması
@@ -146,22 +153,66 @@ Her API isteğinde kaç video transcript'inin işleneceğini kontrol eder:
- **Varsayılan**: 10 transcript
- **Maksimum**: 100 transcript
- **Kullanım**: `?max_items=50` query parametresi ile belirtilir
- **Batch İşleme**: 20'şer batch'ler halinde işlenir (YouTube IP blocking önleme için)
- **Batch İşleme**: 5'şer batch'ler halinde işlenir (YouTube IP blocking önleme için)
**Önemli Notlar:**
- `max_items` parametresi **her istekte işlenecek transcript sayısını** belirler
- RSS-Bridge'den daha fazla video çekilir (max_items × 2, minimum 50) çünkü bazı videolar transcript'siz olabilir
- **Batch İşleme**: YouTube IP blocking'i önlemek için 20'şer batch'ler halinde işlenir
- **Batch İşleme**: YouTube IP blocking'i önlemek için 5'şer batch'ler halinde işlenir
- **Batch'ler Arası Bekleme**: 60-90 saniye random bekleme (human-like behavior)
- **Veritabanı Kaydı**: Her batch işlendikten sonra hemen veritabanına kaydedilir, böylece sonraki sorgularda görülebilir
- İlk isteklerde daha az transcript görebilirsiniz; sonraki isteklerde cache'den daha fazla transcript döner
**Örnek:**
```bash
# 50 transcript işle (20+20+10 batch'ler halinde)
# 50 transcript işle (5+5+5+5+5+5+5+5+5+5 batch'ler halinde)
curl -H "X-API-Key: demo_key_12345" \
"http://localhost:5000/?channel_id=UC9h8BDcXwkhZtnqoQJ7PggA&max_items=50&format=Atom"
```
### FlareSolverr Yapılandırması
FlareSolverr, YouTube'un bot korumasını aşmak için gerçek tarayıcı kullanır:
```yaml
# config/config.yaml
flaresolverr:
url: "http://192.168.1.27:8191/v1" # FlareSolverr API URL'i
```
veya environment variable:
```bash
export FLARESOLVERR_URL=http://192.168.1.27:8191/v1
```
**FlareSolverr Avantajları:**
- Gerçek tarayıcı kullanımı (headless browser)
- Bot algılamasını aşma
- Cloudflare ve DDoS-GUARD korumasını bypass etme
- Otomatik fallback: FlareSolverr erişilemezse normal istek yapılır
### Gerçek Tarayıcı Header'ları
Sistem, gerçek tarayıcı gibi görünmek için:
- **User-Agent Rotasyonu**: 7 farklı tarayıcı User-Agent'ı (Chrome, Firefox, Safari, Edge)
- **Tam Header Seti**: Accept, Accept-Language, Sec-Fetch-*, Referer, vb.
- **Her İstekte Random**: Her istekte farklı User-Agent seçilir
### Detaylı Loglama
Sistem, tüm işlemleri kategorize edilmiş loglarla takip eder:
- **`[RATE_LIMIT]`**: Rate limiting ve bekleme süreleri
- **`[TRANSCRIPT]`**: Transcript çıkarım işlemleri
- **`[PROCESS]`**: Genel işlem akışı
- **`[BATCH]`**: Batch işleme bilgileri
- **`[VIDEO]`**: Video seviyesi işlemler
- **`[CACHE]`**: Cache kontrolleri
- **`[FLARESOLVERR]`**: FlareSolverr istekleri
- **`[HEADERS]`**: Header yönetimi
Log formatı: `YYYY-MM-DD HH:MM:SS | LEVEL | MODULE | MESSAGE`
## Proje Yapısı
```